論文解讀:迄今為止最好的 RAG 技術棧
概述
這篇文章深入探討了 Wang 等人在 2024 年的研究,旨在為構建高效的檢索增強生成(RAG)系統提供最佳實踐建議。文章由 Towards AI 的聯合創始人兼 CTO Louis-Francois 撰寫,分析了 RAG 系統的核心組件與策略。
主要內容摘要
- 查詢分類:通過分類任務決定是否需要進行檢索,確保系統只在必要時檢索外部數據。
- 數據分塊:為數據選擇合適的塊大小至關重要,理想的塊大小在 256 至 512 個 token 之間,有助于減少噪音和提高效率。
- 元數據與混合搜索:元數據(如標題或關鍵詞)與混合搜索(結合語義搜索和傳統關鍵詞搜索 BM25)可顯著提升檢索精度。
- 嵌入模型選擇:挑選適合的嵌入模型,文章推薦使用像 FlagEmbedding 這樣性能與效率均衡的模型。
- 向量數據庫:使用像 Milvus 這樣的高性能向量數據庫來處理大量檢索請求,確保系統的長期穩定性。
- 查詢轉換:在檢索前進行查詢轉換以提高準確性,如通過查詢重寫或分解復雜問題,改進系統的檢索表現。
- 重新排序與文檔打包:在文檔檢索后,通過 reranking 技術提升結果的相關性,并進行文檔重新打包,以優化信息呈現。
- 摘要:生成之前進行文檔摘要,有助于去除冗余信息,降低生成成本。
- 微調生成模型:通過對生成模型進行微調,提高模型處理復雜查詢和去除無關信息的能力。
- 多模態檢索:整合多模態技術處理圖像查詢,并基于類似內容進行檢索,進一步提高系統的響應準確性。
意見
- Wang 等人的研究被認為是 RAG 系統的“洞察金礦”。
- 查詢分類對于確定何時需要檢索至關重要。
- 數據的最佳塊大小介于 256 到 512 個令牌之間,但可能因數據集而異。
- 元數據和混合搜索是高效檢索的首選,而不是 HyDE 等更復雜的方法。
- 建議使用 FlagEmbedding 的 LLM,因為它在性能和大小之間取得了平衡。
- Monot5 是最受歡迎的重新排名模型,因為它在性能和效率之間取得了平衡。
- 建議以“相反”的順序重新打包文檔,以改進 LLM 的生成過程。
- 像 Recomp 這樣的摘要工具對于減少提示長度和成本很有價值。
- 使用相關文檔和隨機文檔的混合來微調生成器有利于處理不相關的信息。
- 多模態檢索是處理文本和圖像的系統的一個重要考慮因素。
- 該論文承認了未來研究的局限性和領域,例如獵犬和發電機的聯合訓練。
探索每個組件
大家早上好!我是 Towards AI 的聯合創始人兼首席技術官 Louis-Francois,今天,我們正在深入研究可能是最好的檢索增強一代 (RAG) 技術?!@要歸功于 Wang 等人在 2024 年的一項出色研究。
這是構建最佳 RAG 系統的見解金礦,我在這里為您分解它。
那么,是什么讓 RAG 系統真正成為頂級的系統呢?是組件,對吧?讓我們回顧一下最好的組件以及它們的工作原理,這樣您也可以使您的 RAG 系統成為頂級系統并獲得多模式獎勵。
圖片
查詢分類
讓我們從 Query Classification
Wang 等人創建了 15 個任務類別,確定查詢是否提供了足夠的信息或是否需要檢索。他們訓練了一個二元分類器來分隔任務,在不需要檢索的地方標記為“sufficient”,在需要檢索時標記為“insufficient”。在此圖像中,黃色表示不需要,紅色表示去獲取一些文檔!
分塊
接下來:分塊。這里的挑戰是為您的數據找到完美的數據塊大小。太長了?您會增加不必要的噪音和成本。太短了?你錯過了上下文。
Wang 等人發現 256 到 512 個標記之間的塊大小效果最好。但請記住,這因數據而異 - 因此請務必運行您的評估!專業提示:使用 small2big(從小塊開始進行搜索,然后移動到較大的塊進行生成),或嘗試滑動窗口以重疊塊之間的標記。
元數據和混合搜索
利用您的元數據!添加標題、關鍵字甚至假設問題等內容。將其與 Hybrid Search
HyDE(生成偽文檔以增強檢索)很酷,可以帶來更好的結果,但效率非常低?,F在,堅持使用 Hybrid Search——它取得了更好的平衡,尤其是在原型設計方面。
嵌入模型
選擇正確的 嵌入模型
你不想要打網球的足球鞋。
來自 FlagEmbedding 的 LLM 最適合這項研究——性能和大小的完美平衡。不太大,也不太小——恰到好處。
請注意,他們只測試了開源模型,因此 Cohere 和 OpenAI 被淘汰出局。否則,Cohere 可能是您最好的選擇。
矢量數據庫
現在是數據庫。對于長期使用,Milvus
查詢轉換
在檢索之前,您必須 轉換 這些用戶查詢!無論是通過 查詢重寫 以使其清晰,還是通過查詢 分解 將復雜問題分解為更小的問題并檢索每個子問題,甚至生成偽文檔(如 HyDE
重新排名
現在我們來談談 Reranking
在這項研究中,monoT5 脫穎而出,成為平衡性能和效率的最佳選擇。它微調 T5 模型,以根據文檔與查詢的相關性對文檔重新排序,確保最佳匹配優先。 RankLLaMA 總體性能最好,但 TILDEv2
文檔重新打包
重新排名后,您需要進行一些 Document Repacking
綜述
然后,在調用 LLM,您希望使用 Summarization
使用 Recomp
微調生成器
最后,您是否應該微調用于生成的 LLM?絕對!使用相關文檔和隨機文檔的混合進行微調可以提高生成器處理不相關信息的能力。它使模型更加健壯,并有助于它給出更好的整體響應。論文中沒有提供確切的比率,但結果很明確:微調是值得的!不過,這顯然也取決于您的域。
多模態
處理圖像?實施多模式檢索。對于文本到圖像,在數據庫中查詢相似圖像可以加快該過程。在圖像到文本中,匹配相似的圖像可檢索準確的預存儲字幕。這一切都與接地氣有關——檢索真實的、經過驗證的信息。
結論
簡而言之,Wang 等人的這篇論文為我們提供了一個構建高效 RAG 系統的堅實藍圖。但請記住,這只是一篇論文,并未涵蓋 RAG 管道的各個方面。例如,獵犬和發電機的聯合訓練沒有被探索,這可能會釋放更多的潛力。由于成本原因,他們也沒有深入研究分塊技術,但這是一個值得探索的方向。
我強烈建議您查看完整的論文以獲取更多信息。我們最近還出版了《Building LLMs for Production》一書,其中充滿了 RAG 和微調見解、技巧和實際示例,可幫助您構建和改進基于 LLM 的系統。該鏈接也位于下面的實體書和電子書版本的描述中。
一如既往,感謝您的閱讀。如果您覺得此分析有幫助或有任何評論,請在下面的評論中告訴我,我們下次見!
引用
用于生產的構建LLMs:https://amzn.to/4bqYU9b
Wang et al., 2024 (論文參考):https://arxiv.org/abs/2407.01219
LLM(嵌入模型):https://github.com/FlagOpen/FlagEmbedding/tree/master/FlagEmbedding/llm_embedder
Milvus (vector database):https://milvus.io/
Liu et al., 2024 (文檔重新包裝): https://arxiv.org/abs/2307.03172
Recomp (摘要工具):https://github.com/carriex/recomp
RagLlmFine Tuning人工智能嵌入
本文轉載自 ??AI大模型世界??,作者: Louis-Francois
