← 返回文章列表

一文了解RAG

從檢索與生成的基本流程出發,整理 RAG 的架構、多模態擴充套件與實踐中的問題。

go

RAG(Retrieval Augmented Generation):檢索增強生成

0 引言

寫在前面,作者也是初學者,抱著學習的心態寫了這篇文章,如果有問題,歡迎大家郵箱聯絡進行批評指正。

本篇將系統介紹RAG的基本概念、核心技術原理、發展背景和典型架構,隨後深入探討多模態RAG(如文字-影象、文字-影片的檢索增強生成)和Graph RAG(基於圖結構資料的檢索增強生成)等前沿方向,最後分析當前面臨的挑戰與未來發展趨勢。

1 基本概念

RAG(Retrieval Augmented Generation),中文名稱是檢索增強生成,通俗意義上來講就是透過檢索提升大模型生成效果的技術,旨在提升生成式AI的準確性與可信度。它實現了大語言模型與外部知識庫的結合,是緩解幻覺與提升可追溯性的關鍵路線之一。該概念最初由Facebook AI研究團隊在2020年提出,並發表了命名RAG的開創性論文。如今,RAG已發展為一類龐大的方法體系,被認為是通向更可靠生成式AI的重要方向。

2 背景和技術原理

2. 1 背景

大模型在沒有外部知識庫的情況下也能”記住”大量知識,但仍然存在明顯侷限:引數中的知識更新成本高、回答往往缺少可核驗的證據來源;遇到冷門知識、最新資訊或長鏈路推理時,錯誤率會上升;在多輪對話與長上下文場景裡,也可能出現資訊遺忘、主題漂移與證據混淆等問題。

比如,你問的是aorangehc是誰,它卻開始講愛因斯坦是誰,這類與問題無關或事實不符的生成通常被稱為幻覺(LLM Hallucination)。幻覺並非某一個模型的偶然故障,而是機率式生成在資訊不足、目標不清或證據缺失時容易出現的系統性現象,因此研究者開始從模型之外引入約束與外部資訊來降低這類問題的發生。

一種方法是在預訓練之後對模型進行指令微調與對齊訓練,讓它在不確定時更傾向於回答”不知道”或主動澄清。一種方法是使用者透過Prompt對回答範圍、證據要求與輸出格式進行限制,減少模型自由發揮的空間。

還有一種就是引入外部知識庫。我們現在使用ChatGPT、Gemini、Kimi、豆包以及DeepSeek等大模型應用時,經常會看到聯網搜尋或知識庫問答功能:系統會根據問題去外部資料來源檢索網頁或文件片段,將檢索結果作為證據提供給模型,再由模型基於證據與自身語言能力組織答案,從而顯著提升事實性與可解釋性。這個”先檢索、再生成”的過程,就是RAG的典型正規化。

2.2 技術原理

現在意義上的大模型具有很多能力,我們日常中更多是使用大模型進行提問,讓它解決遇到的難題,比如Python程式碼報錯,把報錯資訊扔給大模型,它給出修改意見,這個過程中使用的主要能力是指令遵循。除此之外還有上下文學習、推理、工具使用等,隨著技術的發展,大模型可呼叫的能力在不斷擴充套件。

在RAG中主要利用的就是大模型的上下文學習能力,透過檢索獲取相關知識作為上下文提供給大模型,然後由大模型基於問題與證據進行歸納總結並生成回答。

RAG的核心思想是在生成任務中引入檢索模組。模型在接到輸入後,先由檢索模組從外部知識庫(如維基百科、專有文件庫、企業內部資料等)中檢索出相關資料,再將檢索到的內容與原始輸入一起送入生成模型,生成最終回答或文字。這種”檢索-生成”策略使模型能夠現查現用所需知識,而不必完全依賴引數中儲存的舊知識。OpenAI的WebGPT工作即是典型案例:它讓GPT-3在一個受控的瀏覽環境中搜尋網頁、抽取引用片段並據此回答長問題,從而提升答案的事實性與可核驗性。透過引入檢索,不僅能降低幻覺發生率,也使知識庫可以更靈活地擴充套件與更新,例如使用者可以按需接入新的資料來源供系統使用。

自RAG提出後,各大研究團隊紛紛推出改進的檢索增強模型。例如,DeepMind在2021年發布的RETRO模型透過接入超大規模文字資料庫進行檢索增強,在較小引數規模下取得了與當時超大模型相當甚至在部分基準上更優的效果,體現了檢索對”以更小模型獲得更強知識能力”的潛力。又如Meta在2022年推出的Atlas模型,將預訓練的檢索增強語言模型用於少樣本學習,在開放域問答等知識密集任務上,用顯著更少的引數規模取得了與超大模型相競爭的表現。這些成果表明,檢索增強可以在更小模型規模下達到甚至逼近超大模型的效果,凸顯了引數與檢索融合的效率優勢與工程價值。

3 RAG框架

go

圖片引用自文獻Retrieval-Augmented Generation for AI-Generated Content: A Survey

典型RAG系統包含檢索器與生成器兩大核心元件。

3.1 RAG基本流程

