
快速提醒:用電子郵件發(fā)送短信獲取航天信息電子發(fā)票接口
前面提到過目前RAG的Retrieval存在一些弊端,比如召回率低,準(zhǔn)確率低,噪聲大,存在冗余查詢,效率和魯棒性差等。因此我們需要Hybrid Search。目前比較通用的混合搜索是三路混合檢索:全文搜索 with BM25 + 稠密向量(語義匹配) + 稀疏向量(關(guān)鍵詞增強(qiáng))。首先我們先簡單介紹一下這集中檢索方式:
全文索引
常使用倒排索引(Inverted Index)等技術(shù),將文檔中的每個(gè)單詞映射到包含該單詞的文檔列表,從而實(shí)現(xiàn)高效的查詢。查詢速度快,適合精確匹配。支持復(fù)雜的查詢語法(如布爾查詢、通配符查詢)。缺點(diǎn)是無法理解語義,僅依賴字面匹配。對同義詞、語義相似性等處理能力有限,當(dāng)然這可以通過歸一化等預(yù)處理來解決。相關(guān)性排序,常用算法為BM25算法,基于詞頻、文檔長度和逆文檔頻率的綜合評分。
BM25(Best Matching 25)是一種基于概率模型的文檔相關(guān)性評分算法,廣泛用于全文搜索引擎中,用于衡量查詢(Query)與文檔(Document)之間的匹配程度。它是傳統(tǒng)TF-IDF算法的改進(jìn)版本,尤其在處理文檔長度和詞頻分布上表現(xiàn)更優(yōu)。BM25通過結(jié)合詞頻、逆文檔頻率和文檔長度歸一化,提供了一種高效評估文檔與查詢相關(guān)性的方法,具有高效、靈活和魯棒的特點(diǎn)。BM25因其簡潔性和高效性,至今仍是文本檢索的基石技術(shù),尤其在需要快速響應(yīng)和可解釋性的場景中不可替代。
Sparse vector search
稀疏檢索是一種基于稀疏向量的搜索技術(shù),通常用于傳統(tǒng)的信息檢索任務(wù)。稀疏向量是指向量中大部分元素為零,只有少數(shù)元素非零。使用詞袋模型(Bag of Words, BoW)或 TF-IDF 等方法將文本表示為稀疏向量,然后通過計(jì)算向量之間的相似度(如點(diǎn)積)來檢索相關(guān)文檔。主要使用在傳統(tǒng)文本檢索(如搜索引擎)。計(jì)算效率高,適合大規(guī)模數(shù)據(jù)集,但是無法理解語義。
稀疏向量難以替代全文搜索:稀疏向量旨在替代全文搜索,其方法是使用標(biāo)準(zhǔn)預(yù)訓(xùn)練模型消除冗余詞并添加擴(kuò)展詞,從而得到固定維度(例如 30,000 或 100,000 維)的稀疏向量輸出。這種方法在一般查詢?nèi)蝿?wù)上表現(xiàn)良好;但是,許多用戶查詢關(guān)鍵字可能不存在于用于生成稀疏向量的預(yù)訓(xùn)練模型中,例如特定的機(jī)器模型、手冊和專業(yè)術(shù)語。因此,雖然稀疏向量和全文搜索都服務(wù)于精確召回的目的,但它們各有千秋,無法互相替代。
Vector Search
Vector search 是一種基于向量空間模型的搜索技術(shù),將數(shù)據(jù)(如文本、圖像、音頻)轉(zhuǎn)換為高維向量(通常是稠密向量),并通過計(jì)算向量之間的相似度(如余弦相似度或歐氏距離)來找到最相關(guān)的結(jié)果。利用機(jī)器學(xué)習(xí)模型(如深度學(xué)習(xí))將數(shù)據(jù)映射到向量空間,語義相近的數(shù)據(jù)在向量空間中距離較近。主要應(yīng)用場景是語義搜索(Semantic Search):理解查詢的語義,而不僅僅是關(guān)鍵詞匹配。能夠捕捉語義信息,支持模糊匹配。適合處理非結(jié)構(gòu)化數(shù)據(jù)(如文本、圖像)。但是需要預(yù)訓(xùn)練模型生成向量,計(jì)算復(fù)雜度較高。對硬件資源(如GPU)要求較高。
采用多種召回方法可以為 RAG 帶來更好的結(jié)果。具體來說,將向量搜索、稀疏向量搜索和全文搜索結(jié)合起來可以實(shí)現(xiàn)最佳召回率。這很容易理解,因?yàn)橄蛄靠梢员硎菊Z義;一個(gè)句子甚至整篇文章都可以封裝在一個(gè)向量中。本質(zhì)上,向量傳達(dá)了文本的“含義”,表示其與上下文窗口內(nèi)其他文本共現(xiàn)的壓縮概率。因此,向量無法精確表示查詢。例如,如果用戶問:“我們公司 2024 年 3 月的財(cái)務(wù)計(jì)劃包括哪些組合?”結(jié)果可能會(huì)返回來自其他時(shí)間段的數(shù)據(jù)或不相關(guān)的主題,例如運(yùn)營計(jì)劃或營銷管理。相比之下,全文搜索和稀疏向量主要表達(dá)精確的語義。因此,將這些方法結(jié)合起來可以滿足我們?nèi)粘φZ義理解和精度的需求。
下圖顯示了使用 Infinity 在公共基準(zhǔn)數(shù)據(jù)集上進(jìn)行評估的結(jié)果,比較了單向召回方法(向量、稀疏向量、全文搜索)、雙向召回和三向召回??v軸表示排序質(zhì)量,很明顯三向召回取得了最佳結(jié)果,充分驗(yàn)證了 BlendedRAG 的效果。
目前的混合搜索架構(gòu)中,不同的數(shù)據(jù)存儲和檢索大都是通過異構(gòu)數(shù)據(jù)庫和存儲介質(zhì)來實(shí)現(xiàn)的,這會(huì)帶來效率和精準(zhǔn)度的問題,因此同時(shí)支持多種檢索的數(shù)據(jù)庫顯得尤為重要,但是有較大挑戰(zhàn),目前市面上實(shí)現(xiàn)此類功能的數(shù)據(jù)庫有Milvus(支持多模態(tài)向量+標(biāo)量過濾) , Weaviate(內(nèi)置混合搜索)。
在RAG(Retrieval-Augmented Generation,檢索增強(qiáng)生成)系統(tǒng)中,DPR(Dense Passage Retrieval,稠密段落檢索)是檢索模塊的核心技術(shù)之一。DPR通過使用密集向量表示來檢索與查詢最相關(guān)的文檔或段落,是RAG系統(tǒng)的重要基礎(chǔ)。由 Facebook AI Research 團(tuán)隊(duì)在2020年首次提出。
DPR是一種基于深度學(xué)習(xí)的檢索方法,專注于將查詢(query)和文檔(passage)編碼為稠密向量,并通過計(jì)算向量之間的相似度來檢索與查詢最相關(guān)的文檔。DPR是稠密向量檢索在段落檢索任務(wù)中的一個(gè)具體實(shí)現(xiàn),它利用深度學(xué)習(xí)模型將查詢和文檔編碼為稠密向量,并通過相似度計(jì)算來檢索相關(guān)文檔。
DPR的核心功能
1. 雙編碼器架構(gòu):DPR采用雙編碼器架構(gòu),分別對查詢和文檔進(jìn)行編碼,將它們映射到高維向量空間中。通過計(jì)算查詢向量和文檔向量之間的相似度(如內(nèi)積),DPR能夠高效地檢索出與查詢最相關(guān)的文檔。
2. 語義匹配:與傳統(tǒng)的稀疏檢索方法(如BM25)不同,DPR能夠捕捉查詢和文檔之間的語義相似性,而不僅僅是關(guān)鍵詞匹配。這使得DPR在處理復(fù)雜的自然語言查詢時(shí)表現(xiàn)出色。
3. 高效檢索:DPR利用密集向量表示和高效的最近鄰搜索算法(如MIPS,Maximum Inner Product Search),能夠快速從大規(guī)模知識庫中檢索出相關(guān)文檔。
DPR作為RAG系統(tǒng)中的檢索器,負(fù)責(zé)從外部知識庫中檢索與用戶查詢最相關(guān)的文檔或段落。這些檢索到的文檔隨后被送至生成模塊,生成模塊利用這些文檔生成高質(zhì)量、上下文相關(guān)的回答。DPR的高效語義檢索能力顯著提升了RAG系統(tǒng)在開放域問答等任務(wù)中的表現(xiàn)。
盡管DPR已經(jīng)取得了顯著的成果,但仍有改進(jìn)空間。例如,DPR訓(xùn)練過程中的知識分散化(decentralization)可以進(jìn)一步優(yōu)化,以提高檢索的多樣性和準(zhǔn)確性。此外,研究者們也在探索如何更好地將DPR與預(yù)訓(xùn)練語言模型結(jié)合,以進(jìn)一步提升檢索和生成的性能。
我們前面講過,三路召回(BM25 + 稠密向量 + 稀疏向量)效果最優(yōu),但如何高效融合多路結(jié)果并重排序(Reranking)仍是難題。
排名是任何搜索系統(tǒng)的核心。排名涉及兩個(gè)組件:一個(gè)是用于粗過濾的部分也就是粗排;另一個(gè)是用于微調(diào)階段的重排序模型也叫重排或者精排。混合檢索能夠結(jié)合不同檢索技術(shù)的優(yōu)勢獲得更好的召回結(jié)果,但在不同檢索模式下的查詢結(jié)果需要進(jìn)行合并和歸一化(將數(shù)據(jù)轉(zhuǎn)換為統(tǒng)一的標(biāo)準(zhǔn)范圍或分布,以便更好地進(jìn)行比較、分析和處理),然后再一起提供給大模型。這時(shí)候我們需要引入一個(gè)評分系統(tǒng):重排序模型(Rerank Model)。
重排序模型會(huì)計(jì)算候選文檔列表與用戶問題的語義匹配度,根據(jù)語義匹配度重新進(jìn)行排序,從而改進(jìn)語義排序的結(jié)果。其原理是計(jì)算用戶問題與給定的每個(gè)候選文檔之間的相關(guān)性分?jǐn)?shù),并返回按相關(guān)性從高到低排序的文檔列表。常見的 Rerank 模型如:Cohere rerank、bge-reranker 等。
不過,重排序并不是只適用于不同檢索系統(tǒng)的結(jié)果合并,即使是在單一檢索模式下,引入重排序步驟也能有效幫助改進(jìn)文檔的召回效果,比如我們可以在關(guān)鍵詞檢索之后加入語義重排序。
在具體實(shí)踐過程中,除了將多路查詢結(jié)果進(jìn)行歸一化之外,在將相關(guān)的文本分段交給大模型之前,我們一般會(huì)限制傳遞給大模型的分段個(gè)數(shù)(即 TopK,可以在重排序模型參數(shù)中設(shè)置),這樣做的原因是大模型的輸入窗口存在大小限制(一般為 4K、8K、16K、128K 的 Token 數(shù)量),你需要根據(jù)選用的模型輸入窗口的大小限制,選擇合適的分段策略和 TopK 值。
需要注意的是,即使模型上下文窗口很足夠大,過多的召回分段會(huì)可能會(huì)引入相關(guān)度較低的內(nèi)容,導(dǎo)致回答的質(zhì)量降低,所以重排序的 TopK 參數(shù)并不是越大越好。
在RAG(Retrieval-Augmented Generation)系統(tǒng)中,檢索完成后進(jìn)行重排序(reranking)的目的是為了提高最終生成結(jié)果的質(zhì)量和相關(guān)性。盡管初始檢索階段已經(jīng)返回了一組相關(guān)文檔或段落,但這些結(jié)果可能并不完全符合生成模型的需求,或者可能存在排序不合理的情況。重排序可以幫助篩選出最相關(guān)、最有用的信息,從而提升生成模型的輸出效果。
接下來我們重點(diǎn)介紹幾種常用的Reranker。
Cross-Encoder Reranker 是一種基于深度學(xué)習(xí)的重排序模型,通過聯(lián)合編碼查詢-文檔對(將查詢和文檔拼接后輸入模型)直接預(yù)測相關(guān)性分?jǐn)?shù),而非生成獨(dú)立向量。其核心是利用交叉編碼器(Cross-Encoder)架構(gòu)來評估查詢(query)和文檔(document)對之間的相似度。與雙編碼器(Bi-Encoder)不同,交叉編碼器不是分別對查詢和文檔進(jìn)行編碼,而是將查詢和文檔作為一個(gè)整體輸入到模型中,從而能夠更有效地捕獲兩者之間的交互和關(guān)系。這種架構(gòu)通常由多層神經(jīng)網(wǎng)絡(luò)單元組成,例如Transformer或循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),能夠?qū)⑤斎胄蛄兄械男畔⒕幋a為固定大小的表。比傳統(tǒng)向量檢索更精準(zhǔn),能捕捉深層次語義關(guān)系。它通過端到端分類任務(wù)(如二元相關(guān)性判斷)優(yōu)化,適合對Top-K候選文檔進(jìn)行精排。代表模型有<font style="color:rgb(64, 64, 64);">BAAI/bge-reranker-large</font>
。
Cross-Encoder可以與延遲交互(Late Interaction)結(jié)合,如本文前面提到過的ColPali(多模態(tài)RAG場景),通過分解查詢-文檔交互矩陣為多向量外積,實(shí)現(xiàn)高效語義排序,同時(shí)保留細(xì)粒度交互能力。
在效率方面,可以將大型Cross-Encoder(如BERT-large)蒸餾為輕量級模型(如TinyBERT),或采用FP16/INT8量化降低推理延遲。這些都是比較通用的方法,在此不表。
使用示例:
import numpy
import lancedb
from lancedb.embeddings import get_registry
from lancedb.pydantic import LanceModel, Vector
from lancedb.rerankers import CrossEncoderReranker
embedder = get_registry().get("sentence-transformers").create()
db = lancedb.connect("~/.lancedb")
class Schema(LanceModel):
text: str = embedder.SourceField()
vector: Vector(embedder.ndims()) = embedder.VectorField()
data = [
{"text": "hello world"},
{"text": "goodbye world"}
]
tbl = db.create_table("test", schema=Schema, mode="overwrite")
tbl.add(data)
reranker = CrossEncoderReranker()
# Run vector search with a reranker
result = tbl.search("hello").rerank(reranker=CrossEncoderReranker()).to_list()
當(dāng)前主流RAG系統(tǒng)遵循”檢索-排序-生成”的線性流程,其中重排序環(huán)節(jié)通常采用兩類方法:(1) 基于獨(dú)立編碼的交叉注意力模型(如MonoT5),單獨(dú)評估每個(gè)文檔與查詢的相關(guān)性;(2) 基于列表級損失的排序模型(如ListNet),優(yōu)化整個(gè)文檔序列的排列。這兩種范式都存在根本性局限——它們將文檔視為孤立的個(gè)體,完全忽視了文檔間豐富的語義關(guān)聯(lián),導(dǎo)致三個(gè)關(guān)鍵問題:
1. 信息整合失效:當(dāng)答案需要綜合多篇文檔信息時(shí)(如對比型問題”比較A與B的優(yōu)缺點(diǎn)”),獨(dú)立排序可能將與A、B分別相關(guān)但單獨(dú)評分不高的文檔排在后位,而實(shí)際上這些文檔的組合才最具回答價(jià)值[2][3]。
2. 冗余放大效應(yīng):高度相似的多篇文檔可能因獨(dú)立評分都較高而同時(shí)位居前列,擠占其他重要但獨(dú)特信息的展示空間。論文圖1展示了傳統(tǒng)方法在HotpotQA數(shù)據(jù)集上出現(xiàn)的典型冗余案例,前5篇文檔中有3篇內(nèi)容重疊度超過70%。
3. 關(guān)系認(rèn)知盲區(qū):現(xiàn)有系統(tǒng)無法識別文檔間的因果、時(shí)序、對比等邏輯關(guān)系,而這些關(guān)系往往是解答復(fù)雜問題的關(guān)鍵。例如回答”COVID-19如何導(dǎo)致經(jīng)濟(jì)衰退”需要串聯(lián)病因?qū)W文檔與經(jīng)濟(jì)分析文檔,盡管它們的主題相似度可能很低。
更本質(zhì)地,這些問題的根源在于傳統(tǒng)排序?qū)⑽臋n視為獨(dú)立同分布樣本,而現(xiàn)實(shí)中文檔間存在復(fù)雜的條件依賴關(guān)系。該論文首次提出將文檔集合建模為圖結(jié)構(gòu),其中節(jié)點(diǎn)表示文檔,邊表示語義關(guān)系,通過圖算法挖掘全局結(jié)構(gòu)信息來指導(dǎo)排序決策。
現(xiàn)有RAG系統(tǒng)在處理文檔與問題上下文關(guān)系時(shí)存在挑戰(zhàn),當(dāng)文檔與問題的關(guān)聯(lián)性不明顯或僅包含部分信息時(shí),模型可能無法有效利用這些文檔。此外,現(xiàn)有方法通常忽視文檔之間的連接,導(dǎo)致無法充分利用文檔間的語義信息。
這篇 Paper 《Don’t Forget to Connect! Improving RAG with Graph-based Reranking》該論文提出了一種基于圖的重排方法G-RAG,旨在通過利用文檔之間的連接信息和語義信息,更有效地識別文檔中的有價(jià)值信息,從而提高RAG在ODQA中的性能。
關(guān)鍵技術(shù)
1. 圖結(jié)構(gòu)構(gòu)建
2. 圖神經(jīng)網(wǎng)絡(luò)架構(gòu)
基于GNN的架構(gòu)來重排序檢索到的文檔:
框架應(yīng)用預(yù)先訓(xùn)練的語言模型對給定問題 q 的 {p1,p2,?,pn} 中所有 n 檢索到的文檔進(jìn)行編碼。文檔嵌入表示為
,其中 d 是隱藏維度,
的每一行由以下公式給出
某些負(fù)面文檔無法與其文本中的問題上下文建立足夠的聯(lián)系。此外,負(fù)面文檔還會(huì)遇到另一種極端情況,即路徑包含大量與問題文本相關(guān)的信息,但缺乏有價(jià)值信息。這種獨(dú)特的模式提供了有價(jià)值的見解,可在編碼過程中利用它們來提高重排器的性能。
因此,建議的文檔嵌入由
給出,并且 X 的每一行可以由
給出:
3. 圖算法重排序
4. 動(dòng)態(tài)響應(yīng)生成
1)局部響應(yīng)生成:每個(gè)高權(quán)重文檔或社區(qū)摘要獨(dú)立生成部分答案;
2)全局整合:通過LLM對局部響應(yīng)去冗余并合成最終答案。
5. 端到端優(yōu)化
ColBERT(Contextualized Late Interaction over BERT)是一種高效的檢索模型,特別適用于大規(guī)模文本集合的檢索任務(wù)。它通過延遲交互機(jī)制(late interaction architecture)結(jié)合BERT的上下文表示,實(shí)現(xiàn)了高效的檢索和重排序。這里我們Jina-ColBERT-v2
1. 延遲交互機(jī)制(Late Interaction):ColBERT引入了一種延遲交互相似性函數(shù),通過分別對查詢和文檔進(jìn)行編碼,然后在推理時(shí)計(jì)算查詢和文檔之間的相似性(MaxSim),從而實(shí)現(xiàn)延遲交互。這種方法在保持高效推理的同時(shí),能夠捕捉到查詢和文檔之間的復(fù)雜關(guān)系。
2. 多向量表示:與傳統(tǒng)的單向量檢索模型不同,ColBERT為查詢和文檔中的每個(gè)標(biāo)記生成一個(gè)嵌入向量,然后通過聚合這些標(biāo)記嵌入來計(jì)算相關(guān)性分?jǐn)?shù)。這種方法能夠更細(xì)致地捕捉文本的語義信息。
3. 多語言預(yù)訓(xùn)練:Jina-ColBERT-v2使用XLM-RoBERTa作為其基礎(chǔ)模型,并通過在多種語言的數(shù)據(jù)上進(jìn)行預(yù)訓(xùn)練,提高了模型的多語言性能。
4. 弱監(jiān)督學(xué)習(xí):論文提出在大規(guī)模的弱監(jiān)督文本對上進(jìn)行預(yù)訓(xùn)練,以學(xué)習(xí)文本的一般語義結(jié)構(gòu)。這些文本對包括句子對、問答對和查詢-文檔對,涵蓋了多種語言和領(lǐng)域。
5. 三元組訓(xùn)練:在預(yù)訓(xùn)練的基礎(chǔ)上,模型進(jìn)一步在多種語言的檢索數(shù)據(jù)上進(jìn)行微調(diào),使用標(biāo)注的三元組數(shù)據(jù)和硬負(fù)樣本進(jìn)行訓(xùn)練,以提高檢索性能。
目前,多模態(tài)檢索增強(qiáng)生成(Multimodal RAG) 已成為 RAG 技術(shù)中最前沿和流行的方向之一,它通過整合文本、圖像、音頻、視頻等多種模態(tài)數(shù)據(jù),顯著提升了 AI 系統(tǒng)的理解和生成能力。
對于多模態(tài)文檔,傳統(tǒng)方法是使用模型將多模態(tài)文檔轉(zhuǎn)換為文本,然后再進(jìn)行索引以供檢索。另一種方法是直接多模態(tài)向量化,比如利用 視覺語言模型 VLM,直接生成向量,繞過復(fù)雜的 OCR 過程。2024 出現(xiàn)的 ColPali。ColPali 將圖像視為 1024 個(gè)圖像塊,并為每個(gè)塊生成嵌入,有效地將單個(gè)圖像表示為張量。比如:
這意味著 VLM 對圖像的理解更加深入,不再僅僅識別日常物品,而是可以高效識別企業(yè)級多模態(tài)文檔。例如,來自 Google 的開源 3B 模型 PaliGemma,能夠?qū)D像塊(Image Patches)嵌入到與文本相似的潛在空間中。ColPali 在此基礎(chǔ)上擴(kuò)展,通過投影層將模型輸出的高維嵌入降維至 128 維,生成多向量表示(每個(gè)圖像塊對應(yīng)一個(gè)向量),從而保留文檔的細(xì)粒度視覺信息。借鑒文本檢索模型 ColBERT 的“延遲交互”策略,ColPali 在檢索階段計(jì)算查詢文本的每個(gè) token 向量與文檔圖像塊向量的最大相似度(MaxSim),而非傳統(tǒng)的單向量相似度。這種方法避免了早期交互的計(jì)算負(fù)擔(dān),同時(shí)提升了檢索精度。
這種技術(shù)的優(yōu)勢非常明顯,端到端處理復(fù)雜文檔,直接輸入文檔圖像(如 PDF 頁面),無需傳統(tǒng) OCR、文本提取或布局分析等預(yù)處理步驟,顯著簡化流程并減少錯(cuò)誤傳播。還可以實(shí)現(xiàn)多模態(tài)聯(lián)合檢索,通過視覺和文本嵌入的統(tǒng)一表示,模型能同時(shí)理解圖表、表格和文本內(nèi)容。例如,在財(cái)務(wù)報(bào)告或科學(xué)論文中,ColPali 可檢索出純文本方法可能遺漏的視覺關(guān)鍵信息。
如果我們可以使用 RAG 根據(jù)用戶查詢在大量 PDF 中查找包含答案的圖像和文本,那么我們就可以使用 VLM 生成最終答案。這就是多模態(tài) RAG 的意義所在,它不僅僅是簡單的圖像搜索。
檢索過程需要一個(gè) Versatile 的數(shù)據(jù)庫,不僅支持基于張量的重新排序,而且還能在向量檢索階段容納多向量索引。
在這里我們簡單介紹一下直接多模態(tài)向量化和模態(tài)轉(zhuǎn)換。
直接多模態(tài)向量化
模態(tài)轉(zhuǎn)換,多模態(tài)轉(zhuǎn)文本(Modality-to-Text)
多模態(tài)轉(zhuǎn)文本(Modality-to-Text)和直接多模態(tài)向量化(Direct Multimodal Embedding)對比
當(dāng)然,現(xiàn)實(shí)情況中,我們有多模態(tài)融合的scenarios,這個(gè)時(shí)候我們需要建立一個(gè)共享向量空間,使用跨模態(tài)模型(如 OpenAI的CLIP、DeepMind的Flamingo)將不同模態(tài)的數(shù)據(jù)(如圖片、文本、音頻)映射到同一向量空間,文檔中的文本、圖像等模態(tài)均可檢索,通過距離計(jì)算匹配用戶查詢,實(shí)現(xiàn)跨模態(tài)語義對齊,比如以圖搜文,以文搜圖等。
強(qiáng)化學(xué)習(xí)(Reinforcement Learning, RL)RAG 中的應(yīng)用并不鮮見。RL能夠優(yōu)化RAG系統(tǒng)的檢索策略、查詢生成和答案推理過程,可以說,強(qiáng)化學(xué)習(xí)是 RAG 最好的軍師。比如 DeepSeek-R1 就是通過基于規(guī)則的強(qiáng)化學(xué)習(xí) (RL) 成功激發(fā)推理能力。
這篇 Paper 《DeepRAG: Thinking to Retrieval Step by Step for Large Language Models》提出了DeepRAG,采用馬爾可夫決策過程(MDP)建模檢索增強(qiáng)推理,動(dòng)態(tài)決定何時(shí)檢索外部知識。優(yōu)化了推理精準(zhǔn)度,減少不必要檢索,提升計(jì)算效率。
DeepRAG 將檢索增強(qiáng)推理建模為 MDP,結(jié)合二進(jìn)制樹搜索與校準(zhǔn)鏈,實(shí)現(xiàn)了動(dòng)態(tài)檢索決策。減少冗余檢索和不必要的噪聲,能夠顯著提高系統(tǒng)的準(zhǔn)確性和效率。但是其訓(xùn)練和推理過程可能需要較高的計(jì)算資源,且檢索策略和知識邊界校準(zhǔn)方法有待提高,以泛化到更多的場景。
傳統(tǒng)的RAG方法通常在生成過程之前采用一次性檢索策略,也就是只進(jìn)行一次檢索,但這種方法在處理復(fù)雜查詢時(shí)可能效果有限,因?yàn)闄z索結(jié)果可能并不完全準(zhǔn)確,做過搜索的同學(xué)應(yīng)該都知道,想要完成一次準(zhǔn)確的搜索,需要很多步驟,多路找回,多次檢索,合并,粗排,精排等等。這篇Paper 《Chain-of-Retrieval Augmented Generation》提出了CoRAG,核心思想是將檢索過程分解為多個(gè)步驟,逐步獲取和整合外部知識。
CoRAG 通過鏈?zhǔn)綑z索機(jī)制和強(qiáng)化學(xué)習(xí),提升了檢索增強(qiáng)生成技術(shù)的效率和性能,CoRAG將檢索過程分解為多個(gè)步驟,實(shí)現(xiàn)了逐步檢索和動(dòng)態(tài)調(diào)整,并且通過強(qiáng)化學(xué)習(xí)訓(xùn)練檢索策略,使模型能夠根據(jù)任務(wù)需求自適應(yīng)調(diào)整檢索行為。
鏈?zhǔn)綑z索機(jī)制
逐步檢索:將檢索增強(qiáng)推理建模為多步?jīng)Q策過程,在生成過程中,模型根據(jù)當(dāng)前生成的內(nèi)容和任務(wù)需求,動(dòng)態(tài)決定是否進(jìn)行下一步檢索。采用自適應(yīng)檢索策略:若中間答案置信度低,則重新檢索;否則依賴已有信息繼續(xù)生成。檢索策略調(diào)整:通過強(qiáng)化學(xué)習(xí)或啟發(fā)式規(guī)則,優(yōu)化檢索策略,確保每次檢索都能獲取最相關(guān)的信息。
大多數(shù) RAG 數(shù)據(jù)集僅附帶查詢 Q 以及相應(yīng)的最終答案 A ,而無需提供中間檢索步驟。CoRAG 提出了一種通過拒絕抽樣自動(dòng)生成檢索鏈的方法。
檢索與生成的協(xié)同
多步檢索整合:將每次檢索的結(jié)果通過注意力機(jī)制與生成模型結(jié)合,確保生成內(nèi)容與檢索信息的一致性。
動(dòng)態(tài)生成控制:根據(jù)檢索結(jié)果的質(zhì)量和相關(guān)性,動(dòng)態(tài)調(diào)整生成策略,避免冗余或無關(guān)信息的引入。
訓(xùn)練與優(yōu)化
訓(xùn)練數(shù)據(jù):使用包含多步檢索任務(wù)的數(shù)據(jù)集進(jìn)行訓(xùn)練。數(shù)據(jù)集中的每個(gè)訓(xùn)練實(shí)例都表示為一個(gè)元組 (Q,A,Q1:L,A1:L),并附有查詢 Q 和每個(gè)子查詢的相應(yīng)前 k 個(gè)檢索文檔。使用多任務(wù)學(xué)習(xí)框架中的標(biāo)準(zhǔn)下一個(gè)標(biāo)記預(yù)測目標(biāo)對增強(qiáng)數(shù)據(jù)集進(jìn)行微調(diào)。
獎(jiǎng)勵(lì)設(shè)計(jì):結(jié)合任務(wù)目標(biāo)(如答案準(zhǔn)確性、文本連貫性)設(shè)計(jì)獎(jiǎng)勵(lì)函數(shù),引導(dǎo)模型學(xué)習(xí)最優(yōu)檢索策略。
模型架構(gòu):基于Transformer架構(gòu),擴(kuò)展了檢索決策模塊和檢索結(jié)果整合模塊。
傳統(tǒng)RAG方法在處理復(fù)雜關(guān)系和多源知識整合方面存在不足,難以捕捉知識片段之間的復(fù)雜關(guān)系(如多跳推理任務(wù)),如多步檢索或基于圖的檢索面臨計(jì)算成本高、圖結(jié)構(gòu)噪聲或不完整、泛化性差等挑戰(zhàn)。這篇Paper 《GFM-RAG: Graph Foundation Model for Retrieval Augmented Generation》提出了 GFM-RAG,通過構(gòu)建圖結(jié)構(gòu)來顯式建模知識之間的復(fù)雜關(guān)系,可以提高檢索和推理的效率。當(dāng)然,這些方法仍然受到圖結(jié)構(gòu)噪聲和不完整性的影響,可能會(huì)限制其性能。
GFM-RAG框架:GFM-RAG通過構(gòu)建知識圖譜索引(KG-index)和圖基礎(chǔ)模型(GFM)來增強(qiáng)LLMs的推理能力。KG-index從文檔中提取實(shí)體和關(guān)系,形成一個(gè)結(jié)構(gòu)化的知識索引。GFM則利用圖神經(jīng)網(wǎng)絡(luò)(GNN)來捕捉查詢和知識圖之間的復(fù)雜關(guān)系。
包含三個(gè)核心組件:
1. KG索引構(gòu)建:從文檔中提取實(shí)體和關(guān)系,構(gòu)建知識圖譜(KG-index),并通過實(shí)體解析增強(qiáng)語義連接。
傳統(tǒng)的基于嵌入的索引方法將文檔編碼為單獨(dú)的向量,但這些方法在對它們之間的關(guān)系進(jìn)行建模方面受到限制。另一方面,知識圖譜 (KG) 明確捕捉了數(shù)百萬個(gè)事實(shí)之間的關(guān)系,可以提供跨多個(gè)文檔的知識的結(jié)構(gòu)化索引。KG 索引的結(jié)構(gòu)性質(zhì)與人類海馬記憶索引理論非常吻合,其中 KG 索引就像一個(gè)人工海馬,用于存儲知識記憶之間的關(guān)聯(lián),增強(qiáng)了復(fù)雜推理任務(wù)對各種知識的整合。
為了構(gòu)建 KG 索引,給定一組文檔 ?? ,我們首先從文檔中提取實(shí)體 ? 和關(guān)系 ? 以形成三元組 ?? 。然后,構(gòu)建實(shí)體到文檔的倒排索引 M∈{0,1}|?|×|??| 來記錄每個(gè)文檔中提到的實(shí)體。這一過程可以通過現(xiàn)有的開放信息提取 (OpenIE) 工具實(shí)現(xiàn)。為了更好地捕捉知識之間的聯(lián)系,進(jìn)一步進(jìn)行實(shí)體解析,在具有相似語義的實(shí)體之間添加額外邊 ??+ ,例如 ( USA , equivalent , United States of America )。因此,最終的 KG 索引 ?? 構(gòu)建為 G={(e,r,e′)∈T∪T+}。在實(shí)施過程中,利用 LLM 作為 OpenIE 工具,并利用預(yù)先訓(xùn)練的密集嵌入模型進(jìn)行實(shí)體解析。
2. 圖基礎(chǔ)模型檢索器(GFM Retriever):
傳統(tǒng)的 GNN 遵循消息傳遞范式,該范式迭代地聚合來自鄰居的信息以更新實(shí)體表示。這種范式不適用于 GFM 檢索器,因?yàn)樗翘囟ㄓ趫D的,并且忽略了查詢的相關(guān)性。但是 query-dependent GNNs 在捕獲查詢特定信息和對不可見圖的通用性方面表現(xiàn)出良好:
其中
表示初始實(shí)體特征, HqL 表示在經(jīng)過 L 層依賴于查詢的消息傳遞之后以查詢 q 為條件的更新后的實(shí)體表示。
查詢相關(guān)的 GNN 表現(xiàn)出更好的表達(dá)能力和邏輯推理能力,作為 GFM 檢索器的骨干。它允許 GFM 檢索器根據(jù)用戶查詢動(dòng)態(tài)調(diào)整消息傳遞過程,并在圖上找到最相關(guān)的信息。
GFM 檢索器的訓(xùn)練目標(biāo)是最大化與查詢相關(guān)的實(shí)體的可能性,可以通過最小化二元交叉熵 (BCE) 損失來優(yōu)化:
其中 ??q 表示與查詢 q 相關(guān)的目標(biāo)實(shí)體集, ?-?????q 表示從 KG 中采樣的負(fù)實(shí)體集。然而,由于目標(biāo)實(shí)體的稀疏性,BCE 損失可能遭受梯度消失問題。為了解決這個(gè)問題,進(jìn)一步引入了排名損失, 以最大化正負(fù)實(shí)體之間的邊際:
最終的訓(xùn)練目標(biāo)是 BCE 損失和排名損失的加權(quán)組合:
3. 文檔排序與答案生成:根據(jù)實(shí)體相關(guān)性得分排序文檔,輸入LLM生成最終答案。
鑒于 GFM 檢索器預(yù)測的實(shí)體相關(guān)性得分 Pq∈?|?|×1 ,首先檢索相關(guān)性得分最高的前 T 個(gè)實(shí)體 ?qT :
然后,文檔排名器使用這些檢索到的實(shí)體來獲取最終文檔。為了減少熱門實(shí)體的影響,按照實(shí)體在文檔倒排索引 M∈{0,1}|?|×|??| 中被提及的頻率的倒數(shù)來加權(quán)實(shí)體,并通過對文檔中提及的實(shí)體的權(quán)重求和來計(jì)算最終的文檔相關(guān)性得分:
根據(jù)文檔相關(guān)性得分 Pd 檢索排名前 K 的文檔,并以檢索增強(qiáng)生成的方式輸入到 LLMs 的上下文中,以生成最終答案:
圖基礎(chǔ)模型(GFM):GFM是一個(gè)基于查詢的GNN,能夠根據(jù)用戶查詢動(dòng)態(tài)調(diào)整信息傳遞過程,從而在單步中完成多跳推理。GFM經(jīng)過兩個(gè)階段的訓(xùn)練:無監(jiān)督的知識圖完成預(yù)訓(xùn)練和有監(jiān)督的文檔檢索微調(diào)。模型有8M參數(shù),通過大規(guī)模訓(xùn)練(60個(gè)KG、14M三元組、700k文檔)實(shí)現(xiàn)跨數(shù)據(jù)集零樣本泛化。在7個(gè)領(lǐng)域數(shù)據(jù)集上 zero-shot 表現(xiàn)優(yōu)于HippoRAG 18.9%。
關(guān)于 Scaling Law,從圖中我們看到模型性能隨模型參數(shù)大小和訓(xùn)練數(shù)據(jù)大小變化的擬合趨勢線。從趨勢線中我們可以看到 GFM-RAG 的性能隨著模型參數(shù)大小和訓(xùn)練數(shù)據(jù)大小的增加而提高。同時(shí),隨著模型參數(shù)大小的增大,需要更大的訓(xùn)練數(shù)據(jù)量才能達(dá)到最佳性能。也就是說,同時(shí)擴(kuò)大模型大小和訓(xùn)練數(shù)據(jù)可以進(jìn)一步提高 GFM-RAG 的性能。
訓(xùn)練過程:
GFM-RAG通過圖結(jié)構(gòu)建模和圖神經(jīng)網(wǎng)絡(luò)推理,顯著提升了RAG在復(fù)雜推理任務(wù)中的性能。但還是同樣的問題,訓(xùn)練和推理過程可能需要較高的計(jì)算資源。如果有更高效的訓(xùn)練策略和更大的模型規(guī)模,模型的效率和泛化性將會(huì)得到顯著提高。
LLM橫行的年代,大多數(shù)人言則Agent,事實(shí)確實(shí)如此,LLM的落地一定是Agent,RAG也不例外。代理和 RAG 之間存在著不可分割的關(guān)系,RAG 本身是代理的關(guān)鍵組件,使它們能夠訪問內(nèi)部數(shù)據(jù);相反,代理可以增強(qiáng) RAG 功能,從而產(chǎn)生了所謂的 Agentic RAG,例如 Self RAG 和 Adaptive RAG,因此兩者實(shí)際上你中有我,我中有你的關(guān)系。
這種高級形式的 RAG 允許以受控的方式在更復(fù)雜的場景中進(jìn)行自適應(yīng)更改。要實(shí)現(xiàn) Agentic RAG,代理框架必須具備“閉環(huán)”功能。在 Andrew Ng 的四種代理設(shè)計(jì)模式中,這種“閉環(huán)”能力被稱為反射能力。
Agentic RAG(基于代理的檢索增強(qiáng)生成)代表了RAG技術(shù)的最新發(fā)展方向,通過將人工智能代理(Agent)的自主規(guī)劃與決策能力引入傳統(tǒng)檢索增強(qiáng)生成框架,實(shí)現(xiàn)了對復(fù)雜查詢?nèi)蝿?wù)的高效處理。本文將全面解析Agentic RAG的核心概念、技術(shù)架構(gòu)、優(yōu)勢特點(diǎn)以及實(shí)際應(yīng)用場景,幫助讀者深入理解這一前沿技術(shù)如何通過智能代理的動(dòng)態(tài)編排機(jī)制和多跳推理能力,顯著提升傳統(tǒng)RAG系統(tǒng)在復(fù)雜信息處理任務(wù)中的表現(xiàn)。
Agentic RAG(基于代理的檢索增強(qiáng)生成)是傳統(tǒng)檢索增強(qiáng)生成技術(shù)的高級演進(jìn)形式,它通過引入人工智能代理(Agent)的自主決策能力,使RAG系統(tǒng)從被動(dòng)的信息檢索-生成管道轉(zhuǎn)變?yōu)榫哂兄鲃?dòng)規(guī)劃和反思能力的智能體,本質(zhì)上是一種融合了Agent能力與RAG架構(gòu)的混合系統(tǒng),其核心創(chuàng)新在于將AI智能體的自主規(guī)劃(如路由、行動(dòng)步驟、反思等)能力整合到傳統(tǒng)的RAG流程中,以適應(yīng)更加復(fù)雜的查詢?nèi)蝿?wù)。
Agentic RAG的產(chǎn)生背景正是為了解決傳統(tǒng)RAG在復(fù)雜場景下的這些不足。隨著企業(yè)知識管理需求的日益復(fù)雜化,簡單的問答式RAG已不能滿足實(shí)際業(yè)務(wù)需求。企業(yè)環(huán)境中存在大量異構(gòu)數(shù)據(jù)源(如結(jié)構(gòu)化數(shù)據(jù)庫、非結(jié)構(gòu)化文檔、知識圖譜等),用戶查詢往往需要跨源關(guān)聯(lián)和綜合推理。同時(shí),許多高級任務(wù)還需要結(jié)合外部工具(如計(jì)算器、API服務(wù)等)才能完整解答。這些挑戰(zhàn)促使RAG技術(shù)向更智能、更自主的方向發(fā)展,從而催生了Agentic RAG這一新興范式。
AI Agent 是具有環(huán)境感知、自主決策和行動(dòng)執(zhí)行能力的智能體,能夠基于目標(biāo)動(dòng)態(tài)規(guī)劃行動(dòng)步驟。將這種能力引入RAG系統(tǒng)后,系統(tǒng)能夠自主決定是否需要檢索、選擇哪種檢索策略、評估檢索結(jié)果質(zhì)量、決定是否重新檢索或改寫查詢,以及在必要時(shí)調(diào)用外部工具。這種進(jìn)化使RAG系統(tǒng)具備了感知,決策和行動(dòng)能力。
從系統(tǒng)構(gòu)成角度看,Agentic RAG可被視為RAG工具化的Agent框架。在這種視角下,傳統(tǒng)的RAG管道(檢索器+生成器)被降級為Agent可使用的一種工具,而Agent則負(fù)責(zé)更高階的任務(wù)規(guī)劃與協(xié)調(diào)。這種架構(gòu)轉(zhuǎn)變帶來了設(shè)計(jì)范式的根本變化:不再是”如何改進(jìn)RAG管道”,而是”如何讓Agent更有效地利用RAG工具”,從而打開了更廣闊的設(shè)計(jì)空間和優(yōu)化可能性。
表:傳統(tǒng)RAG與Agentic RAG的核心區(qū)別
Agentic RAG系統(tǒng)的技術(shù)架構(gòu)呈現(xiàn)出多樣化的設(shè)計(jì)范式,從單Agent控制到多Agent協(xié)同的不同實(shí)現(xiàn)方式。與傳統(tǒng)的線性RAG流程不同,Agentic RAG 將檢索與生成過程重構(gòu)為基于智能代理的動(dòng)態(tài)可編排系統(tǒng),通過引入規(guī)劃、反思和工具使用等Agent核心能力,顯著提升了復(fù)雜信息處理任務(wù)的解決能力。
單Agent架構(gòu)模式
單Agent架構(gòu)是Agentic RAG的基礎(chǔ)實(shí)現(xiàn)形式,其核心思想是構(gòu)建一個(gè)具備規(guī)劃能力的 Master 智能體,將各種RAG管道和外部工具作為該 Agent 可調(diào)用的”工具”。在這種架構(gòu)中,傳統(tǒng)RAG的檢索器、生成器等組件被工具化,成為 Agent 執(zhí)行計(jì)劃時(shí)可選擇的資源。當(dāng)用戶查詢進(jìn)入系統(tǒng)后,Master Agent 會(huì)首先分析查詢意圖和復(fù)雜度,然后動(dòng)態(tài)規(guī)劃解決方案,可能包括:決定是否需要檢索、選擇哪種檢索策略(如向量檢索、關(guān)鍵詞檢索或混合檢索)、確定是否需要進(jìn)行多步檢索以及是否需要調(diào)用外部工具等。
單Agent架構(gòu)中的關(guān)鍵組件包括:
單Agent架構(gòu)的優(yōu)勢在于設(shè)計(jì)相對簡單和資源需求較低,適合中等復(fù)雜度的應(yīng)用場景。但當(dāng)面對企業(yè)級復(fù)雜知識環(huán)境(如跨部門多源異構(gòu)數(shù)據(jù))時(shí),單個(gè)Agent可能面臨規(guī)劃負(fù)擔(dān)過重、專業(yè)知識不足等挑戰(zhàn),這時(shí)就需要考慮更高級的多Agent架構(gòu)。
多Agent分層架構(gòu)
多Agent分層架構(gòu)是應(yīng)對企業(yè)級復(fù)雜場景的 Agentic RAG 解決方案,通過引入層級化的 Agent 組織,實(shí)現(xiàn)關(guān)注點(diǎn)分離和專業(yè)化分工。典型的雙層架構(gòu)包含一個(gè)頂層協(xié)調(diào)Agent和多個(gè)專業(yè)領(lǐng)域Agent,每個(gè)下層Agent負(fù)責(zé)特定類型的數(shù)據(jù)源或任務(wù),而頂層Agent則負(fù)責(zé)任務(wù)分解、協(xié)調(diào)和結(jié)果整合。
多Agent架構(gòu)中的典型角色劃分包括:
多Agent架構(gòu)的核心優(yōu)勢在于其卓越的可擴(kuò)展性和專業(yè)分工。新增數(shù)據(jù)源或工具時(shí),只需添加相應(yīng)的專業(yè)Agent而無需修改核心架構(gòu)。同時(shí),每個(gè)Agent可以專注于特定領(lǐng)域,通過精細(xì)化優(yōu)化提供更專業(yè)的服務(wù)。騰訊云開發(fā)者社區(qū)的一篇文章中提到,這種架構(gòu)”既能準(zhǔn)確地解析不同類型的文件,還能利用Agent強(qiáng)大的規(guī)劃和推理能力,面對用戶Query選擇最合適的路由策略和處理方法,大幅提升系統(tǒng)面對海量文檔、跨文檔檢索、全局提煉與總結(jié)等問題時(shí)的處理能力”。
在通信機(jī)制的設(shè)計(jì)上,有中心化通信VS去中心化通信。
中心化通信(Centralized communication),在中心化通信中,存在一個(gè)中心節(jié)點(diǎn),所有智能體都直接與這個(gè)中心節(jié)點(diǎn)進(jìn)行通信。中心節(jié)點(diǎn)負(fù)責(zé)協(xié)調(diào)和集成所有智能體的信息,然后向各個(gè)智能體發(fā)出指令或反饋。中心節(jié)點(diǎn)可以全局地了解所有智能體的狀態(tài)和信息,有助于做出全局最優(yōu)的決策。但是容易出現(xiàn)單點(diǎn)故障,中心節(jié)點(diǎn)的故障可能導(dǎo)致整個(gè)系統(tǒng)的通信癱瘓。
去中心化通信(Decentralized communication),在去中心化通信中,智能體之間直接進(jìn)行通信,沒有中心節(jié)點(diǎn),每個(gè)智能體只與它的鄰居或部分智能體交換信息。有單點(diǎn)故障的風(fēng)險(xiǎn),系統(tǒng)的魯棒性更強(qiáng),同時(shí)可擴(kuò)展性極強(qiáng)。但是沒有全局信息,難以做出全局最優(yōu)的決策。
關(guān)于Multi Agent系統(tǒng)的設(shè)計(jì),又是另外一個(gè)復(fù)雜的 Topic 了,不做贅述。
通過直接多模態(tài)向量化,RAG系統(tǒng)能更自然地處理復(fù)雜現(xiàn)實(shí)數(shù)據(jù),而不僅限于文本世界。實(shí)際選型時(shí)需權(quán)衡計(jì)算成本、領(lǐng)域適配性和實(shí)時(shí)性需求。如GPT-4V、Gemini 1.5的端到端多模態(tài)理解。目前的Multimodal 還是處于發(fā)展期,遠(yuǎn)沒有成熟,問題包括但不限于:
檢索外部知識庫可能引入敏感信息(如專利、隱私數(shù)據(jù)),RAG模型可能被濫用于生成虛假信息或惡意內(nèi)容等等,但是我們這里主要講惡意攻擊和注入。這篇Paper 《TrustRAG: Enhancing Robustness and Trustworthiness in RAG》,提出了一種兩階段防御機(jī)制:首先,利用 K-means 聚類識別檢索文檔中的潛在攻擊模式,基于語義嵌入有效隔離可疑內(nèi)容;其次,通過余弦相似度和 ROUGE 指標(biāo)檢測惡意文檔,并通過自我評估過程解決模型內(nèi)部知識與外部信息之間的差異。
TrustRAG 的主要工作流:
其實(shí)關(guān)于安全這一塊,是一個(gè)非常重要的課題,可以確定的是,LLM一定會(huì)超過單個(gè)碳基生命的智慧。如何做好安全防護(hù),一定是使用者首先要關(guān)注的,比如Deep Mind就有一個(gè)Red Team團(tuán)隊(duì)專門研究大模型安全的課題,這里我們不做過多介紹,后續(xù)可以單獨(dú)作為一個(gè)研究的 Topic。
文章轉(zhuǎn)載自: RAG 2.0 深入解讀
快速提醒:用電子郵件發(fā)送短信獲取航天信息電子發(fā)票接口
如何使用rest api發(fā)送電子郵件
MongoDB 基本使用:工具、API、Spring 集成
DeepSeek R1 × 飛書多維表格賦能教育領(lǐng)域
API接口安全性設(shè)計(jì),項(xiàng)目中該如何保證API接口安全?
引爆排名秘訣!AI+SEO API助力網(wǎng)站優(yōu)化
免費(fèi)測試Kimi,無需api key(秘鑰)
如何獲取Microsoft API Key 密鑰實(shí)現(xiàn)bing搜索分步指南
PyJWT:輕松搞定Token認(rèn)證,讓你的API更安全!