重點
- Stanford 與 CMU 的研究者(作者含 Chelsea Finn、Aviral Kumar)在 arXiv 發表 Librarian Agents,把「在提問前整理文件庫」當成可以訓練的行為:建構代理先把原始文件改寫成階層式檔案系統,答題代理之後再進去找答案。
- 建構過程寫成馬可夫決策過程,動作只有建立檔案、合併檔案、刪除與停止。用 GRPO 訓練 Qwen3.5-4B 當建構代理,獎勵是凍結的答題代理答對多少。
- BrowseComp-Plus 的 50 題保留測試,答題代理是 Qwen3.5-4B 時正確率 0.75,Gemini 3.1 Flash Lite 時 0.77;最好的檢索基準分別是 0.44 與 0.42。
- 只在 BrowseComp-Plus 上訓練,零樣本用在 BRIGHT 三個領域,pass@1 平均 52.0%,最好的基準 20.8%。提升大部分來自 Stack Overflow 子集。
- 建一次檔案系統約 17.9 萬 token。每個文件庫問 10 題時,換算成每個正確答案,比未訓練的建構代理少用 33.8% 的 token;單看每題 token,訓練後反而更多。
想解決什麼
文件散在大量來源時,常見的檢索增強生成(RAG)每來一個問題就重新搜尋一次,跨文件的關聯每次都要重新找。知識圖譜之類的預先結構化方法可以先做一部分工作,但通常綁定固定的抽取規則,例如只抽命名實體,問題一偏離索引就不好用。
作者注意到一個不對稱:Claude Code 這類 agent 很會在現成的檔案系統裡找東西,卻很少被訓練去「為之後的問題」建一個好找的工作區。Librarian Agents 想訓練的就是後者,並把建構成本攤到同一批文件的多個問題上。
方法
工作區與動作。 初始工作區是放在根目錄下的原始文件。建構代理每一步選一個動作:
CreateFile:從一組原始文件或既有合成檔案整合出新檔,附上來源連結。MergeFiles:把相關的合成檔案合成更高層的摘要或目錄型檔案,形成階層。Delete:移除多餘的合成檔案,原始文件永遠不刪,保留回頭查原文的路徑。Stop:結束建構,交出工作區。
答題代理只能列檔與讀檔,讀完作答並由評分器判對錯。
獎勵。 論文定義的效用是答題正確率減去讀取 token 與讀檔次數的懲罰,再扣掉建構成本。主要實驗把這些懲罰係數都設為 0,只看正確率:
每一步的獎勵是工作區效用的變化,累加起來會望遠鏡式相消,等於最終效用減去初始效用,所以跟只看最終結果的目標等價,又能把功勞分給前面的步驟。每一步都叫答題代理測一次太貴,實際做法是每 8 個建構回合測一次可答性(每條軌跡最多 4 次),獎勵給兩次測試之間的變化,最後再加上最終答題正確與否。用來估獎勵的問題不會給建構代理看,評測題也不會用來建工作區或挑檢查點。
訓練設定。
| 項目 | 設定 |
|---|---|
| 建構代理 | Qwen3.5-4B,LoRA rank 32 |
| 演算法 | GRPO,學習率 ,batch 8,每組 4 條 rollout |
| 訓練資料 | BrowseComp-Plus 680 題,每題一組獨立文件 |
| 建構上限 | 32 回合,每次生成 1,024 token,整條軌跡 60,000 token |
| 寫檔內容 | 由固定的 Qwen3.5-35B-A3B 執行 |
| 長歷史壓縮 | 由固定的 Gemini 3.1 Flash Lite 執行 |
4B 模型負責決定建什麼、合併什麼、刪什麼;檔案內容由另一個固定的 35B MoE 模型寫。
結果
BrowseComp-Plus(50 題保留測試)。
| 答題代理 | Librarian Agents | Embedding | Reranker |
|---|---|---|---|
| Qwen3.5-4B | 0.75 | 0.42 | 0.44 |
| Gemini 3.1 Flash Lite | 0.77 | 0.30 | 0.42 |
未經強化學習的建構代理也比訓練後差很多。論文另外比較了幾種預先計算方法的正確率與建構成本:
| 方法 | 正確率 | 建構成本(token) |
|---|---|---|
| GraphRAG | 0.36 | 11,923 |
| AutoCompaction | 0.04 | 501,637 |
| 建構代理(未訓練) | 0.28 | 127,683 |
| Librarian Agents | 0.77 | 178,926 |
同一批文件重複使用。 作者另外用 Gemini 3.1 Flash Lite 參考 DeepDive 題目,為 50 組文件生成 443 個問題,每組 7 到 10 題:
- 正確率 0.637,未訓練的建構代理 0.242。
- 每題答題階段讀 9,346 token、26.9 個檔案,未訓練版是 1,238 token、2.72 個檔案。
- 假設每組文件被問 20 次,把建構成本攤進去,每題約 1.8 萬 token。
- 每組 10 題時,以「每個正確答案花多少 token」計,比未訓練版少 33.8%(比值 0.662,95% 信賴區間 0.504 到 0.836)。
BRIGHT 零樣本轉移(每領域 50 題,答題代理 Qwen3.5-4B,pass@1)。
| 方法 | AOPS | Biology | Stack Overflow | 平均 |
|---|---|---|---|---|
| BM25 | 30.5 | 17.5 | 9.0 | 19.0 |
| Dense | 31.5 | 19.5 | 11.5 | 20.8 |
| Hybrid | 33.0 | 14.0 | 7.0 | 18.0 |
| Agentic RAG | 28.5 | 17.0 | 6.5 | 17.3 |
| Graph | 12.5 | 5.0 | 1.5 | 6.3 |
| Librarian Agents | 36.0 | 34.5 | 85.5 | 52.0 |
訓練也改變了建構行為。在 BRIGHT 上,訓練後的建構代理平均做出 53.4 個合成檔案、45.4 個群組、8.0 次合併;未訓練版是 4.8、4.2 與 0.6。
跟既有做法比新在哪
- RAPTOR 的階層摘要、GraphRAG 的實體圖與社群摘要、HippoRAG 的圖狀記憶,都靠固定流程或預先定義的結構。Librarian Agents 讓模型自己決定要建哪些檔案與階層,並以下游答題結果訓練這個決定。
- MemGPT 一類的 agent 記憶,處理的是 agent 保留自己的對話歷史。這裡的記憶建在外部文件庫上、事先建好,由另一個 agent 使用。
- 作者把它放在「把計算挪到推論之前」的研究脈絡裡,並宣稱這是第一個把文件庫整理當成策略、為下游答案最佳化的工作。
限制
- 評測規模小。BrowseComp-Plus 只用 50 題保留測試;BRIGHT 用了 3 個領域、150 題,而且是作者把原本的檢索任務改成配有參考答案的生成任務。
- 提升分布不均。BRIGHT 的平均提升主要來自 Stack Overflow(85.5 對最好基準 11.5)。AOPS 是 36.0 對 33.0,兩者的誤差範圍是 ±5.6 與 ±6.4,差距在誤差內。
- 階層本身對正確率幫助有限。結構消融把同一批記憶攤平後,正確率 57.70% 對原本 55.86%,答題時的讀取 token 從 3,635 增加到 5,497;把檔案隨機打亂位置則降到 51.72%。階層主要省的是瀏覽成本,正確率更多取決於合成內容與放對位置。
- 重複使用的問題是合成的。443 題由 Gemini 3.1 Flash Lite 生成,跟其中一個答題代理同一個模型。
- 靜態文件庫。實驗只做靜態語料的問答,文件更新後怎麼維護工作區還沒處理。建構代理要讀很大的檔案脈絡,規模變大時可能受限。合成檔案也可能壓掉大海撈針式問題需要的細節,雖然有來源連結可以回查原文,什麼時候該繞過合成層仍是開放問題。
- 程式碼。論文附有程式碼連結,授權段落寫明程式碼與訓練腳本會以 MIT 授權釋出。