首先,輸入查詢會被檢索模組編碼為向量表示,並在外部知識庫的向量索引中進行相似度搜尋,檢索出若干相關文字片段,並可能應用重排序技術來提高精度。隨後,這些檢索到的證據片段與原始查詢一併提供給生成模型,模型將基於問題與證據生成最終回答。透過將外部知識融入生成過程,RAG能夠讓回答更貼近事實,並在工程實現上支援給出引用來源與證據片段,從而提升可解釋性與可審計性。

經典RAG在生成整個回答時往往使用固定的一組檢索文件;也有更高階的變體如RAG-Token,可以在生成過程中對不同位置動態使用不同檢索證據,從而提升資訊使用的靈活性。

無論哪種方式,檢索結果與生成模型的融合都是關鍵。很多實現會將檢索文字直接拼接到模型輸入中,而一些研究也探索在模型內部以更結構化的方式利用檢索資訊,使模型在生成時能更穩定地對齊證據、減少無關發揮。實踐中,檢索器與生成器既可以分階段獨立最佳化,也可以在特定設定下進行聯合訓練或端到端微調,以讓檢索器更偏向於返回對生成最有幫助的證據、生成器也更善於引用與整合證據。

3.2 檢索器

檢索是指根據資訊需求識別並獲取相關資訊。具體來說,我們可以將資訊資源視為一個鍵值儲存,其中每個鍵對應一個值,鍵和值可以相同。給定一個查詢,目標是使用相似性函式搜尋出最相似的前k個鍵,並獲取與之配對的值。根據不同的相似性函式,現有的檢索方法可分為稀疏檢索、稠密檢索及其他型別。

3.2.1 稀疏檢索器

稀疏檢索器利用詞項匹配指標,如TF-IDF、BM25,主要用於文件的相關檢索。這些方法透過分析文字中的詞統計資訊並構建倒排索引來實現高效搜尋。本質上,BM25是大規模網路搜尋中的一個強大基線,它整合了逆文件頻率權重、查詢詞項出現次數和其他相關指標。

3.2.2 稠密檢索器

稠密檢索透過稠密嵌入向量來表示查詢和鍵,並構建近似最近鄰索引加快搜尋速度,能用於所有模態的檢索。稠密檢索將原本的資料透過預訓練模型編碼成為向量,然後透過計算相似度分數進行檢索,相似度計算可以透過餘弦、內積和L2距離等。

現在的RAG系統為了提升效果一般採用稀疏檢索+稠密檢索的混合檢索模式,提升效果。

3.3 生成器

生成器結合檢索到的內容,生成所需內容。

隨著AIGC時代的發展,生成器也不斷發展豐富成熟,不同的生成器模型可以用於不同的場景,比如

  • Transformer模型用於文字到文字的任務

  • VisualGPT可以用於影象到文字的任務

  • Stable Diffusion可以用於文字到影象的任務

  • Codex可以用於文字到程式碼的任務

4 RAG增強

是的檢索增強生成(的)增強也是很重要的研究點,有很多技巧。

4.1 輸入增強

最初輸入到檢索器中的內容對檢索階段的最終結果有顯著影響,輸入增強的方式主要有以下幾種。

4.1.1 查詢轉換

查詢轉換可以透過修改輸入查詢來增強檢索結果。

Query2doc和HyDE,利用原始查詢生成偽文件,之後將該偽文件用作檢索的查詢。偽文件包含更豐富的相關資訊,有助於檢索出更準確的結果。

TOC利用檢索到的內容,將模糊的查詢分解為多個清晰的子查詢,這些子查詢被髮送到生成器,經聚合後產生最終結果。對於。

RQ-RAG將複雜或模糊的查詢分解為清晰的子查詢以進行細粒度檢索,並對響應進行綜合,從而為原始查詢提供連貫的答案

4.1.2 資料增強

資料增強表示在檢索前對資料進行改進,包括去除無關資訊、消除歧義、更新過時文件、合成新資料等技術

Make-An-Audio利用字幕生成和音訊-文字檢索為無語言音訊生成字幕,以緩解資料稀疏問題,並新增隨機概念音訊來改進原始音訊。

LESS透過分析梯度資訊最佳化下游任務的資料集選擇,旨在提升模型對指令提示的響應效能。

ReACC透過重新命名和死程式碼插入來預訓練程式碼檢索模型。

4.2 檢索器增強

4.2.1 遞迴檢索

歸檢索是指執行多次搜尋以獲取更豐富、更高質量的內容。

ReACT利用思維鏈(CoT)將查詢分解以進行遞迴檢索,並提供更豐富的資訊。

RATP採用蒙特卡洛樹搜尋進行模擬,以選擇最優的檢索內容,然後將其模板化並轉發給生成器進行輸出。

4.2.2 塊最佳化

塊最佳化指的是調整塊大小以改善檢索結果。

LlamaIndex整合了一系列 chunk 最佳化方法,其中一種遵循”從小到大”的原則。其核心思想是精準定位更細粒度的內容,同時返回更豐富的資訊。例如,句子視窗檢索會獲取小的文字塊,並返回檢索片段周圍的相關句子視窗。在自動合併檢索中,文件被組織成樹狀結構。該過程先獲取子節點,再檢索包含其子節點內容的父節點。

RAPTOR採用遞迴嵌入、聚類和文字塊摘要的方法,直到無法進一步聚類為止,從而構建多層樹狀結構。

Prompt-RAG透過預先生成目錄來提高檢索準確性,使模型能夠根據查詢自主選擇相關章節。

