一篇模塊化RAG之最新全面系統(tǒng)性綜述
RAG訪問外部知識庫增強了LLMs處理知識密集型任務(wù)的能力,隨著應用場景需求的增加,RAG系統(tǒng)變得更加復雜。傳統(tǒng)的RAG依賴于簡單的相似性檢索,面對復雜查詢和變化多端的文本塊時表現(xiàn)不佳:對查詢的淺層理解、檢索冗余和噪聲。
樸素RAG和高級RAG的案例。面對復雜問題時,兩者都遇到了限制,難以提供令人滿意的答案。盡管高級RAG通過分層索引、檢索前和檢索后的過程提高了檢索精度,但這些相關(guān)文檔并沒有被正確使用。

提出了一種新的模塊化RAG框架,通過將復雜的RAG系統(tǒng)分解為三層架構(gòu)設(shè)計(模塊、子模塊和操作符)以統(tǒng)一和結(jié)構(gòu)化的方式定義RAG系統(tǒng),增強了系統(tǒng)的靈活性和可擴展性,這種框架超越了傳統(tǒng)的線性架構(gòu),采用了集成路由、調(diào)度和融合機制的更先進設(shè)計。
當前模塊化RAG的案例。該系統(tǒng)整合了多樣化的數(shù)據(jù)和更多功能性組件。過程不再局限于線性,而是由多個控制組件控制檢索和生成,使整個系統(tǒng)更加靈活和復雜。

模塊化RAG框架與符號
- RAG系統(tǒng)組成:典型的RAG系統(tǒng)主要由三個關(guān)鍵部分組成:索引(Indexing)、檢索(Retrieval)和生成(Generation)。
- 索引(Indexing):文檔被分割成可管理的塊(chunks),并通過嵌入模型轉(zhuǎn)換成向量,存儲在向量數(shù)據(jù)庫中。這一步驟是系統(tǒng)組織的關(guān)鍵。
- 檢索(Retrieval):使用相同的編碼模型將查詢轉(zhuǎn)換成向量,然后根據(jù)向量相似度篩選出最相關(guān)的文檔塊。
- 生成(Generation):獲取相關(guān)文檔后,將查詢和檢索到的文檔一起輸入到大型語言模型(LLM)中,生成最終答案。
- 模塊化RAG框架:隨著RAG技術(shù)的發(fā)展,系統(tǒng)整合了越來越多的功能組件。模塊化RAG框架包括三個層次,從大到小分別是:
L1 模塊(Module):RAG系統(tǒng)的核心過程。
L2 子模塊(Sub-module):模塊內(nèi)的功能模塊。
L3 操作符(Operator):模塊或子模塊中具體的功能實現(xiàn)。
- RAG Flow:模塊和操作符的排列構(gòu)成了RAG Flow,這是RAG系統(tǒng)的工作流程。RAG Flow可以分解為子功能的圖形表示,在最簡單的情況下,圖形是線性鏈。
- 符號描述:文中提供了一個重要符號的表格,定義了如下符號:

模塊化RAG模塊和操作符
詳細介紹了模塊化RAG框架下的六個主要模塊以及所使用的的具體技術(shù):索引、檢索前處理、檢索、檢索后處理、生成和編排。
三種RAG范式的比較。模塊化RAG從之前的范式中發(fā)展而來,并與當前RAG系統(tǒng)的實際需求相一致。

