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