4.2.3 檢索器微調

在稠密檢索中檢索器依賴於一個高效的嵌入模型,來表示相關內容併為生成器提供輸入,從而提升系統效能。

可以透過特定領域或任務相關的資料進行微調,以提升在目標領域的效能。

REPLUG將語言模型視為黑盒,並根據最終結果更新檢索模型。

APICoder使用Python檔案以及API名稱、簽名和描述對檢索模型進行微調。

EDITSUM對檢索模型進行微調,以減小檢索後摘要之間的傑卡德距離。

最新的模型Qwen3系列開源了多種embedding和rerank模型,並開放了技術報告,效果很好。其中小模型適合用來做微調測試和效果對比。

4.2.4 混合檢索

混合檢索指同時採用多種不同的檢索方法或從多個不同的來源提取資訊。

RAP-Gen、BlendedRAG 和ReACC均同時使用密集檢索器和稀疏檢索器來提高檢索質量。

Rencos使用稀疏檢索器在句法層面檢索相似的程式碼片段,並使用密集檢索器在語義層面檢索相似的程式碼片段。

BASHEXPLAINER首先使用密集檢索器捕獲語義資訊,然後使用稀疏檢索器獲取詞彙資訊。

RetDream先透過文字進行檢索,再透過影象嵌入進行檢索。

CRAG的特點是配備了一個檢索評估器,用於衡量文件與查詢的相關性,並根據置信度生成三種檢索響應:如果結果準確,則直接用於知識最佳化;如果結果不正確,則進行網路搜尋;對於模糊情況,則採用混合方法。

4.2.5 Rerank

重排序應該是最常見的方式,指對檢索到的內容進行重新排序,以獲得更高的多樣性和更好的結果。也有很多重排序的模型開源可以使用。

Re2G在傳統檢索器之後應用了一個重排序器模型,以減少因將文字壓縮為向量而導致的資訊丟失所帶來的影響。

AceCoder利用選擇器對檢索到的程式進行重排序,以減少冗餘程式並獲得多樣化的檢索程式。

XRICL在檢索後使用基於蒸餾的示例重排序器。

Rangan採用量化影響度量,透過評估查詢和參考之間的統計偏差來衡量資料子集的相似性,並對檢索結果進行重排序。

UDAPDR利用大語言模型經濟高效地生成用於訓練特定領域重排序器的合成查詢,然後應用多教師知識蒸餾來開發一個協同的檢索器。

4.2.6 檢索轉換

檢索轉換透過重新表述檢索到的內容,以更好地激發生成器的潛力,從而改進輸出結果。

FILCO能高效地從檢索到的文字中清除無關內容,只保留相關的支援性內容,從而簡化生成器的任務,有助於準確預測答案。

FiD-Light首先使用編碼器將檢索到的內容轉換為向量,然後對其進行壓縮,大幅減少了延遲時間。

4.3 生成器增強

4.3.1 提示工程-Prompt Engineering

提示工程是一種專注於提高大型語言模型輸出質量的提示工程技術,如提示壓縮、後退提示、主動提示、思維鏈提示等,均適用於檢索增強生成系統中的大型語言模型生成器。

LLMLingua應用一個小型模型來壓縮查詢的整體長度,以加速模型推理,減輕無關資訊對模型的負面影響,並緩解中間迷失現象。

ReMoDiffuse透過使用ChatGPT將複雜描述分解為結構化文字指令碼。

ASAP將包含輸入程式碼、函式定義、分析結果和相應註釋的示例元組納入提示詞中,以獲得更好的結果。

CEDAR使用設計好的提示詞模板,將程式碼演示、查詢和自然語言指令組織成提示詞。

XRICL利用思維鏈技術,在跨語言語義解析和推理中新增翻譯對作為中間步驟。

ACTIVERAG採用認知連線機制來校準大語言模型的內在認知,並在答案生成中應用思維鏈提示詞。

Make-An-Audio能夠使用其他模態作為輸入,這可以為後續過程提供更豐富的資訊。

4.3.2 解碼調優

解碼調優包括透過微調超引數來增強生成器控制,以提高多樣性、限制輸出詞彙量以及進行其他調整。

InferFix透過調整解碼器的溫度來平衡結果的多樣性和質量。(溫度可以理解為一個引數,控制模型生成內容的發散程度)

SYNCHROMESH透過實施補全引擎來消除實現錯誤,從而限制解碼器的輸出詞彙量。

4.3.3 生成器微調

生成器的微調可以增強模型掌握更精確領域知識的能力,或使其更好地與檢索器相適配。

RETRO固定了檢索器的引數,並在生成器中使用分塊交叉注意力機制來結合查詢和檢索器的內容。

CARE 利用影象、音訊和影片-文字對訓練編碼器,然後微調解碼器(生成器)以同時減少字幕和概念檢測損失,同時保持編碼器和檢索器固定。

Animate-A-Story利用影象資料最佳化影片生成器,然後微調LoRA介面卡以捕捉給定角色的外觀細節。

4.4 結果增強

4.4.1 輸出重寫

輸出重寫指的是在特定場景下對生成器生成的內容進行改寫,以滿足下游任務的需求。