- 索引(Indexing):
將文檔分割成易于管理的塊,是系統(tǒng)組織的關(guān)鍵步驟。
面臨的挑戰(zhàn)包括內(nèi)容表示不完整、塊相似度搜索不準確和引用軌跡不清晰。
解決方案包括塊優(yōu)化(如調(diào)整塊大小和重疊)、元數(shù)據(jù)附加和結(jié)構(gòu)化組織。
技術(shù)包括:
- 塊優(yōu)化(Chunk Optimization):調(diào)整塊的大小和重疊以優(yōu)化語義信息的捕獲和噪聲的控制。
- 元數(shù)據(jù)附加(Metadata Attachment):為塊附加元數(shù)據(jù),如頁碼、文件名等,以增強檢索的過濾能力。
- 結(jié)構(gòu)化組織(Structure Organization):建立文檔的層次結(jié)構(gòu),如段落和句子的分割,以提高檢索效率。
- 知識圖譜索引(KG Index):使用知識圖譜來組織文檔,明確概念和實體之間的關(guān)系。
- 檢索前處理(Pre-retrieval):
- 改進原始查詢以提高檢索效果,解決諸如查詢表述不清、語言復雜性和歧義等問題。
- 方法包括查詢擴展、查詢轉(zhuǎn)換和查詢構(gòu)造。
- 技術(shù)包括:
查詢擴展(Query Expansion):通過擴展查詢來豐富上下文,提高檢索的相關(guān)性。
查詢轉(zhuǎn)換(Query Transformation):對原始查詢進行改寫或轉(zhuǎn)換以提高檢索的準確性。
查詢構(gòu)建(Query Construction):根據(jù)需要將查詢轉(zhuǎn)換為不同的查詢語言,如SQL或Cypher,以訪問結(jié)構(gòu)化數(shù)據(jù)。
- 檢索(Retrieval):
- 利用強大的嵌入模型在潛在空間中高效表示查詢和文本,建立問題與文檔之間的語義相似性。
- 考慮因素包括檢索器的選擇、檢索器微調(diào)以及檢索效率和質(zhì)量。
- 技術(shù)包括:
檢索器選擇(Retriever Selection):根據(jù)任務(wù)需求選擇合適的檢索器,包括稀疏檢索器、密集檢索器和混合檢索器。
檢索器微調(diào)(Retriever Fine-tuning):對檢索器進行微調(diào)以適應特定領(lǐng)域的數(shù)據(jù)和術(shù)語。
- 檢索后處理(Post-retrieval):
- 對檢索到的文檔塊進行后處理,以更好地利用上下文信息。
- 包括重新排序、壓縮和選擇操作,以提高最終生成答案的質(zhì)量。
- 技術(shù)包括:
重排(Rerank):根據(jù)相關(guān)性對檢索到的文檔塊進行重新排序。
壓縮(Compression):壓縮檢索到的內(nèi)容,以減少噪聲并提高LLM對關(guān)鍵信息的識別。
選擇(Selection):直接移除不相關(guān)或冗余的文檔塊。
- 生成(Generation):
- 使用大型語言模型基于用戶的查詢和檢索到的上下文信息生成答案。
- 考慮因素包括生成器微調(diào)和答案的驗證。
- 技術(shù)包括:
生成器微調(diào)(Generator Fine-tuning):根據(jù)特定領(lǐng)域或數(shù)據(jù)特性對生成器進行微調(diào),以提高生成答案的質(zhì)量。
驗證(Verification):通過知識庫或模型基礎(chǔ)的方法對生成的答案進行驗證,以減少錯誤信息。
- 編排(Orchestration):
- 控制RAG過程的模塊,包括路由、調(diào)度和融合。
- 動態(tài)選擇后續(xù)步驟,根據(jù)前一個結(jié)果進行決策。
- 技術(shù)包括:
路由(Routing):根據(jù)查詢的類型或內(nèi)容將查詢定向到不同的處理流程。
調(diào)度(Scheduling):管理RAG流程中的決策點,如何時進行檢索或生成。
融合(Fusion):整合來自多個分支的信息,以形成一個全面且一致的響應。
模塊化RAG流程及其模式
詳細探討了模塊化RAG系統(tǒng)中的工作流模式,即RAG流程(RAG Flow)及其模式(Flow Pattern)。
RAG Flow的定義:
RAG Flow是模塊和操作符之間的協(xié)作,形成模塊化RAG系統(tǒng)中的工作流程。
通過控制邏輯,操作符可以按照預定的管道執(zhí)行,也可以在必要時執(zhí)行條件、分支或循環(huán)操作。
RAG Flow Pattern:
識別并定義了一組常見的RAG流程模式,這些模式跨越不同的應用領(lǐng)域,展現(xiàn)出高度的一致性和可重用性。
RAG流程模式可以定義為一系列模塊的有序連接,每個模塊包含一組操作符。
- 線性模式(Linear Pattern):
最簡單且最常用的模式,模塊按照固定的順序執(zhí)行。
線性RAG流程模式。每個模塊按固定的順序依次處理。

技術(shù)包括查詢轉(zhuǎn)換(Query Transform Module)、檢索(Retrieval)、重排(Rerank)、生成(Generation)。
例如,RRR(RewriteRetrieve-Read)模型,它在檢索前引入了一個可學習的查詢改寫模塊。
RRR是一種典型的線性流程,它在檢索之前引入了一個可學習的查詢重寫模塊。該模塊基于大型語言模型(LLM)的輸出結(jié)果進行強化學習。

