檢索增強微調(RAFT)簡介 原創
當將大型語言模型(LLMs)集成到各種應用程序中時,通常需要通過檢索增強生成(RAG)為基礎的提示或微調等技術,引入新的信息,如領域特定知識或專有數據。然而,挑戰在于確定將這些新知識灌輸到模型中的最有效方法。檢索增強微調(RAFT)是一種簡單而強大的微調方法,可增強模型在特定領域內以“開放書本”設置回答問題的性能。開放書本是指模型可以參考文檔來回答問題的范式。RAFT的操作方式是通過訓練模型忽略不對回答給定問題有貢獻的檢索到的文檔,從而消除干擾。這是通過準確識別和引用有助于回答手頭問題的相關文檔部分來實現的。此外,RAFT使用思維鏈式響應進一步完善了模型的推理能力。當應用于領域特定的RAG時,RAFT在各種數據集上始終提高了性能,包括PubMed、HotpotQA和Gorilla,為具有領域特定RAG能力的預訓練LLMs提供了有價值的后期訓練增強。
RAFT建立在Retriever Aware Training (RAT)的基礎上,并在RAG應用程序中推廣超出API的范圍。
類比:如何為LLM準備考試???
RAFT是一種通用的微調方法,用于將預訓練的LLM調整到特定領域的RAG設置。這是一個常見的場景,您希望您的LLM回答基于一組文檔的問題,例如企業中的私有文件。這種情況與一般的RAG不同,其中LLM不知道它將在哪個領域(文檔)上進行測試。為了更好地說明這種情況,讓部署和使用LLM的真實世界設置之間進行類比,準備考試。
封閉書本考試 封閉書本考試通常指的是LLMs在考試期間沒有訪問任何額外文檔或參考資料的情況。對于LLMs,這相當于一種情況,例如LLMs被用作聊天機器人。在這種情況下,LLMs依靠預訓練和監督微調中嵌入的知識來回應用戶的提示。
開放書本考試 相反,將開放書本考試設置比作LLM可以參考外部信息來源(例如網站或書的章節)。在這種情況下,通常LLM與檢索器配對,檢索器檢索到k個文檔(或文檔的特定部分),并將其附加到用戶的提示中。只有通過檢索到的這些文檔,LLM才能獲得新知識。因此,LLM在這些設置中的性能,其中它被訓練為通用LLM,很大程度上取決于檢索器的質量以及檢索器如何準確識別最相關的信息片段。
RAFT RAFT專注于一個比一般開放書本考試更狹窄但越來越受歡迎的領域,稱為特定領域的開放書本考試。在特定領域的開放書本考試中,預先知道LLM將在其中進行測試的領域---用于推理。LLM可以使用來自特定領域的任何和所有信息來回應用戶的提示,它已經進行了微調。特定領域的示例包括企業文件、最新新聞、屬于組織的代碼存儲庫等。在所有這些場景中,LLM將用于回答問題,其答案可以在一組文檔(一個小型實際領域)中找到。檢索技術本身對機制幾乎沒有影響(盡管它可能會影響準確性)。本文主要研究這種特定領域的開放書本設置,以及如何使預訓練LLM適應這個特定領域,包括如何使其對檢索到的文檔和干擾因素的數量變化更加健壯。
RAFT類比于開放書本 如何為LLM準備考試?封閉書本 vs. 開放書本 vs. RAFT
RAFT:將語言模型調整為特定領域的RAG ??
檢索感知微調(RAFT)提出了一種新穎的配方,用于準備微調數據,以定制模型適用于特定領域的開放書本設置,相當于領域內的RAG。在RAFT中,準備訓練數據,使每個數據點包含一個問題(Q)、一組文檔(Dk)和從其中一個文檔(D)生成的相應的思維鏈式樣式答案(A)。區分兩種類型的文檔:Oracle文檔(D),即可以從中推導出問題答案的文檔,以及“干擾因素”文檔(Di),其中不包含與答案相關的信息。作為一個實現細節,Oracle文檔不需要是單個文檔,而可以是多個文檔,就像在HotpotQA中的情況一樣。然后,對于數據集中的P%的問題(qi),保留Oracle文檔(di)以及干擾因素文檔(dk-1)。對于數據集中的(1-P)%的問題(qi),不包含Oracle文檔,只包含干擾因素文檔(dk)。然后,使用標準的監督訓練(SFT)技術微調語言模型,訓練它從提供的文檔和問題生成答案。下圖說明了RAFT的高級設計原則。
展示了RAG方法訓練模型在其訓練的文檔集上更好地進行RAG。通過在訓練數據的某些實例中刪除Oracle文檔,迫使模型記憶領域知識。RAFT的訓練數據如下,并且可以在下圖中看到一個示例訓練數據:
P%的數據:Q + D* + D1 + D2 + ... + Dk => A*
1-P%的數據:Q + D1 + D2 + ... + Dk => A*
RAFT的數據訓練和測試配置
還提供了數據集的一個訓練數據示例。這涉及問題、上下文、指令和最終的CoT答案。在答案中,使用##begin_quote##和##end_quote##來表示直接從上下文復制粘貼的引用的開始和結束。發現這是一種有效的方法,可以防止模型產生幻覺,并專注于提供的上下文。
RAFT評估 ??
在實驗中,使用以下數據集來評估模型和所有基線。從流行和多樣化的領域中選擇這些數據集,包括維基百科、編碼/API文檔和醫學問答。
- 自然問答(NQ)、Trivia QA和Hotpot QA是基于維基百科的開放領域問題,主要關注常識(例如電影、體育等)。
- HuggingFace、Torch Hub和TensorFlow Hub來自Gorilla論文提出的APIBench。這些基準主要關注如何根據文檔生成正確的功能性API調用。
- PubMed QA是專門針對生物醫學研究問題回答的問答數據集。它主要關注根據給定文檔集回答醫學和生物學問題。
考慮以下基線進行實驗:
- 具有0-shot提示的LlaMA2-7B-chat模型:這是用于QA任務的常用調整指令的模型,具有清晰的說明但沒有參考文檔。
- 具有RAG的LlaMA2-7B-chat模型(Llama2 + RAG):與前一設置類似,但不同之處在于添加了參考上下文。這是處理特定領域QA任務時最常用的組合。
- 具有0-shot提示的領域特定微調(DSF):在上下文中執行標準的指令微調而不使用文檔。
- 具有RAG的領域特定微調(DSF + RAG):使用RAG為領域特定微調模型配備外部知識。因此,對于模型不知道的“知識”,它仍然可以參考上下文。
RAFT在醫學(PubMed)、通用知識(HotPotQA)和API(Gorilla)基準上的結果。
訓練您自己的RAFT ??
以下是關于如何為RAG應用程序訓練您自己的RAFT模型的簡短教程,從數據集準備到模型微調,最后到模型部署。
數據集準備:提供一個示例來準備RAFT的數據集。數據集包含問題、上下文和答案。上下文是一組文檔,答案是使用GPT-4從其中一個文檔生成的思維鏈式樣式答案。請參閱下面的一個示例。
模型微調:將訓練模型根據問題和提供的上下文輸出CoT答案?;A模型Llama2-7B適用于RAG任務,其中任務需要模型的推理能力、理解語言能力、低延遲推理能力,并且可以輕松適應各種設置。Llama2-7B非常適合許多通用知識問答任務,具有鼓勵數學技能,并且由于其4k的預訓練,可以合理解析相當長的文檔。Llama2-7B還是一個完美的模型,可以在4個A100-40G GPU上進行訓練,并在一個GPU上提供服務。因此,在性能、部署便利性和具有正確許可證的pareto曲線中,LLaMA2模型非常適合RAFT任務。借助Microsoft AI Studio的幫助,用戶也可以探索Llama-13b或70b等其他模型。下面是在Azure AI Studio上顯示的模型微調過程的截圖。
模型部署:一旦模型訓練完成,您可以自由地將其部署在您自己的GPU上(或通過llama.cpp在CPU上);另一種選擇是將其部署在Microsoft AI Studio上。以下圖片展示了在Azure AI Studio上進行模型部署的過程。感謝Meta Llama-2和Microsoft AI Studio的幫助,為企業微調和部署LLMs變得容易,極大地促進了為不同企業部署定制模型。
結論
RAFT是一種旨在增強模型在特定領域內以“開卷”方式回答問題的訓練策略。這種技術展示了一種基于選定文檔集合的問題回答任務的LLMs的微調配方。已經確定了幾個關鍵的設計決策,例如訓練模型與干擾文檔一起,組織數據集以使部分數據缺乏上下文中的oracle文檔,并以鏈式思維的方式從相關文本中直接引用來制定答案。對PubMed、Hotpot QA和Gorilla API Bench的評估凸顯了RAFT的巨大潛力。展望未來,預計領域內檢索增強生成(RAG)將繼續在工業和學術領域引起興趣。與一般的RAG不同,該工作解決了LLMs在使用特定領域知識回答問題的實際場景。與當前趨勢一致,研究結果表明,相比于通用LLM模型,更小、經過微調的模型在特定領域的問題回答任務中表現得同樣出色。
譯自(有刪改):https://gorilla.cs.berkeley.edu/blogs/9_raft.html
本文轉載自公眾號AIGC最前線