SARGAM透過採用一種特殊的Transformer,結合刪除分類器、佔位符分類器和插入分類器,在程式碼相關任務中最佳化輸出,使其更貼合現實世界的程式碼語境。

Ring根據生成器產生的每個令牌的對數機率平均值對候選結果進行重新排序,從而獲得多樣化的結果。

CBR-KBQA透過將生成的關係與知識圖譜中查詢實體的本地鄰域所呈現的關係進行對齊,來修正結果。

4.5 流程增強 Pipeline Enhancement

RAG流程增強指的是對RAG的整個流程進行最佳化,以獲得更好的效能結果。

4.5.1 自適應檢索

一些關於RAG的研究表明,檢索並非總能提升最終結果。當模型固有的引數化知識足以回答相關問題時,過度檢索可能會導致資源浪費,並可能造成混淆。因此有些方法研究是否應該進行RAG。

  • 基於規則

    • FLARE會在生成過程中主動決定是否以及何時對機率進行搜尋。

    • Efficient-KNNLM將 KNN-LM 和 NPM的生成機率與超引數 λ 相結合,以確定生成和檢索的比例。

    • 還有對問題進行統計分析,以便為高頻問題提供直接答案,並對低頻問題應用檢索增強生成等。

  • 基於模型

    • Self-RAG使用訓練過的生成器,根據不同使用者查詢下的檢索令牌來決定是否執行檢索。

    • SKR利用大型語言模型自身的能力預先判斷其是否能夠回答該問題,若能回答,則不執行檢索。

    • Rowen將一個問題翻譯成多種語言,並檢查這些語言版本答案的一致性,以此來決定是否需要資訊檢索。

    • AdaptiveRAG透過一個較小的語言模型作為分類器,根據查詢的複雜程度動態決定是否進行檢索。

4.5.2 迭代式檢索增強生成

迭代式檢索增強生成透過在檢索和生成階段反覆迴圈來逐步最佳化結果,實際就是進行多輪操作

RepoCoder採用迭代檢索-生成方法進行程式碼補全,利用先前生成的程式碼最佳化查詢,以更好地利用分散的資訊並改善結果。

ITER-RETGEN透過使用生成器的輸出來確定知識缺口、檢索必要資訊併為未來的生成周期提供資訊,從而迭代地提高內容質量。

SelfMemory迭代地利用檢索增強生成器來構建一個龐大的記憶池,記憶選擇器從該池中挑選輸出,為下一個生成周期提供資訊。

RAT首先由大語言模型透過零樣本思維鏈提示生成內容,然後透過從外部知識庫檢索知識來修改每個思維步驟。

5 RAG的多跳多領域問題(Graph RAG)

在RAG中有一個非常經典的瓶頸問題:有些問題並不是在找某一段最相似的文字,而是在要求把分散在多篇文件、多個概念、甚至多個領域的線索串起來,形成綜合結論。當回答需要沿著共享實體、屬性或關係在不同資訊片段間穿行,並在此基礎上生成新的洞察時,單純依賴向量相似度檢索往往不夠用。這就是RAG需要面對的多跳與多領域問題。

GraphRAG(Graph Retrieval-Augmented Generation)可以被看作是為這兩類問題準備的一條升級路線,它不只檢索語義相近的文字塊,而是把知識顯式表示成圖結構,例如從文字中抽取實體與關係形成知識圖譜或圖索引,並利用圖中的關係結構來組織證據與推進推理。

IBM對GraphRAG的定義很貼近工程實踐:GraphRAG是一種引入圖結構資料的高階RAG;不同於僅靠向量檢索語義相似文字,它利用圖的關係結構來檢索與處理資訊,尤其擅長多跳推理、關係上下文以及層級結構資料的組織與查詢。

6 多模態RAG

6.1 多模態大模型

隨著大語言模型技術的不斷發展,多模態甚至全模態大模型已經成為重要研究物件,並不斷發展,現在多模態大模型也逐漸成為主流,給人們的生活帶來便利,值得一提的是,gemini影象生成真的很強,下面的圖就是它生成的,直觀地展示了多模態大模型從早期的圖文基礎連線(如CLIP, DALL-E)起步,經歷多感官融合(如GPT-4V, Gemini),最終邁向全模態實時互動與通用人工智慧(AGI)的完整技術演進路線圖。使用的提示詞是:“生成一張介紹多模態大模型發展歷程的圖片”,很簡單的提示詞,但是生成的圖挺科幻的。

go

6.2 多模態檢索增強生成

隨著多模態大模型的發展,研究者開始探索多模態檢索增強生成(Multimodal RAG),即讓系統不僅能檢索文字,還能利用影象、音訊、影片以及程式碼等多種資料來源作為知識依據。比較特殊的是,RAG的核心思想和流程在不同模態之間基本保持一致,不過需要在檢索器、生成器和相關技術細節上進行調整。

多模態RAG的基本理念是:針對不同模態的資料,引入對應的編碼器將它們對映到可比較的向量空間,從而支援跨模態檢索。例如,系統可以將影象用視覺模型編碼為向量、將文字用語言模型編碼為向量,並建立統一或可對齊的檢索索引。當使用者以文字提出查詢時,檢索模組不僅可以返回相關文字片段,也可以返回相關影象、音訊片段或影片片段作為補充資訊。目前多模態檢索最常見的是圖文兩種模態,更深入的細節往往與VLM相關,後面會進一步介紹。