- 條件模式(Conditional Pattern)
根據(jù)不同的條件選擇不同的RAG管道。
通過路由模塊決定流程的下一個模塊。
條件流程模式。存在一個路由模塊,它控制查詢被導向哪個 RAG 流程。通常,不同的流程用于不同的配置,以滿足 RAG 系統(tǒng)的一般要求。

- 分支模式(Branching Pattern)
RAG流程可能有多個并行運行的分支,通常是為了增加生成結(jié)果的多樣性。
分為檢索前分支(Pre-retrieval Branching)和檢索后分支(Post-retrieval Branching)。
檢索前分支模式(Pre-retrieval Branching Pattern):
技術(shù)包括查詢擴展(Query Expansion)、并行檢索(Parallel Retrieval)、生成(Generation)、合并(Merge)。
檢索前分支流程模式。每個分支分別執(zhí)行檢索和生成,然后在最后進行聚合。

檢索后分支模式(Post-retrieval Branching Pattern):
技術(shù)包括單一查詢檢索(Single Query Retrieval)、并行生成(Parallel Generation)、合并(Merge)。
檢索后分支流程模式。只執(zhí)行一次檢索,然后對每個檢索到的文檔塊分別進行生成,隨后進行聚合。

REPLUG中的 RAG 流程,遵循典型的檢索后分支模式。每個檢索到的塊都經(jīng)歷并行生成,然后使用加權(quán)概率集合進行聚合。

- 循環(huán)模式(Loop Pattern)
涉及檢索和生成步驟的相互依賴,通常包括一個調(diào)度模塊來控制流程。
包括迭代檢索(Iterative Retrieval)、遞歸檢索(Recursive Retrieval)、自適應檢索(Adaptive Retrieval)。
循環(huán)流程模式。通常,RAG 系統(tǒng)執(zhí)行多輪檢索和生成。它可以被分類為三種形式:迭代、遞歸和自適應。

ITER-RETGEN是一種典型的迭代結(jié)構(gòu)。在最大迭代次數(shù)的限制內(nèi)執(zhí)行多輪檢索和生成。

ToC的 RAG 流程。這個過程的一個典型特點是,每次遞歸檢索都使用前一步生成的新查詢,從而逐步深化對原始復雜查詢的分析。

自適應檢索:FLARE的RAG流程。生成的臨時答案將進行置信度評估。如果它未達到所需的置信度水平,流程將返回到檢索階段并重新生成。評估標準是通過提示實現(xiàn)的。

自適應檢索:SELF-RAG的RAG流程。首先,它提示 GPT-4 獲取一個合適的指令微調(diào)數(shù)據(jù)集,以微調(diào)部署的開源大型語言模型(LLM)。這允許模型在生成過程中輸出四個特定的令牌,這些令牌用于控制 RAG 流程。

- 調(diào)優(yōu)模式(Tuning Pattern)
RAG不斷整合更多的LLM相關(guān)技術(shù),其中許多組件由可訓練的語言模型組成。
通過微調(diào),可以進一步優(yōu)化組件的性能和與整體流程的兼容性。
包括檢索器微調(diào)(Retriever Fine-tuning)、生成器微調(diào)(Generator Fine-tuning)、雙重微調(diào)(Dual Fine-tuning)。
檢索器微調(diào)模式,主要包括直接的直接微調(diào)(SFT)、添加可訓練的適配器、受語言模型監(jiān)督的檢索和基于大型語言模型(LLM)獎勵的強化學習(RL)。

生成器微調(diào)模式,主要方法包括直接微調(diào)(SFT)、蒸餾以及來自大型語言模型(LLM)/人類反饋的強化學習(RL)。

雙重微調(diào)模式。在這種模式下,檢索器和生成器都參與微調(diào),它們的偏好將被對齊。

最后,PaperAgent團隊也根據(jù)在RAG方面的實踐經(jīng)驗,梳理了一張模塊化RAG全景框架圖,共計8個模塊,36種技術(shù):
PaperAgent-RAG專欄試看:
??https://docs.qq.com/aio/DR0dBWm9WYlJNckxw??

https://arxiv.org/abs/2407.21059
Modular RAG: Transforming RAG Systems into LEGO-like Reconfigurable Frameworks本文轉(zhuǎn)載自??PaperAgent??,作者:PaperAgent ????

















