復旦發佈:最佳 RAG 方案
摘要
檢索增強生成(RAG)技術在整合最新信息、減輕幻覺以及提升響應質量方面表現出色,特別是在專業領域。儘管許多 RAG 方法被提出以通過查詢依賴檢索來增強大型語言模型,但這些方法仍面臨複雜的實施和較長的響應時間問題。通常,RAG 工作流涉及多個處理步驟,每個步驟可以通過不同的方式執行。本文探討了現有的 RAG 方法及其潛在組合,以確定最佳 RAG 實踐。通過大量實驗,提出了一些部署 RAG 的策略,以平衡性能和效率。此外,還展示了多模態檢索技術如何顯著提高關於視覺輸入的問題解答能力,並通過 “檢索即生成” 策略加速多模態內容的生成。資源可在此處獲取。
RAG 工作流
在這一部分,詳細介紹 RAG 工作流的組件。對於每個模塊,回顧常用方法,並選擇最終管道的默認和替代方法。後續章節將討論最佳實踐。下圖展示了每個模塊的工作流和方法。詳細的實驗設置,包括數據集、超參數和結果,均在附錄 A 中提供。
查詢分類
並非所有查詢都需要檢索增強,因爲大型語言模型(LLMs)本身具有固有能力。雖然 RAG 可以提高信息準確性並減少幻覺,頻繁的檢索可能增加響應時間。因此,從對查詢進行分類開始,以確定是否需要檢索。需要檢索的查詢通過 RAG 模塊處理;其他則由 LLM 直接處理。通常,當需要超出模型參數的知識時,建議進行檢索。然而,檢索的必要性因任務而異。例如,對於一個訓練到 2023 年的 LLM,可以處理 “Sora 是由 OpenAI 開發的” 這一翻譯請求而無需檢索。相反,同一主題的介紹請求則需要檢索以提供相關信息。針對 15 個任務,基於它們是否提供了足夠的信息進行分類,具體任務和示例如下圖所示。對於完全基於用戶提供信息的任務,標記爲“足夠”,不需要檢索;否則,標記爲“不足”,可能需要檢索。訓練了一個分類器來自動化這一決策過程。實驗細節在附錄 A.1 中呈現。後續章節探討了查詢分類對工作流的影響,比較了有無分類的場景。
片段劃分
將文檔分割成較小段落對於提高檢索精度和避免大型語言模型中的長度問題至關重要。此過程可以在不同粒度級別應用,例如標記級、句級和語義級。語義級片段劃分使用 LLM 確定分界點,能保存上下文但耗時。句級片段劃分在保存文本語義和簡潔性之間找到平衡。在本研究中,使用句級片段劃分,平衡簡潔性和語義保存。我們從四個維度對劃分進行研究。
片段大小
片段大小顯著影響性能。較大的片段提供更多上下文,增強理解但增加處理時間。較小的片段提高檢索召回率並減少時間,但可能缺乏足夠的上下文。尋找最佳片段大小需要在忠實性和相關性等指標之間取得平衡。忠實性衡量響應是否產生幻覺或匹配檢索到的文本,相關性評估檢索到的文本和響應是否與查詢匹配。使用 Llamalndex 評估模塊計算上述指標。嵌入模型採用 text-embedding-ada-002,支持長輸入長度。生成模型和評估模型分別選擇了 zephyr-7b-alpha 和 gpt-3.5-turbo。片段重疊大小爲 20 個標記。使用文檔 1yft_2021 的前 60 頁作爲語料庫,然後提示 LLMs 生成約 170 個查詢以供研究不同片段大小的影響。
片段劃分技術
先進的技術如 “小到大” 和滑動窗口,通過組織片段塊的關係,提升檢索質量。小塊用於匹配查詢,而包含小塊及上下文信息的大塊被返回。爲展示先進片段劃分技術的效果,採用 LLM-Embedder 模型作爲嵌入模型。小片段大小爲 175 個標記,大片段大小爲 512 個標記,片段重疊爲 20 個標記。這類技術通過保持上下文並確保檢索到相關信息來提升檢索質量。詳細結果如表 4 所示。
嵌入模型選擇
選擇合適的嵌入模型對於有效的查詢語義匹配和片段塊非常關鍵。使用 FlagEmbedding 的評估模塊,藉助數據集 namespace-Pt/msmarco 和 namespace-Pt/msmarco-corpus,選擇適當的開源嵌入模型。如表所示,LLM-Embedder 與 BAAI/bge-large-en 取得了可比的結果,儘管前者的尺寸是後者的三分之一。因此,選擇 LLM-Embedder 以達到性能和尺寸的平衡。
元數據添加
通過添加如標題、關鍵詞和假設問題之類的元數據來增強片段塊,可以改進檢索,提供更多方式來後處理檢索到的文本,並幫助 LLMs 更好地理解檢索信息。將來會在詳細研究中探討元數據的包含。
向量數據庫
向量數據庫存儲嵌入向量及其元數據,利用各種索引和最近鄰方法,實現高效的文件檢索。影響靈活性、可擴展性以及在現代雲基礎設施中的易於部署。多種索引類型提供優化搜索能力以適應不同數據特性和使用案例。面對使用大型數據集的 LLM 應用,億級向量支持是關鍵。混合搜索結合了向量搜索與傳統關鍵詞搜索,增強了檢索準確性。最終,雲原生能力確保無縫集成、可擴展性和在雲環境中的管理。表 5 詳細比較了五種開源向量數據庫:Weaviate、Faiss、Chroma、Qdrant 和 Milvus。評估表明,Milvus 在各數據庫中表現最佳,滿足所有關鍵標準並優於其他開源選項。
檢索方法
給定用戶查詢,檢索模塊根據查詢和文檔間的相似性從預建語料庫中選擇最相關的文件。相關的生成模型使用這些文件生成響應。表達不佳和缺乏語義信息的查詢可能影響檢索過程。通過使用第 3.2 節中的 LLM-Embedder 作爲查詢和文檔編碼器,評估了三種查詢轉換方法:查詢重寫、查詢分解和僞文檔生成。
-
查詢重寫:
通過改寫查詢以更好地匹配相關文件,提升性能。
-
查詢分解:
基於原始查詢中提出的子問題檢索文件。
-
僞文檔生成:
根據用戶查詢生成假設文檔,並使用假設答案的嵌入檢索類似文件。
近期研究表明,將詞彙搜索與向量搜索結合可以顯著提高性能。在本研究中,使用 BM25 進行稀疏檢索,並使用 Contriever 進行密集檢索,作爲兩個強有力的基線。評估了不同檢索方法在 TREC DL 2019 和 2020 通道排名數據集上的表現。結果表明,監督方法顯著優於非監督方法。結合 HyDE 和混合搜索,推薦 HyDE 爲默認檢索方法。爲了提高效率,混合搜索結合稀疏檢索(BM25)和密集檢索(原始嵌入),在較低延遲下取得突出性能。
重排序方法
在初始檢索之後,採用重新排序階段以增強檢索文檔的相關性,確保最相關信息顯示在列表頂部。利用更精確和耗時的方法有效地重新排序文檔,增加查詢和位於頂端的文檔之間的相似性。在重新排序模塊中考慮兩種方法:DLM 重新排序和 TILDE 重新排序,前者注重性能優化,後者則強調效率:
-
DLM 重新排序:
利用深度語言模型進行重新排序,模型被微調爲對文檔相關性進行 "真" 或 "假" 的分類。
-
TILDE 重新排序:
通過預測模型詞彙表中每個查詢詞的可能性,計算分數。
文檔重新包裝
文檔提供的順序可能影響後續處理的性能。爲解決此問題,在重新排序後集成了一個緊湊的重新包裝模塊,具有三種重新包裝方法:前向、反向和邊緣。Inspired by Liu 等人的研究,實驗證明當相關信息放在輸入的頭部或尾部時,性能最佳,因此也包括了一個 “邊緣” 選項。由於重新包裝方法主要影響後續模塊,將通過測試來選擇最佳重新包裝方法,並在後續章節中討論。
摘要
檢索結果可能包含冗餘或不必要信息,可能阻礙 LLMs 生成準確響應。此外,長提示可能拖慢推理過程。因此,在 RAG 管道中,利用高效方法對檢索到的文檔進行總結非常關鍵。摘要任務可分爲抽取式或生成式。抽取式方法將文本分割成句子,然後根據重要性對其進行評分和排序。生成式壓縮器則從多文檔中合成信息。本文中,因 RAG 檢索與查詢相關的信息,我們專注於基於查詢的方法。評估了這些方法在三個基準數據集上的表現:NQ、TriviaQA 和 HotpotQA。總結性方法的比較結果見表 10。推薦使用 Recomp 工具實現出色性能。儘管 LongLLMLingua 表現欠佳,但其在非訓練數據集上的表現出色,因此,可作爲替代方法。附錄提供了非基於查詢的方法的更多實現細節和討論。
生成器的微調
本節專注於生成器的微調,而檢索器的微調將在未來研究中探索。旨在研究微調的影響,特別是相關或不相關背景對生成器性能的影響。微調損失是生成器的真實輸出的負對數可能性。爲了研究微調的影響,尤其是相關和不相關的背景,定義了dgold
作爲與查詢相關的背景,drandom
作爲隨機檢索到的背景。根據以下方式調整背景的組成:
-
Dg
: 增強的背景由查詢相關的文檔組成。 -
Dr
: 背景包含一個隨機採樣的文檔。 -
Dgr
: 增強的背景由一個相關文檔和一個隨機選擇的文檔組成。 -
Dgg
: 增強的背景包含兩個查詢相關文檔的副本。
將未微調的基礎生成器標記爲Mb
,並將根據相應D
微調的模型標記爲Mg
、Mr
、Mgr
、Mgg
。在多個問答和閱讀理解數據集上微調模型。選用 Llama-2-7B 作爲基礎模型,類似於訓練,模型在驗證集上評估時使用Dg
、Dr
、Dgr
和不檢索的D
。如圖所示,混合相關和隨機文檔訓練的模型Mgr
在提供金色或混合背景時表現最佳。這表明在訓練時混合相關和隨機背景可以增強生成器對不相關信息的魯棒性,同時確保有效利用相關背景信息。
尋找最佳 RAG 實踐
探討了實施 RAG 的最佳實踐。首先,使用第 3 節中爲每個模塊識別的默認實踐。按照圖 1 所示的工作流,逐步優化各個模塊,並選擇最有效的實現最終的總結模塊。基於第 3.8 節,使用微調的 Llama2-7B-Chat 模型,其中每個查詢由少量隨機選擇和相關文檔增強作爲生成器。使用 Milvus 構建一個向量數據庫,包含 1000 萬條英語維基百科文本和 400 萬條醫學數據。還研究了移除查詢分類、重新排序和總結模塊的影響,以評估其貢獻。
綜合評估
在各種 NLP 任務和數據集上進行了廣泛的實驗,以評估 RAG 系統的性能。具體包括:常識推理、事實覈查、開放域 QA、多跳 QA、醫學 QA。評估使用 RAGAs 推薦的指標,包括忠實性、背景相關性、答案相關性和答案正確性。此外,通過計算檢索到的文檔與金色文檔之間的餘弦相似度來衡量檢索相似性。使用準確性作爲常識推理、事實覈查和醫學 QA 的評估指標。對於開放域 QA 和多跳 QA,使用標記級 F1 得分和完全匹配(EM)得分。最終的 RAG 得分通過計算上述五個 RAG 能力的平均值來確定。
結果與分析
實驗結果表明:
-
查詢分類模塊提升了準確性和減少了延遲。
-
檢索模塊中的 “Hybrid with HyDE” 方法雖然達到了最高的 RAG 分數,但計算成本較高,因此建議使用 “Hybrid” 或“Original”方法。
-
重新排序模塊的重要性通過其缺席導致的性能下降得以體現,MonoT5 方法表現最佳,表明其增強檢索文檔相關性方面的有效性。
-
重新包裝模塊的反向配置表現優異,表明更相關的背景貼近查詢位置可以產生最佳結果。
-
摘要模塊中,儘管通過刪除總結模塊可以實現較低延遲,Recomp 仍然是首選,因爲它能夠應對生成器的最大長度限制。
每個模塊對 RAG 系統的整體性能貢獻獨特。查詢分類模塊提高了準確性並縮短了延遲;檢索和重新排序模塊顯著提升系統處理多樣化查詢的能力;重新包裝和總結模塊進一步優化系統輸出,確保高質量響應。
實施 RAG 的最佳實踐
根據實驗發現,建議了兩個分別針對不同要求的 RAG 系統實施實踐:一個專注於性能最大化,另一個平衡效率與效能。
-
最佳性能實踐:
建議包含查詢分類模塊,採用 “Hybrid with HyDE” 方法進行檢索,使用 monoT5 進行重新排序,選擇反向重新包裝,並利用 Recomp 進行總結。
-
平衡效率實踐:
建議包含查詢分類模塊,使用 Hybrid 方法進行檢索,選用 TILDEv2 重新排序,選擇反向重新包裝,並使用 Recomp 進行總結。
多模態擴展
將 RAG 擴展至多模態應用,集成了文本到圖像和圖像到文本的檢索能力,使用大量配對圖像和文本描述作爲檢索來源。這些多模態 RAG 能力提供以下優勢:基於檢索的方法提供經過驗證的多模態材料信息,確保真實性和詳細性,並且通常更爲高效。計劃將這一策略擴展至視頻和語音等其他模態,同時探索高效且有效的跨模態檢索技術。
結論
本研究旨在識別最佳實踐以實施檢索增強生成,從而提高大型語言模型生成內容的質量和可靠性。系統地評估了 RAG 框架中每個模塊的多種潛在解決方案,並推薦了每個模塊的最有效方法。此外,提出了一個綜合評價基準以評估 RAG 系統,並進行了廣泛的實驗以確定在各種備選方案中的最佳實踐。研究結果不僅有助於更深入地理解檢索增強生成系統,還爲未來研究奠定了基礎。
侷限性
在本研究中,評估了不同方法對 LLM 生成器微調的影響。以往研究已證明同時訓練檢索器和生成器的可行性,未來計劃探索這一可能。本研究採用模塊化設計原則,以簡化對最佳 RAG 實施的搜索,從而減少複雜性。由於構建向量數據庫和開展實驗所需的成本巨大,評估僅限於調查了片段劃分模塊內代表性技術的有效性和影響。進一步探索不同片段劃分技術對整個 RAG 系統的影響將是一個有趣的研究方向。同時,雖然討論了對其他模態如語音和視頻的應用,但未來的探索可以將這項研究擴展到更多模態上。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/0m36A3J9veZzhLSV0ExcWA