模塊化RAG:RAG新范式,像樂高一樣搭建 精華
1. RAG系統的發展歷史與問題
RAG(檢索增強生成)通過訪問外部知識庫,檢索增強生成(RAG)為 LLMs 提供了關鍵的上下文信息,極大地提升了其在知識密集型任務上的表現。RAG 作為一種增強手段,已在眾多實際應用場景中廣泛運用,涵蓋知識問答、推薦系統、客戶服務以及個人助手等領域。
RAG 技術的發展可歸結為三個階段:
? 起初,檢索增強技術被引入,提升預訓練語言模型在知識密集型任務上的表現。比如:
Retro 通過檢索增強優化了預訓練的自回歸模型。
Atlas 則運用了檢索增強的少樣本微調手段,使語言模型能適應各類任務。
IRcot 通過融合思維鏈和多步檢索流程,進一步豐富了推理階段的推理過程。
? 第二階段,隨著大型語言模型(LLM)的語言處理能力大幅提升,檢索增強技術開始充當補充額外知識和提供參考的途徑,以減少幻覺。例如:
? RRR 改進了重寫階段
? LLMlingua 去除了檢索所得文檔塊中的冗余標記。
? 隨著 RAG 技術的持續進步,研究愈發精細且集中,實現了與圖神經網絡和微調技術等其他技術的創新融合。整體流程也更趨靈活,比如利用大型語言模型主動確定檢索和生成的時機 。
幾乎每一篇討論RAG的論文都會討論RAG存在的問題。
RAG 發展初期,其核心框架由索引、檢索和生成構成,這種范式被稱作樸素 RAG。隨著任務復雜程度和應用需求的提升,樸素 RAG 的局限性愈發凸顯。
圖片
如上圖所示,樸素RAG主要依賴于塊的簡單相似性,在應對復雜查詢和具有顯著變異性的塊時,表現欠佳。
樸素 RAG 存在的問題主要包括:
1)對查詢的理解不夠深入。查詢和文檔塊之間的語義相似度并非總是高度一致。僅依靠相似度計算進行檢索,缺乏對查詢與文檔間關系的深度探究。
2)檢索存在冗余和噪聲。將所有檢索到的塊直接輸入到 LLMs 并非總是有益。研究表明,過多的冗余和噪聲信息可能會干擾 LLM 對關鍵信息的識別,從而增加生成錯誤和幻覺響應的風險。
為了克服以上局限,大家提出了高級RAG,高級RAG注重優化檢索階段,旨在提升檢索效率,并強化對檢索塊的利用,典型策略涵蓋預檢索處理和后檢索處理。例如,采用查詢重寫使查詢更清晰、具體,進而提高檢索的精準度,對檢索結果進行重新排序以增強 LLM 識別和利用關鍵信息的能力。
盡管高級RAG有所改進,但是仍然與實際應用與需求之間存在差距:隨著 RAG 技術的發展,用戶期望提高,需求持續演變,應用設置也變得更為復雜。例如,異構數據的整合以及對系統透明度、控制和可維護性的新需求。
為達成更精準和高效的任務執行,現代 RAG 系統正逐步融合更復雜的功能,比如以知識圖譜的形式構建更精細的索引庫,通過查詢構建方法整合結構化數據,以及運用微調技術讓編碼器更好地適應特定領域的文檔。
在流程設計方面,當前的 RAG 系統已超越傳統的線性檢索生成范式。研究人員采用迭代檢索獲取更豐富的上下文,利用遞歸檢索處理復雜查詢,以及借助自適應檢索提供整體的自主性和靈活性。這種流程上的靈活性顯著增強了 RAG 系統的表達力和適應性,使其能更好地適應各類應用場景。然而這使得RAG系統的架構越來越復雜,越來越多的新問題不斷出現:
?復雜數據源集成:RAG 不再局限于單一的非結構化文本數據源類型,而是拓展至涵蓋諸如表格之類的半結構化數據以及像知識圖譜這樣的結構化數據。獲取來自多個來源的異構數據,能夠為系統賦予更豐富的知識背景以及更可靠的知識驗證能力。
可解釋性、可控性和可維護性方面的新需求:隨著系統復雜度的提升,系統維護和調試變得更具挑戰。此外,當問題出現時,必須迅速鎖定需要優化的特定組件。
組件的選擇與優化:更多的神經網絡融入 RAG 系統,需要挑選適宜的組件以滿足特定任務和資源配置的需求。而且,新的組件雖提升了 RAG 的效能,但也帶來了新的協作工作要求。確保這些模型按預期運行并高效協同,以提升整體系統性能,這一點至關重要。
工作流的編排與調度:組件可能需要依照特定順序執行,在某些條件下并行處理,甚至由 LLM 根據不同的輸出進行判定。對工作流進行合理規劃,對于提高系統效率和達成預期成果至關重要。
為了應對以上這些問題,今天這篇論文作者提出了模塊化 RAG 架構。
2. 什么是模塊化RAG架構?
圖片
在現代計算系統中,模塊化正成為一種趨勢。能夠增強系統的可擴展性和可維護性,并通過流程控制實現高效的任務執行。模塊化 RAG 架構分為三個層級:
? 頂層聚焦于 RAG 的關鍵階段,其中每個階段都視作一個獨立的模塊。該層級不僅繼承了高級 RAG 范式的主要流程,還引入了一個編排模塊來調控 RAG 流程的協同。
? 中間層由每個模塊內的子模塊組成,進一步細化和優化功能。
? 底層由基本操作單元——操作符構成。
圖片
在模塊化 RAG 框架內,RAG 系統能夠以計算圖的形式呈現,其中節點代表特定的操作符。模塊化 RAG 是在 RAG 先前發展的基礎上演化而來的。這三個范式(樸素RAG、高級RAG和模塊化RAG)之間的關系是繼承與發展的關系。高級 RAG 是模塊化 RAG 的一種特殊情形,而樸素 RAG 是高級 RAG 的一種特殊情形。
3. 六大模塊
模塊化RAG包括六個主要模塊:索引、預檢索、檢索、后檢索、生成和編排。
3.1 索引(Indexing)
索引指的是把文檔分割為可管理的塊的過程,是組織系統的關鍵步驟。
索引面臨著三個主要難題。
?1. 內容表述不完整。
塊的語義信息受分割方式影響,致使在較長的語境中重要信息的丟失或被掩蓋。
?2. 塊相似性搜索不準確。
隨著數據量增多,檢索中的噪聲增大,導致頻繁與錯誤數據匹配,使得檢索系統脆弱且不可靠。
?3. 參考軌跡不明晰。
檢索到的塊可能來自任何文檔,沒有引用痕跡,可能出現來自多個不同文檔的塊,盡管語義相似,但包含的卻是完全不同主題的內容。
3.1.1 塊優化
塊的大小以及塊之間的重疊,在 RAG 系統的整體有效性中起著關鍵作用:
? 較大的塊能捕捉更多的上下文,但也會產生更多噪聲,需要更長的處理時間和更高的成本。
? 而較小的塊可能無法完整傳達必要的上下文,不過噪聲較小。
滑動窗口:在滑動窗口中使用重疊塊能增強語義轉換。這種方法也存在一些局限性,如上下文大小控制不精準、單詞或句子可能被截斷以及缺乏語義考量等。
增加元數據:塊可以用元數據(比如頁碼、文件名、作者、時間戳、摘要或相關問題)進行豐富。這些元數據允許進行篩選檢索,縮小搜索范圍。
從小到大:將用于檢索的塊和用于合成的塊區分開。較小的塊能提高檢索的準確性,較大的塊能提供更多的上下文。一種方法是檢索較小的總結塊,并參考其較大的父塊。或者,可以檢索單個句子及其周邊的文本。
3.1.2 結構組織
增強信息檢索的一種有效方式是為文檔構建層次結構。通過構建塊結構,RAG 系統能夠加快相關數據的檢索和處理。
分層索引:在文檔的分層結構中,節點按父子關系排列,并與塊相連接。每個節點都存儲著數據摘要,有助于快速遍歷數據,并協助 RAG 系統確定要提取哪些塊。這種方法還能減輕因塊提取問題產生的錯覺。構建結構化索引的方法主要包括:
?1. 基于文檔中的段落和句子分割的結構。
?2. 基于 PDF、HTML 和 Latex 中固有結構。
?3. 基于文本語義識別和分割的語義。
KG 索引:使用知識圖(KGs)來構建文檔有助于通過厘清概念和實體之間的聯系來保持一致性,降低不匹配錯誤的風險。還能將信息檢索轉化為語言模型可理解的指令,提高檢索的準確性并實現上下文連貫的響應。這提升了 RAG 系統的整體效率。
3.2 預檢索(Pre-retrieval)
樸素 RAG 的一大主要挑戰在于它直接將用戶的原始查詢當作檢索的基礎。制定精確清晰的問題頗具難度,欠妥的查詢會致使檢索效果欠佳。此模塊的主要挑戰包含:
? 1)查詢措辭不當。問題本身復雜,語言組織欠佳。
? 2)語言的復雜性與歧義性。語言模型在應對專業詞匯或含義多樣的模糊縮寫時常常遭遇困境。比如,它們或許無法判別 LLM 指的是大型語言模型還是法律語境中的法學碩士。
3.2.1 查詢擴展
將單個查詢拓展為多個查詢,豐富了查詢內容,為彌補特定細微差異的缺失提供了更多上下文,從而確保生成答案的最佳相關性。
多查詢:借助提示工程通過大型語言模型來擴展查詢,而且并行執行。這些擴展經過精心設計以保障多樣性和覆蓋度。不過,這種方式可能會淡化用戶的原始意圖。為減輕這一情況,可指示模型給予原始查詢更大的權重。
子查詢:通過分解和規劃復雜問題,會生成多個子問題。具體而言,可以采用從少到多的提示來將復雜問題分解為一系列更簡單的子問題。依照原始問題的結構,生成的子問題能夠并行或順序執行。另一種方法涉及使用驗證鏈(CoVe)。擴展后的查詢由大型語言模型進行驗證,以達成減少幻覺的效果。
3.2.2 查詢轉換
依據轉換后的查詢而非用戶的原始查詢進行檢索和生成。
重寫(Rewrite):原始查詢在現實場景中的檢索常常存在不足。為解決此問題,可以提示大型語言模型進行重寫。也可運用專門的較小模型來達成此目的 。**淘寶中查詢重寫方法的實施顯著提升了長尾查詢的召回效果,促使 GMV 增長 **。
HyDE:為彌合問題與答案之間的語義差距,它在回應查詢時構建假設文檔(假設答案),而非直接搜索查詢。它側重于從答案到答案的嵌入相似性,而非尋求針對問題或查詢的嵌入相似性。此外,它還包含反向 HyDE,為每個塊生成假設查詢,并專注于從查詢到查詢的檢索。
回退提示(Step-back Prompting):原始查詢被抽象為一個高級概念問題(回退問題)。在 RAG 系統中,回退問題和原始查詢均用于檢索,且將它們的結果相結合來生成語言模型的答案。
3.2.3 查詢構建
除文本數據外,諸如表格和圖形數據等越來越多的結構化數據正被融入 RAG 系統。為適配各類數據類型,重構用戶的查詢很有必要。這涉及將查詢轉化為其他查詢語言以訪問替代數據源,常見方法有 Text-to-SQL 或 Text-to-Cypher 等。結構化查詢語言(如 SQL、Cypher)常與語義信息和元數據結合,用于構建更復雜的查詢。
3.3 檢索(Retrieval)
檢索過程在 RAG 系統中舉足輕重,提升檢索效果需考慮的三個主要方面包括檢索效率、質量以及任務、數據和模型的對齊。
3.3.1 檢索器選擇
隨著 RAG 技術的廣泛應用,嵌入模型的發展勢頭正盛。除基于統計的傳統模型和基于編碼器結構的預訓練模型外,在大型語言模型上微調的嵌入模型也展現出強大的能力。然而,它們往往參數更多,導致推理和檢索效率欠佳。故而,依據不同任務場景選擇合適的檢索器至關重要。
稀疏檢索器(Sparse Retriever):用統計方法將查詢和文檔轉化為稀疏向量。其優勢在于處理大型數據集時效率高,只關注非零元素。但在捕捉復雜語義方面,可能不如密集向量有效。常見方法包括 TF-IDF 和 BM25。
密集檢索器(Dense Retriever):使用預訓練的語言模型(PLMs)為查詢和文檔提供密集表示。盡管計算和存儲成本較高,卻能提供更復雜的語義表示。典型模型有 BERT 結構的 PLMs,如 ColBERT,以及多任務微調模型,如 BGE 和 GTE 。
混合檢索器(Hybrid Retriever ):是同時使用稀疏和密集檢索器。兩種嵌入技術相互補充,以提高檢索效果。稀疏檢索器能提供初始篩選結果。此外,稀疏模型增強了密集模型處理含罕見實體查詢的零樣本檢索能力,從而增強系統的穩健性。
3.3.2 檢索器微調
在上下文可能與預訓練語料庫有差異的情況下,尤其是在醫療保健、法律等具有大量專有術語的高度專業化領域。雖然這種調整需要額外付出努力,但能大幅提高檢索效率和領域對齊度。
監督微調(Supervised Fine-Tuning,SFT):基于有標記的領域數據微調檢索模型通常借助對比學習來實現。這涉及縮短正樣本間的距離,同時拉大負樣本間的距離。
LM 監督檢索器(LM-supervised Retriever,LSR):與直接從數據集中構建微調數據集不同,LSR 借助 LM 生成的結果作為監督信號,在 RAG 流程中對嵌入模型進行微調。
適配器(Adapter):有時,對大型檢索器進行微調可能成本很高,尤其是在處理像 gte-Qwen 這類基于 LLMs 的檢索器時。在這種情況下,通過融入一個適配器模塊并進行微調可以緩解此情況。添加適配器的另一個好處是能夠更好地與特定的下游任務相適配 。
3.4 檢索后
將所有檢索到的塊直接輸入到 LLM 并非最佳選擇,對塊進行后處理有助于更好地利用上下文信息。主要的挑戰包括:
? 1)中間內容丟失(Lost in the middle)。像人類一樣,LLM 往往只記得長文本的開頭或結尾,而遺忘中間部分 。
? 2)噪聲/反事實塊(Noise/anti-fact chunks)。檢索到的有噪聲或事實上相互矛盾的文檔可能會影響最終的檢索生成 。
? 3)上下文窗口(Context Window)。盡管檢索到了大量相關內容,但大型模型中上下文信息長度的限制導致無法涵蓋所有這些內容。
3.4.1 重新排序
在不改變其內容或長度的情況下對檢索到的塊進行重新排序,以提升更關鍵文檔塊的可見性。
規則基重新排序:依照某些規則計算指標來對塊進行重新排序。常見的指標包括:多樣性、相關性和 MRR(Maximal Marginal Relevance,最大邊際相關性) 。其思路是減少冗余并增加結果的多樣性。MRR 基于查詢相關性和信息新穎性的組合標準為最終的關鍵短語列表選取短語。
模型基重新排序:利用語言模型對文檔塊重新排序,通常依據塊與查詢之間的相關性。重新排序模型已成為 RAG 系統的重要組成部分,相關模型技術也在不斷迭代升級。重新排序的范圍還擴展到了多模態數據,比如表格和圖像 。
3.4.2 壓縮
在RAG流程中,人們普遍認為,盡可能多地檢索相關文檔,并將它們串聯起來形成冗長的檢索提示,是有益的。但這種認知其實是個誤區。過多的上下文信息可能會帶來噪聲,影響大型語言模型(LLM)捕捉關鍵信息的能力。為了解決這個問題,通常采用壓縮和篩選檢索內容的方法。
LLMLingua:利用經過對齊和訓練的小語言模型,比如GPT-2 Small或LLaMA-7B,可以從提示中識別并剔除不重要的標記,將其轉化為一種對人類來說晦澀難懂,但對LLMs卻易于理解的形式。這種方法提供了一種直接而實用的提示壓縮方式,無需對LLMs進行額外訓練,同時保持了語言的完整性和壓縮比的平衡。
3.4.3 選擇
與壓縮文檔內容不同,選擇是直接移除無關的文檔塊。
選擇性上下文:通過識別并剔除輸入上下文中的冗余內容,可以精煉輸入,從而提升語言模型的推理效率。在實際操作中,選擇性上下文根據基礎語言模型計算的自信息來評估詞匯單元的信息量。通過保留自信息更高的內容,這種方法提供了一種更簡潔、高效的文本表示方式,且不會影響其在多樣化應用中的表現。然而,這種方法忽略了壓縮內容與目標語言模型以及用于提示壓縮的小語言模型之間的相互依賴性。
LLM-Critique:另一種直接而有效的方法,是在生成最終答案前,讓LLM評估檢索到的內容。這允許LLM通過LLM批評機制,過濾掉相關性不高的文檔。例如,在Chatlaw中,LLM被引導自我推薦相關法律條款,以評估其相關性。
3.5 生成(Generation)
利用LLM根據用戶的查詢和檢索到的上下文信息生成答案。選擇一個符合任務需求的合適模型,考慮微調需求、推理效率和隱私保護等因素。
3.5.1 生成器微調
除了直接使用LLM外,根據場景和數據特征進行有針對性的微調,可以帶來更好的效果。這也是使用本地部署LLMs的一個顯著優勢。
指令微調(Instruct-Tuning):當LLMs在特定領域缺少數據時,可以通過微調為其提供額外的知識。通用的微調數據集可以作為第一步。微調的另一個好處是能夠調整模型的輸入和輸出,例如,使LLM適應特定的數據格式,并根據指令以特定風格生成響應。
強化學習(Reinforcement learning):通過強化學習來讓大型語言模型(LLM)的輸出與人類或檢索器的偏好相契合,是一種頗具潛力的方法。例如,對最終生成的答案進行手動標注,然后借助強化學習給予反饋。除了與人類的偏好達成一致,與微調模型和檢索器的偏好相符合也是可行的。
雙重微調(Dual Fine-tuing):同時對生成器和檢索器進行微調,以實現它們偏好的一致。一種典型的方式,如 RA-DIT,利用 KL 散度來對齊檢索器和生成器之間的評分函數。
3.5.2 驗證(Verification)
盡管 RAG 提升了大型語言模型生成答案的可靠性,但在眾多場景中,它需要將幻覺出現的概率降至最低。因此,可以通過額外的驗證模塊來篩除不符合要求標準的響應。常見的驗證方法包含基于知識庫的和基于模型的。
知識庫驗證:通過外部知識直接對大型語言模型生成的響應進行驗證。通常,先從響應中提取特定的陳述或三元組。而后,從經過驗證的知識庫(如維基百科或特定的知識圖譜)中檢索相關證據。最后,將每個陳述與證據逐步比對,以判定該陳述是得到支持、被駁斥還是信息不足。
基于模型的驗證:運用小型語言模型來驗證大型語言模型生成的響應。給定輸入問題、檢索到的知識和生成的答案,訓練一個小型語言模型來判別生成的答案是否正確反映了檢索到的知識。此過程被設定為一道選擇題,驗證器需要判斷答案是否反映了正確答案。如果生成的答案未正確反映檢索到的知識,可迭代地重新生成答案,直至驗證器確認答案正確。
3.6 編排(Orchestration)
編排涉及管理 RAG 過程的控制模塊。與傳統固定流程的僵化方式不同,RAG 如今在關鍵節點納入決策,并依據先前的結果動態選擇后續步驟。這種自適應和模塊化的能力是模塊化 RAG 的顯著特征,使其有別于更為簡單的樸素和高級 RAG 范式。
3.6.1 路由
面對不同的查詢,RAG 系統會路由到為不同場景定制的特定管道,這是為應對各種情況而設計的多功能 RAG 架構的基本特性。需要一個決策機制,依據來自模型的輸入或補充的元數據,來確定將啟用哪些模塊。針對不同的提示或組件采用不同的路由。
3.6.2 調度
RAG 系統在復雜性和適應性方面不斷演進,能夠借助復雜的調度模塊來管理流程。調度模塊在模塊化 RAG 中發揮著關鍵作用,能識別需要外部數據檢索的關鍵節點,評估響應的充分性,并決定是否需要進一步的調查。它通常用于涉及遞歸、迭代和自適應檢索的場景,確保系統能就何時停止生成或啟動新的檢索循環做出明智決策。
規則判斷(Metadata routing):后續步驟由一組既定規則支配。通常,系統通過評分機制評估生成答案的質量。繼續或停止該過程的決策取決于這些分數是否超過某些預定閾值,這些閾值通常與單個token的置信水平有關,接受 的條件是其中的所有令牌必須具有大于或等于閾值的相關概率。若不滿足此條件,系統會重新生成新答案。
LLM 判斷(Semantic routing)。LLM 獨立決定后續的行動。有兩種主要方式來實現這種能力:
? 第一種方式利用 LLM 的上下文學習能力,并通過提示工程進行判斷。這種方式的一個顯著優點是無需對模型進行微調。然而,判斷輸出的格式取決于 LLM 對所提供指令的遵循情況。
? 第二種方式涉及 LLM 生成特定token,通過微調來啟動有針對性的行動。這種技術源自 Toolformer ,已被集成到像 Self-RAG 這樣的框架中。這使得對 LLM 的行動有了更直接的控制機制,增強了系統對對話上下文中特定觸發因素的響應能力。不過,它需要生成大量符合要求的指令集來微調 LLM。
知識驅動的調度策略(Knowledge-guide schedulin):突破了基于規則的方法的局限,也不再完全依賴大型語言模型(LLM)來控制流程,而是采用了一種更為靈活的中間策略——知識引導的調度。通過知識圖譜的強大功能,引導檢索和生成過程。從知識圖譜中提取與問題相關的信息,構建一個由邏輯上相互關聯的節點組成的推理鏈,每個節點都承載著解決問題的關鍵信息。基于這一推理鏈的節點信息,可以分別進行信息檢索和內容生成。整合這種方法,不僅提升了問題解決的效率和精確度,也使得提供的解釋更加清晰明了。
3.6.3 融合
隨著RAG進程的發展,已經超越了單一的線性流程,經常需要擴大檢索范圍或通過探索多條流水線來增加多樣性。在擴展到各個分支之后,融合模塊有效地整合了信息,確保了全面且連貫的響應。融合模塊的作用不僅僅是合并答案,還要確保最終輸出內容豐富,并且能夠反映出問題的多維度特性。
LLM融合(LLM fusion):將多分支的信息聚合起來最直接的方法之一是利用LLMs的強大功能來分析和整合不同分支的信息。然而,這種方法在處理超出LLM上下文窗口限制的長答案時也面臨挑戰。為了解決這個問題,通常的做法是先對每個分支的答案進行總結,提取關鍵信息,然后再將其輸入到LLM中,以確保即使在長度受限的情況下也能保留最重要的內容。
加權集成(Weighted ensemble ):從多個分支生成的不同標記的加權值,以實現對最終輸出的全面選擇。權重是根據文檔與輸入查詢之間的相似性得分來確定的。權重通過使用softmax函數來計算,確保了權重的歸一化,并且總和為一。
互反排名融合(RRF ,Reciprocal Rank Fusion):將多個檢索結果的排名合并成一個統一的列表。它采用定制的加權平均方法來提高整體的預測性能和排名精度。優勢在于其動態權重分配,這種分配是由分支之間的相互作用所決定的。在模型或來源的異質性特別顯著的場景中,RRF尤其有效,它可以顯著提高預測的準確性。
4. RAG 流與流模式
模塊化的 RAG 流能夠分解為子函數的圖。通過控制邏輯,運算符能夠在預設的管道中執行,同時在必要時進行條件、分支或循環操作。在最簡單的情形下,該圖為一個線性鏈。
4.1 線性模式(Linear Pattern)
圖片
常見的線性 RAG 流在預檢索階段涉及查詢轉換模塊(例如重寫或 HyDE 運算符),并在檢索后階段運用重新排序。重寫 - 檢索 - 讀取(RRR)是一種典型的線性結構。
圖片
如上圖所示,查詢重寫模塊 te 是在 T5-large 上微調的較小的可訓練語言模型,在強化學習的背景下,重寫器的優化被形式化為馬爾可夫決策過程,LLM 的最終輸出作為獎勵。檢索器采用稀疏編碼模型,BM25。
4.2 條件模式(Conditional Pattern)
圖片
具有條件結構的 RAG 流涉及依據不同條件選取不同的 RAG 管道,如上圖所示。管道的選擇是通過路由模塊實現的,該模塊決定流中的下一個模塊。
例如,對于與嚴肅問題、政治事務或娛樂主題相關的問題,對大型語言模型生成的響應的容忍度各不相同。這些路由流在檢索源、檢索過程、配置、模型和提示等方面常常存在差異。
4.3 分支(Branching)
在許多情況下,RAG 流系統可能存在多個并行運行的分支,通常是為了增加生成結果的多樣性。
預檢索分支化(多查詢并行檢索):
圖片
后檢索分支化(單查詢并行生成):
圖片
REPLUG 展現了一種典型的后檢索分支化架構,它預測了每個分支上每個標記的概率。通過加權可能性的集成,各分支結果被綜合起來,最終生成的輸出用于通過反饋機制對檢索器進行微調,這個檢索器被稱為Contriever。
圖片
4.4 循環模式(Loop Pattern)
具有循環結構的 RAG 流,是模塊化 RAG 的一項重要特性,涵蓋相互依存的檢索與生成步驟,也包含用于流程控制的調度模塊。
圖片
循環模式可進一步劃分為迭代、遞歸和自適應(主動)檢索方式。
4.4.1 迭代檢索(Iterative retrieval)
單次的檢索和生成或許無法有效處理需要大量知識的復雜問題,所以RAG 中能采用迭代方法,包含固定數量的檢索迭代。
圖片
迭代檢索的一個典型示例為 ITER-RETGEN (如上圖),它對檢索增強生成和生成增強檢索進行迭代。檢索增強生成基于所有檢索到的知識針對任務輸入給出響應。在每次迭代中,ITER-RETGEN 借助前一次迭代的模型輸出作為特定情境來輔助檢索更多相關知識。循環的終止由預先設定的迭代次數決定。
4.4.2 遞歸檢索(Recursive retrieval)
與迭代檢索不同,遞歸檢索的顯著特點在于其對前一步驟的明確依賴以及檢索的不斷深入。通常,它遵循樹狀結構,并且具備清晰的終止機制作為遞歸檢索的退出條件。
圖片
在 RAG 系統中,遞歸檢索通常涉及查詢變換,依靠每次檢索時新重寫的查詢。遞歸檢索的一個典型實現如 ToC,涉及遞歸執行 RAC(遞歸增強澄清,Recursive Augmented Clarification),從初始的模糊問題(AQ,ambiguous question)逐步將子節點插入到澄清樹中。在每個擴展步驟,依據當前查詢對段落進行重新排序以生成明確的問題(DQ,disambiguous Question)。當達到最大有效節點數或最大深度時,對樹的探索便告結束。一旦構建好澄清樹,ToC 收集所有有效節點并生成一個全面的長文本答案來解決 AQ。
4.4.3 自適應(主動)檢索(Adaptive (Active) retrieval)
隨著 RAG 的發展,逐漸從被動檢索轉向了自適應檢索的出現,也就是主動檢索,這在一定程度上得益于 LLM 的強大能力。它與 LLM 代理有著相同的核心概念。RAG 系統能夠主動確定檢索的時機,并決定何時結束整個流程并得出最終結果。依照判斷標準,這可進一步細分為基于提示和基于調整的方法。
4.4.3.1 基于提示(Prompt-base)
圖片
基于提示的方法借助提示工程來掌控流程并引導 LLM。一個典型的實現案例是 FLARE 。其核心觀念在于,LLM 僅在缺乏必要知識時才進行檢索,從而避免在增強的 LM 中出現不必要或不恰當的檢索。FLARE 會迭代生成下一個臨時句子,并檢查是否存在低概率標記。若有,系統便會檢索相關文檔并重新生成句子。
4.4.3.2 基于微調(Tuning-base)
基于調整的方法涉及微調 LLM 以生成特殊標記,進而觸發檢索或生成。這一概念可追溯至 Toolformer ,其中特定內容的生成有助于調用工具。在 RAG 系統中,此方法用于控制檢索和生成步驟。
圖片
一個典型例子是 Self-RAG。給定輸入提示和先前的生成結果,首先預測特殊標記“檢索”是否有助于通過檢索來增強繼續生成。然后,若需要檢索,模型會生成一個評判標記來評估檢索到的段落的相關性,以及一個評判標記來評估響應中的信息是否得到檢索到的段落的支持。最后,一個評判標記評估響應的整體效用,并選取最優結果作為最終輸出。
4.5 微調模式(Tuning Pattern)
RAG 持續與更多與 LLM 相關的技術相融合。在模塊化 RAG 中,許多組件由可訓練的語言模型構成。通過微調,能夠進一步優化組件的性能以及與整體流程的兼容性。
微調階段的三種主要模式,即檢索器微調、生成器微調以及雙重微調。
4.5.1 檢索器微調
圖片
在 RAG 流程中,微調檢索器的常見方法如上圖,其中包括:
? 1.對檢索器進行直接的監督微調。構建專門用于檢索的數據集,并對密集檢索器進行微調。例如,使用開源檢索數據集或依據特定領域數據構建一個。
? 2.添加可訓練的適配器模塊。有時,直接微調 API 基礎嵌入模型(如 OpenAI Ada-002 和 Cohere)是行不通的。引入適配器模塊能夠增強數據的表示。此外,適配器模塊有助于更好地與下游任務對齊,無論是針對特定任務(如 PRCA )還是通用目的(如 AAR )。
? 3.LM 監督檢索(LSR)。依據 LLM 生成的結果對檢索器進行微調。
? 4.LLM 獎勵 RL。將 LLM 輸出結果作為監督信號。采用強化學習使檢索器與生成器對齊。整個檢索過程以生成馬爾可夫鏈的形式拆解。
4.5.2 生成器微調
圖片
在RAG流程中,對生成器進行微調的幾種主要方法包括:
? 直接監督式微調(Direct supervised fine-tuning):利用外部數據集進行微調,能夠為生成器注入新知識,并且還能定制化輸入輸出格式。通過設定問答模式,大型語言模型(LLM)能夠理解特定的數據格式,并按照指令進行輸出。
? 蒸餾(Distillation):在本地部署開源模型時,一種簡單有效的優化手段是利用GPT-4批量創建微調數據,以此提升開源模型的性能。
? 基于LLM/人類反饋的強化學習(RL from LLM/human feedback):通過最終生成的答案反饋進行強化學習,不僅可以利用人類的評估,還能借助強大的LLMs作為評價的裁判。
4.5.3 雙重微調
RAG系統中的一大特色是能夠同時對檢索器和生成器進行微調。系統微調的核心在于檢索器與生成器之間的協同配合。例如,RA-DIT就是一個典范,它對LLM和檢索器都進行了微調。LM-ft組件負責更新LLM,以提高在檢索增強指令輔助下得出正確答案的可能性;而R-ft組件則負責更新檢索器,以減少檢索器得分分布與LLM偏好之間的KL散度差異。
本文轉載自??大語言模型論文跟蹤??,作者:HuggingAGI

