多模態RAG在需要綜合視覺與文字資訊的任務中展現出獨特價值。例如在跨媒體問答場景中,使用者給出一張圖片並提出與之相關的問題,系統可以先對影象內容進行理解,再結合檢索到的外部知識文字回答更深入的問題,例如圖片中的人物背景、地點資訊或歷史事件脈絡等。又如在影片問答或多媒體搜尋中,系統可以綜合檢索字幕文字、影片關鍵幀、片段摘要乃至音訊線索來獲得更全面的資訊。

一些研究將多模態RAG用於視覺問答任務,證明結合影象內容與外部知識能夠回答一些僅憑影象本身難以回答的問題。業界也出現了支援多模態檢索的開源工具與框架,例如使用CLIP類模型編碼圖文以實現跨模態搜尋。總體而言,多模態RAG拓展了傳統RAG只能處理純文字的限制,為系統提供了面向多模態世界的外部證據通道,使生成結果更豐富且更可核驗。

6.3 多模態RAG難題

  1. 不同模態的資料格式各異,如何對齊多模態表示是關鍵,常見做法是基於大規模圖文對、音訊與轉寫文字等進行對比學習,使不同模態向量落在語義一致的空間中。

  2. 檢索過程可能需要在不同模態間跳轉,例如以圖搜文或以文搜圖,這要求索引能夠儲存多模態資訊並支援任意模態查詢到任意模態內容。

  3. 多模態資料規模大且檢索計算開銷高,尤其是在海量影象或影片片段上做近似最近鄰檢索時,對成本與延遲都是挑戰。一些系統會採用先轉文字再檢索的策略,例如對圖片做OCR或生成描述後再進入文字檢索流程,以相容現有文字檢索體系,但這可能丟失關鍵視覺細節。更偏前沿的方法傾向於保留原始模態資訊,讓檢索結果直接返回影象或影片內容,並由多模態生成模型端到端完成理解與生成,從而減少中間表示帶來的資訊損失。

7 RAG的應用

7.1 應用分類

  • 文字RAG

    • 問答:透過從海量且全面的文字資源集合中提取資訊,對提出的問題做出回應。

    • 事實核查:通常是指判斷給定的自然語言文字與相關的主張或斷言是否與文字中的事實相符。

    • 常識推理:指的是機器利用所獲取的外部知識及其應用,以類人的方式對問題或任務進行推斷或做出決策的能力。

    • 人機對話:包括機器理解自然語言的能力,以及熟練運用這種技能與人類進行無縫交流的能力。

    • 神經機器翻譯:將文字從源語言自動翻譯為目標語言。

    • 事件抽取:這是自然語言處理中的一個過程,它涉及識別文字中的特定事件並對其進行分類,同時將這些事件與相關實體關聯起來。

    • 摘要生成:從冗長的文字中提煉關鍵資訊,並生成一個簡潔、連貫的摘要,以概括主要主題。

  • 程式碼RAG

    • 程式碼生成:將自然語言描述轉換為程式碼實現。

    • 程式碼摘要:將程式碼轉換為自然語言描述。

    • 程式碼補全:程式碼補全類似於下一句預測任務的程式碼版本。

    • 自動程式修復:基於查詢的RAG常用於自動程式修復中,以幫助生成模型修復有缺陷的程式碼

    • Text2SQL和基於程式碼的語義解析:語義解析將自然語言轉換為清晰的結構化表示,例如SQL或其他特定領域語言,通常會藉助程式碼的幫助。

  • 知識RAG

    • 知識庫問答:通常利用知識庫來確定問題的正確答案。

    • 知識增強的開放域問答:主要是對結構化知識的應用。

    • 表格問答:表格作為另一種結構化知識形式,也有助於問答。

  • 3D RAG

    • Text-2-3D:檢索可用於增強3D資產生成。
  • 影象 RAG

    • 影象生成:指的是建立新影象的過程,通常運用人工智慧和機器學習領域的演算法。

    • 影象摘要: 是生成影象文字描述的過程。

  • 影片 RAG

    • 影片摘要:將視覺內容轉化為描述性語句。

    • 影片問答和對話:影片問答與對話會生成與影片內容一致的單輪或多輪響應。

  • 音訊 RAG

    • 音訊字幕生成:音訊 captioning 本質上是一項序列到序列任務,它為音訊資料生成自然語言資料

    • 音訊生成:通常根據自然語言提示合成音訊。

  • 科學領域 RAG

    • 藥物發現:藥物發現的目標是生成能同時滿足多種特性的分子。

    • 生物醫學資訊學增強:透過從生物醫學領域特定資料庫中檢索資訊,提高了大語言模型的表達能力,從而增強了模型為醫療領域的任務提供有價值指導的能力。

    • 數學問答:數學領域的檢索增強生成技術簡化了解題過程,促進了研究創新,並最佳化了教育策略。

7.2 應用領域

個人與企業內部知識庫 這類應用致力於解決私有資料的檢索與問答難題,它將公司內部文件、手冊或個人筆記進行結構化處理與向量化索引,當使用者提問時系統能夠定位到檔案中的相關段落並由大模型基於證據生成答案,從而在很多場景中替代傳統關鍵詞搜尋並顯著提升資訊獲取效率。

