一篇模塊化RAG之最新全面系統性綜述
RAG訪問外部知識庫增強了LLMs處理知識密集型任務的能力,隨著應用場景需求的增加,RAG系統變得更加復雜。傳統的RAG依賴于簡單的相似性檢索,面對復雜查詢和變化多端的文本塊時表現不佳:對查詢的淺層理解、檢索冗余和噪聲。
樸素RAG和高級RAG的案例。面對復雜問題時,兩者都遇到了限制,難以提供令人滿意的答案。盡管高級RAG通過分層索引、檢索前和檢索后的過程提高了檢索精度,但這些相關文檔并沒有被正確使用。
提出了一種新的模塊化RAG框架,通過將復雜的RAG系統分解為三層架構設計(模塊、子模塊和操作符)以統一和結構化的方式定義RAG系統,增強了系統的靈活性和可擴展性,這種框架超越了傳統的線性架構,采用了集成路由、調度和融合機制的更先進設計。
當前模塊化RAG的案例。該系統整合了多樣化的數據和更多功能性組件。過程不再局限于線性,而是由多個控制組件控制檢索和生成,使整個系統更加靈活和復雜。
模塊化RAG框架與符號
- RAG系統組成:典型的RAG系統主要由三個關鍵部分組成:索引(Indexing)、檢索(Retrieval)和生成(Generation)。
- 索引(Indexing):文檔被分割成可管理的塊(chunks),并通過嵌入模型轉換成向量,存儲在向量數據庫中。這一步驟是系統組織的關鍵。
- 檢索(Retrieval):使用相同的編碼模型將查詢轉換成向量,然后根據向量相似度篩選出最相關的文檔塊。
- 生成(Generation):獲取相關文檔后,將查詢和檢索到的文檔一起輸入到大型語言模型(LLM)中,生成最終答案。
- 模塊化RAG框架:隨著RAG技術的發展,系統整合了越來越多的功能組件。模塊化RAG框架包括三個層次,從大到小分別是:
L1 模塊(Module):RAG系統的核心過程。
L2 子模塊(Sub-module):模塊內的功能模塊。
L3 操作符(Operator):模塊或子模塊中具體的功能實現。
- RAG Flow:模塊和操作符的排列構成了RAG Flow,這是RAG系統的工作流程。RAG Flow可以分解為子功能的圖形表示,在最簡單的情況下,圖形是線性鏈。
- 符號描述:文中提供了一個重要符號的表格,定義了如下符號:
模塊化RAG模塊和操作符
詳細介紹了模塊化RAG框架下的六個主要模塊以及所使用的的具體技術:索引、檢索前處理、檢索、檢索后處理、生成和編排。
三種RAG范式的比較。模塊化RAG從之前的范式中發展而來,并與當前RAG系統的實際需求相一致。
- 索引(Indexing):
將文檔分割成易于管理的塊,是系統組織的關鍵步驟。
面臨的挑戰包括內容表示不完整、塊相似度搜索不準確和引用軌跡不清晰。
解決方案包括塊優化(如調整塊大小和重疊)、元數據附加和結構化組織。
技術包括:
- 塊優化(Chunk Optimization):調整塊的大小和重疊以優化語義信息的捕獲和噪聲的控制。
- 元數據附加(Metadata Attachment):為塊附加元數據,如頁碼、文件名等,以增強檢索的過濾能力。
- 結構化組織(Structure Organization):建立文檔的層次結構,如段落和句子的分割,以提高檢索效率。
- 知識圖譜索引(KG Index):使用知識圖譜來組織文檔,明確概念和實體之間的關系。
- 檢索前處理(Pre-retrieval):
- 改進原始查詢以提高檢索效果,解決諸如查詢表述不清、語言復雜性和歧義等問題。
- 方法包括查詢擴展、查詢轉換和查詢構造。
- 技術包括:
查詢擴展(Query Expansion):通過擴展查詢來豐富上下文,提高檢索的相關性。
查詢轉換(Query Transformation):對原始查詢進行改寫或轉換以提高檢索的準確性。
查詢構建(Query Construction):根據需要將查詢轉換為不同的查詢語言,如SQL或Cypher,以訪問結構化數據。
- 檢索(Retrieval):
- 利用強大的嵌入模型在潛在空間中高效表示查詢和文本,建立問題與文檔之間的語義相似性。
- 考慮因素包括檢索器的選擇、檢索器微調以及檢索效率和質量。
- 技術包括:
檢索器選擇(Retriever Selection):根據任務需求選擇合適的檢索器,包括稀疏檢索器、密集檢索器和混合檢索器。
檢索器微調(Retriever Fine-tuning):對檢索器進行微調以適應特定領域的數據和術語。
- 檢索后處理(Post-retrieval):
- 對檢索到的文檔塊進行后處理,以更好地利用上下文信息。
- 包括重新排序、壓縮和選擇操作,以提高最終生成答案的質量。
- 技術包括:
重排(Rerank):根據相關性對檢索到的文檔塊進行重新排序。
壓縮(Compression):壓縮檢索到的內容,以減少噪聲并提高LLM對關鍵信息的識別。
選擇(Selection):直接移除不相關或冗余的文檔塊。
- 生成(Generation):
- 使用大型語言模型基于用戶的查詢和檢索到的上下文信息生成答案。
- 考慮因素包括生成器微調和答案的驗證。
- 技術包括:
生成器微調(Generator Fine-tuning):根據特定領域或數據特性對生成器進行微調,以提高生成答案的質量。
驗證(Verification):通過知識庫或模型基礎的方法對生成的答案進行驗證,以減少錯誤信息。
- 編排(Orchestration):
- 控制RAG過程的模塊,包括路由、調度和融合。
- 動態選擇后續步驟,根據前一個結果進行決策。
- 技術包括:
路由(Routing):根據查詢的類型或內容將查詢定向到不同的處理流程。
調度(Scheduling):管理RAG流程中的決策點,如何時進行檢索或生成。
融合(Fusion):整合來自多個分支的信息,以形成一個全面且一致的響應。
模塊化RAG流程及其模式
詳細探討了模塊化RAG系統中的工作流模式,即RAG流程(RAG Flow)及其模式(Flow Pattern)。
RAG Flow的定義:
RAG Flow是模塊和操作符之間的協作,形成模塊化RAG系統中的工作流程。
通過控制邏輯,操作符可以按照預定的管道執行,也可以在必要時執行條件、分支或循環操作。
RAG Flow Pattern:
識別并定義了一組常見的RAG流程模式,這些模式跨越不同的應用領域,展現出高度的一致性和可重用性。
RAG流程模式可以定義為一系列模塊的有序連接,每個模塊包含一組操作符。
- 線性模式(Linear Pattern):
最簡單且最常用的模式,模塊按照固定的順序執行。
線性RAG流程模式。每個模塊按固定的順序依次處理。
技術包括查詢轉換(Query Transform Module)、檢索(Retrieval)、重排(Rerank)、生成(Generation)。
例如,RRR(RewriteRetrieve-Read)模型,它在檢索前引入了一個可學習的查詢改寫模塊。
RRR是一種典型的線性流程,它在檢索之前引入了一個可學習的查詢重寫模塊。該模塊基于大型語言模型(LLM)的輸出結果進行強化學習。
- 條件模式(Conditional Pattern)
根據不同的條件選擇不同的RAG管道。
通過路由模塊決定流程的下一個模塊。
條件流程模式。存在一個路由模塊,它控制查詢被導向哪個 RAG 流程。通常,不同的流程用于不同的配置,以滿足 RAG 系統的一般要求。
- 分支模式(Branching Pattern)
RAG流程可能有多個并行運行的分支,通常是為了增加生成結果的多樣性。
分為檢索前分支(Pre-retrieval Branching)和檢索后分支(Post-retrieval Branching)。
檢索前分支模式(Pre-retrieval Branching Pattern):
技術包括查詢擴展(Query Expansion)、并行檢索(Parallel Retrieval)、生成(Generation)、合并(Merge)。
檢索前分支流程模式。每個分支分別執行檢索和生成,然后在最后進行聚合。
檢索后分支模式(Post-retrieval Branching Pattern):
技術包括單一查詢檢索(Single Query Retrieval)、并行生成(Parallel Generation)、合并(Merge)。
檢索后分支流程模式。只執行一次檢索,然后對每個檢索到的文檔塊分別進行生成,隨后進行聚合。
REPLUG中的 RAG 流程,遵循典型的檢索后分支模式。每個檢索到的塊都經歷并行生成,然后使用加權概率集合進行聚合。
- 循環模式(Loop Pattern)
涉及檢索和生成步驟的相互依賴,通常包括一個調度模塊來控制流程。
包括迭代檢索(Iterative Retrieval)、遞歸檢索(Recursive Retrieval)、自適應檢索(Adaptive Retrieval)。
循環流程模式。通常,RAG 系統執行多輪檢索和生成。它可以被分類為三種形式:迭代、遞歸和自適應。
ITER-RETGEN是一種典型的迭代結構。在最大迭代次數的限制內執行多輪檢索和生成。
ToC的 RAG 流程。這個過程的一個典型特點是,每次遞歸檢索都使用前一步生成的新查詢,從而逐步深化對原始復雜查詢的分析。
自適應檢索:FLARE的RAG流程。生成的臨時答案將進行置信度評估。如果它未達到所需的置信度水平,流程將返回到檢索階段并重新生成。評估標準是通過提示實現的。
自適應檢索:SELF-RAG的RAG流程。首先,它提示 GPT-4 獲取一個合適的指令微調數據集,以微調部署的開源大型語言模型(LLM)。這允許模型在生成過程中輸出四個特定的令牌,這些令牌用于控制 RAG 流程。
- 調優模式(Tuning Pattern)
RAG不斷整合更多的LLM相關技術,其中許多組件由可訓練的語言模型組成。
通過微調,可以進一步優化組件的性能和與整體流程的兼容性。
包括檢索器微調(Retriever Fine-tuning)、生成器微調(Generator Fine-tuning)、雙重微調(Dual Fine-tuning)。
檢索器微調模式,主要包括直接的直接微調(SFT)、添加可訓練的適配器、受語言模型監督的檢索和基于大型語言模型(LLM)獎勵的強化學習(RL)。
生成器微調模式,主要方法包括直接微調(SFT)、蒸餾以及來自大型語言模型(LLM)/人類反饋的強化學習(RL)。
雙重微調模式。在這種模式下,檢索器和生成器都參與微調,它們的偏好將被對齊。
最后,PaperAgent團隊也根據在RAG方面的實踐經驗,梳理了一張模塊化RAG全景框架圖,共計8個模塊,36種技術:
PaperAgent-RAG專欄試看:
??https://docs.qq.com/aio/DR0dBWm9WYlJNckxw??
https://arxiv.org/abs/2407.21059
Modular RAG: Transforming RAG Systems into LEGO-like Reconfigurable Frameworks
本文轉載自??PaperAgent??,作者:PaperAgent ????
