一篇模塊化 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
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/LBfw-PC6r4uzhJwBZVqh6Q