學術論文深度閱讀與溯源 針對科研人員需要處理海量文獻且對準確性要求極高的場景,這類應用能夠跨多篇論文檢索證據並生成綜述或回答,其核心特點是強調證據可追溯與引用對齊,儘可能讓每一個關鍵結論都能回到原文依據,從而最大化降低幻覺帶來的風險。

超大規模程式碼庫智慧助手 為了解決傳統大模型難以一次性讀完完整專案程式碼的問題,這類應用會對程式碼倉庫的結構、符號與依賴關係進行索引,讓開發者能夠用自然語言查詢專案架構或具體函式實現細節,並在證據範圍內給出解釋與修改建議,從而更高效地理解與維護複雜的遺留程式碼。

7.3 Ima

ima是騰訊開發的Ai知識庫工具,核心就是採用RAG,目前支援匯入公眾號文章構建知識庫進行檢索。

在公眾號中文章中點選轉發,將文章匯入知識庫,之後可以透過AI進行相關問答。

go

7.4 Coze

Coze空間是位元組跳動旗下AI應用開發平臺釦子,是一個多智慧體協作開發環境,它允許開發者在一個統一的畫布式介面中,將多個AI Agent、工具、資料來源和工作流編排成複雜的自動化任務系統,實現從單一聊天機器人到多角色協同、多步驟執行的進階AI應用構建。

我們下面使用其中的Agent和知識庫構建功能,構建一個八股問答姬。

首先匯入文字,構建知識庫,然後建立智慧體,並進行測試,測試能從知識庫中檢索對應資訊,這是一個知識庫RAG的應用。

go go go

7.5 Ragflow

RAGFlow是領先的開源檢索增強生成(RAG)引擎,它融合了尖端的RAG與智慧體功能,為大語言模型打造卓越的上下文層。它提供了精簡的RAG工作流,適用於任何規模的企業。在融合的上下文引擎和預製智慧體模板的支援下,RAGFlow使開發者能夠將複雜資料轉化為高保真、可投入生產的人工智慧系統,且效率和精度都極為出色。

它可以進行本地部署和使用。

go

8 資料集&Benchmark

8.1 Others\x20;

  • 噪聲魯棒性,測試大型語言模型能否從含噪聲的文件中提取必要資訊

  • 負例拒絕,評估大型語言模型在檢索到的內容不足時能否拒絕回答

  • 資訊整合,檢查大型語言模型能否透過整合多個檢索到的內容來獲取知識並進行回答

  • 反事實魯棒性,判斷大型語言模型能否識別檢索到的內容中的反事實錯誤

  • 忠實性,基於檢索到的內容評估事實準確性

  • 答案相關性,判斷結果是否針對查詢

  • 上下文相關性,評估檢索到的內容的相關性及其簡潔性

  • CRUD-RAG將RAG任務分為四種型別:建立、讀取、更新和刪除,並透過文字續寫、問答、幻覺糾正和開放域多文件摘要來對其進行評估

  • 我之前用過的資料集TreezzZ/WebQA,測試多模態效果,這玩意本身就是一個benchmark,包含問答對,透過簡單指令碼處理就能使用

8.2 多模態RAG

8.2.1 資料集

