RAFT:讓語言模型更聰明地用文檔答題
作者注: 本文旨在面向零基礎讀者介紹 UC Berkeley 提出的 RAFT(Retrieval-Augmented Fine-Tuning)方法。它是一種訓練語言模型的新方式,讓模型更好地利用“外部知識”——比如文檔、網頁或數據庫回答問題。
- 無需背景知識,本文將帶你從“開卷考試”的類比出發,逐步理解它的核心理念與實踐效果。
文章目錄
- RAFT:讓語言模型更聰明地用文檔答題
- 一、背景:大模型真的理解文檔了嗎?
- 二、RAFT 是什么?
- 三、一場模擬“開卷考試”
- 四、RAFT 的訓練方法詳解
- 1. 訓練輸入
- 2. 數據構造比例(P%)
- 五、推理鏈與引用機制
- 六、效果評估與實驗結果
- 七、重要發現:干擾文檔不全是壞事
一、背景:大模型真的理解文檔了嗎?
如今的大語言模型(LLM),如 GPT、Claude、LLaMA 等,已具備強大的通用能力。然而,它們在處理 特定領域、基于文檔回答問題 的任務時,表現常常不盡如人意。
為什么?因為它們:
- 要么完全靠記憶作答;
- 要么雖然可以看文檔,但從未學會如何使用它們。
換句話說,它們面對“開卷考試”時,不知道怎么查資料。
二、RAFT 是什么?
RAFT,全稱 Retrieval-Augmented Fine-Tuning(檢索增強微調),是一種專門針對特定領域問答任務的訓練方法。核心思想是:
在訓練階段,給模型配上一些 相關文檔 + 干擾文檔,讓它學會辨別、引用和推理,從而提升真實場景下的答題能力。
RAFT 屬于“后訓練”方法,適用于已有預訓練模型基礎上,通過額外訓練,適配特定文檔集合。
三、一場模擬“開卷考試”
RAFT 使用了一個非常易懂的比喻——“開卷考試”,來說明不同方法之間的差別:
方法類型 | 比喻 | 特點 |
---|---|---|
閉卷模型 | 考試時不能看書 | 模型只靠預訓練知識,答題效果有限 |
傳統 RAG 方法 | 考試時翻書但沒準備 | 模型能看文檔,但不懂如何使用,效果不穩定 |
RAFT 方法 | 考前練習開卷考試 | 模型在訓練階段就學會了用文檔答題,表現更好 |
RAFT 的“準備”包括:
- 學會辨認哪些文檔是“有用的”
- 學會引用文檔內容來回答問題
- 學會寫出有邏輯的、帶有推理鏈(Chain-of-Thought) 的回答
四、RAFT 的訓練方法詳解
RAFT 的訓練數據設計如下:
1. 訓練輸入
每條訓練樣本包括:
- 一個問題(Question, Q)
- 一組文檔(Documents, D?)
- 1~N 篇“黃金文檔”(含有正確信息)
- 若干“干擾文檔”(Distractors)
- 一個推理鏈式答案(Answer, A*)
2. 數據構造比例(P%)
RAFT 有意識地控制黃金文檔的出現比例:
- P% 的樣本包含黃金文檔
- (1-P)% 的樣本僅包含干擾項
這樣做的目的:
- 一方面訓練模型學會從文檔中“找答案”
- 另一方面,保留對問題本身的理解能力(即使沒有黃金文檔,也能作答)
五、推理鏈與引用機制
RAFT 的答案不是簡簡單單的一句話,而是具備結構化的推理過程:
- 引用內容用
##begin_quote##...##end_quote##
包裹 - 這樣訓練出來的模型能寫出更有邏輯、來源清晰的答案
六、效果評估與實驗結果
RAFT 在多個基準任務上進行了測試,包括:
- PubMed QA(醫學問答)
- Hotpot QA(多跳問答)
- Gorilla APIBench(API 使用理解)
結果如下:
模型版本 | Hotpot QA 分數 | HuggingFace 分數 |
---|---|---|
LLaMA2 + RAG | 0.03 | 26.43 |
Domain-Specific + RAG | 4.41 | 42.59 |
RAFT(Ours) | 35.28 | 74.00 |
我們可以看出 RAFT 相比現有方法,優勢非常明顯。
七、重要發現:干擾文檔不全是壞事
訓練中適度加入干擾文檔,反而能提升模型的魯棒性——幫助它識別無關內容而不過度“記憶”答案。
黃金文檔比例 P% 對模型性能的影響 (原文圖 5):
如果你正面臨“模型不會讀文檔”的問題,RAFT 是一個值得嘗試的方案 – 但是訓練代價比較大 (個人級不推薦!)
資源鏈接:
- 論文原文:RAFT: Adapting Language Model to Domain Specific RAG
- 代碼倉庫(包含數據和模型訓練腳本)