又來一個RAG:RankRAG,英偉達RAG新思路
1. 背景
檢索增強生成無疑是當前最熱門的LLM研究領域了,但是傳統RAG存在一些局限性:
? 檢索器容量的限制。考慮到處理效率,現有的RAG一般采用稀疏檢索(比如BM25)或中等規模的嵌入模型(比如Bert)作為檢索器。
? 只選擇前K個文檔。盡管最新的大語言模型擴大了上下文長度的限制,能夠接受更多的上下文作為輸入,但是實際性能會隨著K的增加而迅速達到飽和。比如在長問答任務中,最佳的分塊上下文數量大約是10。雖然更大的K可以提高召回率,但是同時也引入了更多無關的內容,干擾大語言模型生成準確回答。
因此,作者設計了一個新的RAG:RankRAG,利用單一大語言模型來實現高召回率的上下文提取和高質量內容生成。通過對單一大語言模型進行指令調優,使其可以同時進行上下文排序和答案生成,進一步提升LLM在RAG檢索和生成階段排除不相關上下文的能力。
2. RankRAG
RankRAG整體包括兩個階段:指令調優階段、排名與生成綜合指令調優階段。
圖片
2.1 第一階段:指令調優(SFT)階段
指令調優(或監督式微調)可以顯著提升大語言模型指令遵循的能力,從而提高下游任務的零樣本性能。所以,作者先對大語言模型進行指令調優。
總共準備了128K SFT樣本,確保樣本中沒有數據泄露,沒有與評估任務重的數據重疊,并采用多輪對話格式。
第一階段的指令調優數據集包括:公共對話數據集、長篇問答數據集、Chain of Thought數據集以及合成數據集。
2.2 排名與生成的綜合指令調優階段
第一階段的SFT目的是為大模型奠定指令遵循的基礎能力,但是在RAG任務上,這些模型仍然還有提升空間。為了提升這些模型在RAG任務上的性能,作者進行了第二階段的指令調優。第二階段的指令調優包括五個部分:
2.2.1 第一階段的SFT數據
這部分數據的納入是為了保持LLM遵循指令的能力。
2.2.2 富含上下文的QA數據
在數據集中加入多個富含上下文的QA任務數據來加強LLM利用上下文回答問題的能力。采用混合訓練數據集:
- ? 標準的QA和閱讀理解數據集
- ? 對話QA數據集
2.2.3 檢索增強問答數據
引入兩個新數據集,不僅包含標準答案的上下文,還包括通過BM25算法檢索出的最相關上下文。
增強LLM在生成回答時,對無關上下文的抗干擾能力也非常重要,所以作者特別考慮了SQuAD和WebQuestion兩個問答任務數據集。對于每個問題,作者將標準答案的上下文和BM25檢索出的上下文進行融合,確保每個問題都能至少關聯5個上下文。其中部分檢索出的上下文可能是不包含答案的,這些被稱為負樣本。
2.2.4 上下文排名數據
為了使模型具有LLM排名能力,作者采用了大家普遍認可的MS MARCO段落排名數據集。將標準查詢-段落對(q,d+)定義為正樣本,而通過BM25算法挖掘出的硬負樣本段落(q,d-)定義為負樣本。LLM需要根據給定的查詢-段落對生成“真”或“假”的回答,任務指令是“針對問題{question},請判斷該段落是否與問題相關。”
雖然MS MARCO覆蓋了眾多主題,但問題均為單輪簡短句子。然而,針對對話問答的排名數據極為稀缺。
為解決這一局限,將對話問答對重新設計,以生成偽相關對。鑒于每段對話僅關聯一個文檔,將每個文檔切割成150字的段落(d1,d2,...,dn)。計算每個段落di與標準答案間的4-gram召回率,將召回率超過0.5的段落判定為與對話相關,低于0.1的則判定為不相關。每個樣本包含一對問題-上下文,用于排名數據集。
合成后的數據加上開始的MS MARCO數據,一共約50K數據用于本階段的指令微調。
2.2.5 檢索增強型排名數據
為了使模型能夠針對一個問題評估多個上下文的相關性,采用了SQuAD和WebQuestions兩個問答數據集,通過BM25算法,將標準答案上下文與檢索出的最相關上下文相結合,確保每個問題關聯五個上下文。凡包含答案的上下文均被視為相關,訓練LLM識別與問題相關的所有上下文。
2.3 RankRAG 推理流程:檢索-重排-生成三部曲
融入額外的重排環節,RankRAG 的推理流程轉變為三步走策略:檢索-重排-生成,具體步驟如下:
(1) 檢索器 ? 率先在文本庫中篩選出 top-k 個相關上下文。
圖片
(2) RankRAG 模型進而基于上表中的提示,評估問題與這些檢索到的上下文之間的相關性得分,以此作為生成正確答案的概率,隨后對上下文進行重排,精挑細選出 top-k(k'遠小于k)個最為貼切的上下文,作為下一步生成答案的依據。
(3) 精選出的 top-k' 個上下文與問題串聯,再次輸入 RankRAG 模型,以此生成最終的答復。
3. 效果對比
3.1 主要結果
圖片
圖片
圖片
上圖展示了RankRAG與基線在九個數據集上的比較結果。所有結果均在零樣本評估條件下得出(除非特別標注),未附加額外示例。
RankRAG在性能上超越了現有的RAG方法: 以8B模型規模來看,RankRAG持續領先于ChatQA-1.5 8B,后者是最近開源且在眾多RAG基準測試中表現卓越的模型。即使面對參數量多得多的基線模型,RankRAG 8B依然展現出強勁的競爭力。舉例來說,它顯著超越了參數量為其五倍的InstructRetro、參數量為其八倍的RA-DIT 65B,甚至在NQ和TriviaQA任務上超越了參數量為其八倍的Llama3-instruct 70B。參數量更多的RankRAG 70B不僅戰勝了強勁的ChatQA-1.5 70B模型,還大幅超越了以InstructGPT為基礎LLM的先前RAG基線。
RankRAG在更具挑戰性的數據集上取得了更顯著的進步: RankRAG在處理更具挑戰性的QA數據集時,性能提升更為顯著。比如,在長尾QA(PopQA)和多跳QA(2WikimQA)任務中,相較于ChatQA-1.5,實現了超過10%的性能提升。這些結果表明,在挑戰性的開放問答數據集中,當檢索器返回的頂部文檔與答案的相關性不高時,上下文排名能顯著增強性能。今天這篇論文專注于提升QA任務的單次檢索效果。如何有效地將多輪RAG流程與RankRAG結合,是未來研究值得探索的有趣方向。
5.3 組件效果分析
圖片
通過在九個廣泛領域的數據集上以Llama3 8B作為基礎模型,展示了對RankRAG進行的組件切除實驗。總體來看,發現所提出的各個組件均對提升最終性能起到了積極作用。
若去除上下文排名功能,將在所有任務中造成性能下降,這證實了其在篩選與目標問題最密切相關上下文中的關鍵作用。
同時,為指令微調特別設計的檢索增強問答(RQA)和檢索增強排名(RAR)通過輔助模型明確識別相關上下文,在大多數任務中帶來了性能提升。
圖片
性能隨不同檢索器的變化。如上圖,對比了RankRAG和ChatQA-1.5在三個典型任務中搭配不同密集檢索器的表現,特別考慮了DPR與Contriever-MS MARCO這兩種檢索器變體。可以看到,即便初次檢索結果不盡人意,RankRAG在平均性能上依然超越了ChatQA-1.5,幅度超過10%。綜上,RankRAG對于檢索器的選擇展現出了良好的適應性和魯棒性。
5.4 領域特定RAG基準測試的實驗驗證
為驗證RankRAG對專業領域的適應能力,在生物醫學領域的最新RAG基準測試Mirage上進行了實驗。采用MedCPT(Jin等人,2023年)作為檢索器?,并以MedCorp2作為語料庫??。
圖片
上圖展示了RankRAG與基線的實驗結果,即便未針對生物醫學領域進行微調,RankRAG在醫學問答任務上依然表現卓越。特別是RankRAG 8B在性能上超越了醫療領域領先的開源LLM Meditron 70B達6.3%。
此外,RankRAG 70B的性能更是達到了GPT-4的98%以上。充分證明了RankRAG具備快速適應新領域并無需額外訓練的能力。
5.5 細究排名模塊
RankRAG在數據使用上極為高效:
傳統RAG流程的上下文排名方法通常需要一個獨立的重排模型。作者評估了四款在完整MS MARCO段落排名數據集上經過微調的模型(BERT(Glass等人,2022年)/T5(Nogueira等人,2020年)/Llama3(Ma等人,2023年)),一個強大的現成重排模型BGE-ranker,以及兩款OpenAI的GPT系列模型。對于GPT系列,用‘True’標記的概率來代理相關性得分。
圖片
如上表,RankRAG在多數情況下,即使在排名數據量僅為十分之一,也能實現比專用排名模型更好的召回率。此外,RankRAG在大多數任務上仍能超越經過超過100萬個排名對訓練的BGE-ranker。這一優勢可能源于我們模型訓練的適應性,排名數據與一般RAG微調數據高度相似。直接使用ChatQA-1.5進行段落排名會降低性能,這表明在指令微調中納入排名數據的必要性。
作者驗證了上下文排名數據量與最終性能之間的關聯。僅用5k排名數據(約MS MARCO數據集的1%),RankRAG便能取得非常出色的成果,而將排名數據量增加至50k,能帶來額外的顯著增益。這驗證了RankRAG的數據高效性——僅需少量排名數據即可達到高效性能,并在多樣的任務中維持其適應性。
RankRAG的性能與時間效率權衡:
擴大模型規模時需注意的一個細節是,延遲開銷的增加——模型需要對每個樣本進行排名,這會耗費更多時間。
圖片
為了探究時間效率與性能之間的聯系,調整了重排名過程中使用的樣本數k,上圖展示了k值與最終準確性之間的關系。結果表明,即便k值設為20,RankRAG的性能依然超過了未進行重排名的基線模型。當k值從20增加至100,三個任務的完全匹配準確率提升了5.9%至9.1%,而所需時間僅增加了0.9至6.0倍,遠低于人們可能預期的20至100倍的增長。
本文轉載自 ??大語言模型論文跟蹤??,作者:HuggingAGI