影象-文字資料集 LAION-400M:4億對圖文資料;用於多模態模型的預訓練(影象-文字)
Conceptual-Captions:超過300萬對影象-標題;多語言的英德影象描述(影象-文字)
CIRR:來自21,552張影象的36,554個三元組;側重於自然影象關係(影象-文字)
MS-COCO:33萬張帶字幕的影象;用於字幕到影象和影象到字幕的生成(影象-文字)
Flickr30K:31K張影象,每張影象都配有5個英文 caption(影象-文字)
Multi30K:30k條來自母語者的德語字幕和人工翻譯的字幕(影象-文字)
NoCaps:用於零樣本影象 captioning 評估;15K 張影象(影象-文字)
Laion-5B:58.5億個影象-文字對被用作檢索的外部儲存器(影象-文字)
COCO-CN:用於跨語言標記和帶中文句子的影象描述的20,341張影象(影象-文字)
CIRCO:1020個查詢,每個查詢平均有4.53個基準真值;用於組合影象檢索(影象-文字)
MINT-1T:1萬億個文字標記和34億張影象;比現有的開源資料集大10倍(影象-文字)
ShareGPT4V:120萬張圖片,配有GPT-4生成的說明文字,包括空間和事實細節(影象-文字)
OmniCorpus:22億個網頁文件中的86億張影象和1.7萬億個標記;交錯的文字-影象佈局(影象-文字)
影片-文字資料集 BDD-X:77小時的駕駛影片,配有專家的文字解釋;用於可解釋的駕駛行為研究(影片-文字)
YouCook2:2000個帶有對齊描述的烹飪影片;專注於影片-文字任務(影片-文字)
ActivityNet:20,000個帶有多個字幕的影片;用於影片理解和字幕生成(影片-文字)
SoccerNet:550場足球比賽的影片和後設資料;包括轉錄的解說和關鍵事件註釋(影片-文字)
MSVD:1970個影片,每個影片大約有40條字幕(影片-文字)
LSMDC:來自202部電影的118,081個影片-文字對;一個電影描述資料集(影片-文字)
DiDemo:10,000個影片,每個影片有4個拼接的字幕;包含事件的時間定位(影片-文字)
COIN:涵蓋180項任務的11,827個教學類YouTube影片,用於全面的教學影片分析(影片-文字)
MSRVTT-QA:影片問答基準(影片-文字)
ActivityNet-QA:58,000個人工標註的問答對,涉及5,800個影片;影片問答模型的基準(影片-文字)
EpicKitchens-100:用於線上動作預測的700個影片(100小時的烹飪活動);以自我為中心的視覺資料集(影片-文字)
Ego4D:430萬個以自我為中心的影片的影片-文字對;大規模以自我為中心的影片資料集(影片-文字)
HowTo100M:來自120萬個YouTube影片的1.36億個帶字幕的影片片段;用於學習文字-影片嵌入(影片-文字)
CharadesEgo:來自第一視角和第三人稱視角影片的68,536個活動例項;用於評估(影片-文字)
ActivityNet:20K個影片,每個影片有3.7個時間定位的句子;對影片中的事件進行密集字幕標註(影片-文字)
音訊-文字資料集 LibriSpeech:1000小時的英語朗讀語音及對應文字;基於有聲讀物的語音識別語料庫(音訊-文字)
SpeechBrown:55K對語音-文字樣本;15個類別,涵蓋從宗教到小說的各種主題(音訊-文字)
AudioCaps:46K個音訊片段與人工編寫的文字字幕配對(音訊-文字)
MusicCaps:它由5.5k個音樂-文字對組成,配有人類專家提供的豐富文字描述(音訊-文字)
Clotho:包含多樣化音景的音訊字幕資料集(音訊-文字)
WavCaps:大規模弱標記音訊-文字資料集,包含約40萬個帶配對字幕的音訊片段(音訊-文字)
Spoken SQuAD:SQuAD資料集的音訊版本,用於口語問答,側重於聽力理解任務(音訊-文字)
AudioSet:來自YouTube的2,084,320個人工標註的10秒音訊片段;632個音訊事件類別(音訊-文字)
知識與問答資料集 VQA:用於視覺問答的40萬個帶影象的問答對(影象-文字)
PAQ:6500萬個基於文字的問答對;一個大規模資料集(文字)
ELI5:270K個複雜多樣的問題,配有網頁和影象作為補充(文字)
MultimodalQA:29,918個需要對文字、表格和影象進行多模態多跳推理的問題(影象-文字-表格)
ViQuAE:來自維基百科的1180萬個段落,涵蓋2397個獨特實體;知識密集型問答(文字)
OK-VQA:14K個需要外部知識的視覺問答問題(影象-文字)
WebQA:46K個需要跨文字和影象進行推理的查詢(影象-文字)
Infoseek:使用基於維基百科的知識庫(600萬個段落)進行細粒度視覺知識檢索(影象-文字)
ClueWeb22:100億個網頁被分為三個子集;一個大規模的網路語料庫(文字)
MOCHEG:15,601個帶有真實性標籤的宣告,並附有文字和影象證據(影象-文字)
VQA:110萬個問題(透過VG-QA問題擴充),用於微調VQA模型(影象-文字)
A-OKVQA:使用世界知識進行視覺問答的基準;約25000個問題(影象-文字)
XL-HeadTags:415K條新聞標題-文章對包含來自六個不同語系的20種語言(文字)
DocVQA:12767張不同的文件影象,包含50K個問答對,按推理型別分類,用於評估文件視覺問答(DocVQA)方法(影象-文字)
ChartQA:9.6K個人工編寫的問答對 + 23.1K個從圖表摘要生成的問答對(影象-文字)
DVQA:30萬個圖表上的350萬個問答對,用於評估結構、資料檢索和推理能力(影象-文字)
醫學資料集 MIMIC-CXR:125,417個胸部X光片和報告的訓練對(影象-文字)
CheXpert:65,240名患者的224,316張胸部X光片;專注於醫學分析(影象-文字)
MIMIC-III:超過4萬名患者的健康相關資料(文字)
IU-Xray:7470對胸部X光片和相應的診斷報告(影象-文字)
PubLayNet:從PubLayNet構建了100,000個訓練樣本和2,160個測試樣本(醫療領域定製)(影象-文字)
Quilt-1M:438K張醫學影象,配有768K個文字對;包含顯微影象和UMLS實體(影象-文字)
時尚資料集 Fashion-IQ:三個類別共77,684張影象;採用Recall@10和Recall@50進行評估 (影象-文字)
FashionGen:260.5K 個時尚影象和物品描述的影象-文字對(影象-文字)
VITON-HD:83K張用於虛擬試穿的影象;高解析度服裝物品(影象-文字)
Fashionpedia:48,000張帶有分割掩碼和細粒度屬性標註的時尚影象(影象-文字)
DeepFashion:約80萬張多樣化的時尚圖片,用於偽三元組生成(影象-文字)
3D資料集 ShapeNet:涵蓋55個常見物體類別,包含51300個獨特的3D模型(3D-文字)
Others GeoDE:來自6個世界地區的40個類別中的61,940張影象;強調物體識別中的地理多樣性(影象)
RU-AI :147萬個真實內容與AI生成內容的樣本,用於虛假檢測的穩健性(影象-文字-音訊)
MIMIC-IT:用於模型對齊的280萬個多模態指令-響應對(影象-影片-文字)
MMVQA:橫跨3146份多頁研究PDF,包含26.2萬個問答對,用於穩健的多模態資訊檢索(影象-文字)

