一篇模塊化 RAG 之最新全面系統性綜述

RAG 訪問外部知識庫增強了 LLMs 處理知識密集型任務的能力,隨着應用場景需求的增加,RAG 系統變得更加複雜。傳統的 RAG 依賴於簡單的相似性檢索,**面對複雜查詢和變化多端的文本塊時表現不佳:**對查詢的淺層理解、檢索冗餘和噪聲。

樸素 RAG 和高級 RAG 的案例。面對複雜問題時,兩者都遇到了限制,難以提供令人滿意的答案。儘管高級 RAG 通過分層索引、檢索前和檢索後的過程提高了檢索精度,但這些相關文檔並沒有被正確使用。

提出了一種新的模塊化 RAG 框架,通過將複雜的 RAG 系統分解爲三層架構設計(模塊、子模塊和操作符)以統一和結構化的方式定義 RAG 系統,增強了系統的靈活性和可擴展性,這種框架超越了傳統的線性架構,採用了集成路由、調度和融合機制的更先進設計

當前模塊化 RAG 的案例。該系統整合了多樣化的數據和更多功能性組件。過程不再侷限於線性,而是由多個控制組件控制檢索和生成,使整個系統更加靈活和複雜。

模塊化 RAG 框架與符號

  1. RAG 系統組成:典型的 RAG 系統主要由三個關鍵部分組成:索引(Indexing)、檢索(Retrieval)和生成(Generation)。

  2. 索引(Indexing):文檔被分割成可管理的塊(chunks),並通過嵌入模型轉換成向量,存儲在向量數據庫中。這一步驟是系統組織的關鍵。

  3. 檢索(Retrieval):使用相同的編碼模型將查詢轉換成向量,然後根據向量相似度篩選出最相關的文檔塊。

  4. 生成(Generation):獲取相關文檔後,將查詢和檢索到的文檔一起輸入到大型語言模型(LLM)中,生成最終答案。

  5. 模塊化 RAG 框架:隨着 RAG 技術的發展,系統整合了越來越多的功能組件。模塊化 RAG 框架包括三個層次,從大到小分別是:

  1. RAG Flow:模塊和操作符的排列構成了 RAG Flow,這是 RAG 系統的工作流程。RAG Flow 可以分解爲子功能的圖形表示,在最簡單的情況下,圖形是線性鏈。

  2. 符號描述:文中提供了一個重要符號的表格,定義瞭如下符號:

模塊化 RAG 模塊和操作符

詳細介紹了模塊化 RAG 框架下的六個主要模塊以及所使用的的具體技術:索引、檢索前處理、檢索、檢索後處理、生成和編排

三種 RAG 範式的比較。模塊化 RAG 從之前的範式中發展而來,並與當前 RAG 系統的實際需求相一致。

  1. 索引(Indexing):
  1. 檢索前處理(Pre-retrieval):
  1. 檢索(Retrieval):
  1. 檢索後處理(Post-retrieval):
  1. 生成(Generation):
  1. 編排(Orchestration):

模塊化 RAG 流程及其模式

詳細探討了模塊化 RAG 系統中的工作流模式,即 RAG 流程(RAG Flow)及其模式(Flow Pattern)。

RAG Flow 的定義:

RAG Flow 是模塊和操作符之間的協作,形成模塊化 RAG 系統中的工作流程。

通過控制邏輯,操作符可以按照預定的管道執行,也可以在必要時執行條件、分支或循環操作。

RAG Flow Pattern:

識別並定義了一組常見的 RAG 流程模式,這些模式跨越不同的應用領域,展現出高度的一致性和可重用性。

RAG 流程模式可以定義爲一系列模塊的有序連接,每個模塊包含一組操作符。

最簡單且最常用的模式,模塊按照固定的順序執行。

線性 RAG 流程模式。每個模塊按固定的順序依次處理。

技術包括查詢轉換(Query Transform Module)、檢索(Retrieval)、重排(Rerank)、生成(Generation)。

例如,RRR(RewriteRetrieve-Read)模型,它在檢索前引入了一個可學習的查詢改寫模塊。

RRR 是一種典型的線性流程,它在檢索之前引入了一個可學習的查詢重寫模塊。該模塊基於大型語言模型(LLM)的輸出結果進行強化學習。

根據不同的條件選擇不同的 RAG 管道。

通過路由模塊決定流程的下一個模塊。

 條件流程模式。存在一個路由模塊,它控制查詢被導向哪個 RAG 流程。通常,不同的流程用於不同的配置,以滿足 RAG 系統的一般要求。

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 流程,遵循典型的檢索後分支模式。每個檢索到的塊都經歷並行生成,然後使用加權概率集合進行聚合。

涉及檢索和生成步驟的相互依賴,通常包括一個調度模塊來控制流程。

包括迭代檢索(Iterative Retrieval)、遞歸檢索(Recursive Retrieval)、自適應檢索(Adaptive Retrieval)。

循環流程模式。通常,RAG 系統執行多輪檢索和生成。它可以被分類爲三種形式:迭代、遞歸和自適應。

ITER-RETGEN 是一種典型的迭代結構。在最大迭代次數的限制內執行多輪檢索和生成。

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

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

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

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