8.2.2 Benchmark

跨模態 MRAG-Bench:評估視覺檢索、整合以及對不相關視覺資訊的魯棒性(影象)
M2⁢R⁢A⁢G:對多模態檢索增強生成(RAG)進行基準測試;評估檢索、多跳推理和整合能力(影象-文字)
Dyn-VQA:專注於動態檢索、多跳推理以及對變化資訊的魯棒性(影象-文字)
MMBench:涵蓋視覺問答、影象描述、檢索;評估跨視覺、文字和音訊的跨模態理解能力(影象-文字-音訊)
ScienceQA:包含21,208個問題;透過文字、圖表和影象測試科學推理能力(影象-表格-文字)
SK-VQA:提供200萬個問答對;專注於合成知識、多模態推理和外部知識整合(影象-文字)
SMMQG:包含1024個問答對;側重於合成多模態資料和受控問題生成(影象-文字)
文字 TriviaQA:提供65萬個問答對;閱讀理解資料集,適用於多模態檢索增強生成(RAG)(文字)
Natural Questions:包含307,373個訓練示例;真實世界的搜尋查詢,可適配視覺語境(文字)

8.2.3 評估指標

  • 檢索評估

    • 準確率

    • 召回率和Recall@K:用於檢查前K個結果中的相關專案,比標準召回率更受青睞

    • 精確率和Top-K準確率

    go

    • F1分數

    • 平均倒數排名(MRR):用於衡量返回列表中第一個相關結果的排名位置,其中Q是查詢的總數。r⁢a⁢n⁢kq是查詢q的第一個相關結果的排名。

    go

  • 模態評估

    • 文字評估

      • 精確匹配(EM)

      • BLEU

      go

      go

      • ROUGE:用於評估文字摘要和生成

      • ROUGE-N:用於衡量生成文字與參考文字之間 N 元語法的重疊度

      go

      • ROUGE-L:衡量生成文字與參考文字之間的最長公共子序列(LCS)

      go

      • METEOR
    • 影象評估

      • 影象描述

        • CIDEr(基於共識的影象描述評估):利用TF-IDF和餘弦相似度來衡量描述質量

        • SPICE(語義命題影象描述評估)

        • SPIDEr :結合CIDEr和SPICE

      • 語義對齊

        • BERTScore

        • CLIPScore

        go

      • 影象質量

        • FID

        go

        • KID

        • Inception Score:透過分類機率評估影象的多樣性和質量

9、從概念走到一個小專案

前面列了很多結構和指標,真正動手時可以先縮小問題。拿幾份自己讀過的文件,做一個能追溯答案來源的問答工具,再逐步換檢索方法。

9.1、最小流程先跑通

給文件和片段保留穩定 ID,記下來源與頁碼;檢索結果裡同時返回文字和位置。交給模型的上下文只放這一輪找到的片段,並要求回答帶上來源編號。

比如下面是一個自定義的小測試,不是某個現有專案的實際配置:

文档 A:订单接口的请求超时为 3 秒。
文档 B:订单号不能为空,同一订单号不能重复创建。

问题:订单接口多长时间超时?
期望:3 秒,并引用文档 A。

问题:退款接口的超时是多少?
期望:当前资料没有说明,而不是沿用订单接口的数字。

這個例子能同時檢查兩件事:有答案時能否找到證據,沒答案時能否停止猜測。檢索到的文件內容作為資料使用,不應因為某個片段寫了“忽略其他要求”,就把它當成系統指令。

9.2、先定位問題出在哪一層

  • 沒檢索到正確片段:檢查文件解析、切分、查詢表達和排序。
  • 找到了,但上下文被截斷:檢查片段長度、拼接順序和上下文預算。
  • 上下文有答案,但回答錯誤:檢查生成提示、引用是否對應,以及模型有沒有越過證據。
  • 更新文件後仍然回答舊內容:檢查索引更新與快取失效。

這些問題的修復方法不一樣。先保留查詢、召回片段、最終上下文和答案,再決定該換模型還是改檢索。

9.3、做一組能夠重複的檢查

每個測試問題記錄“是否存在答案、相關片段 ID、可以接受的回答要點”。包含同義問法、精確編號、沒有答案的問題和相互衝突的文件,不能只測一個漂亮的演示。

檢索層看正確片段能否進入前 K 個結果;生成層看答案是否得到片段支援、引用是否真實,以及應當拒答時有沒有編造。BLEU、ROUGE 這類文字相似度可以輔助比較表達,但不能獨自證明答案有依據。

基礎研究入口補上 RAG 原論文。實際 BM25 專案和啟動過程見BM25 問答助手記錄。這裡補的是驗證方法,沒有新增未經執行的實驗成績。

參考資料

為什麼大家都用RAG,這篇小白都看懂了

Retrieval-Augmented Generation for AI-Generated Content: A Survey

Ask in Any Modality: A Comprehensive Survey on Multimodal Retrieval-Augmented Generation

關於這篇文章的日期

舊日期 2026-01-01 存在共用模板時間的問題;根據舊站記錄暫歸入 2026-01,具體創作日待確認。

原始日期: 2026-01-01 09:58:39 +0800