你的 RAG Agent 一直在重複查同樣的東西——Adobe 這篇論文用 test-time trick 就修好了
Test-Time Strategies for More Efficient and Accurate Agentic RAG你有沒有觀察過 agentic RAG 系統跑 multi-hop 問題時的行為?它搜了一次,拿到一些段落,然後再搜一次——結果拿回來的東西跟第一次幾乎一模一樣。它不知道自己已經看過這些資料了,就這樣一圈一圈地繞,token 燒掉一堆,答案品質卻沒變好。Adobe Research 的這篇論文就是在處理這個問題,而且解法意外地簡單——不用重新訓練模型,只在推論時加兩個模組就搞定。
🔍 問題出在哪
先講背景。Search-R1 是目前 agentic RAG 的代表性框架,核心想法是讓模型「想一步、查一步」地迭代推理。理論上很美,實際跑起來有兩個明顯的毛病:
第一,重複檢索。模型不記得自己查過什麼,所以同一份文件可能被撈出來三四次。每次都要花 token 去處理,但完全沒有新資訊。
第二,上下文整合不良。就算撈到了對的文件,模型也不一定能把其中的關鍵資訊「消化」進推理過程。原始文件塞進 prompt 裡就是一大段冗長的文字,模型得自己從裡面挑重點——它經常挑不好。
這兩個問題疊在一起,結果就是:查了很多輪,但每一輪的邊際收益很低。
🛠️ 兩個 test-time 模組
論文提出的解法直接針對這兩個問題,而且完全不動模型權重:
第一個是 contextualization 模組。每次檢索完之後,用一個外部 LLM(他們用 GPT-4.1-mini)把原始文件「蒸餾」成跟當前問題相關的精華摘要。這些摘要會累積在一個 memory cache 裡,下一輪檢索時模型看到的不是原始冗長文本,而是已經整理好的上下文。想像成你有個助理,每次幫你查完資料後先畫重點,而不是把整本書丟給你。
第二個是去重模組。它會記錄所有已經看過的文件 ID,下次檢索如果撈到重複的,就自動替換成排名次高的新文件。每輪固定回傳 3 篇不重複的文件。
他們還測了兩個模組組合使用的版本——先去重再 contextualize。
📊 結果有點反直覺
在 HotpotQA 和 Natural Questions 上的實驗結果:
→ 單用 contextualization:EM 準確率從「0.464」升到「0.490」(+5.6%),平均搜尋次數從「2.39」降到「2.14」(-10.5%)
→ 單用去重:EM 升到「0.478」,但搜尋次數反而增加到「2.50」
→ 兩者組合:EM「0.480」,搜尋次數「2.15」
最有趣的發現是:去重模組居然會讓搜尋次數變多。仔細想想也合理——當你強制把模型已經看過的文件換掉時,新文件不一定比舊的更有用。模型反而因為少了原本有用的上下文,需要多搜幾輪才能收斂到答案。
而 contextualization 之所以能同時提升準確率又減少搜尋次數,我猜是因為精煉後的摘要讓模型更容易判斷「我已經知道夠多了,可以停了」。
🤔 我的看法
這篇論文最吸引我的點是它的「輕量級」——完全不用重訓模型,只在推論時插入模組。對已經部署了 agentic RAG 系統的團隊來說,這幾乎是可以直接試的改動。
不過有幾個地方我持保留態度。
他們只測了 500 個問題。這是為了控制 API 成本,可以理解,但統計上的置信度不太夠。論文裡 Figure 2 的 confidence interval 其實有重疊,某些條件下的差異可能不顯著。
contextualization 模組依賴 GPT-4.1-mini 做摘要。這等於在每一輪檢索後都要多呼叫一次外部 LLM。雖然 mini 便宜,但你本來想省 token,結果又多花了一層 API 成本。在 latency 敏感的場景下,這個 trade-off 值不值得需要自己算。
另一個沒被討論到的問題是:memory cache 會一直累積。如果問題特別複雜,需要 10 輪以上的搜尋,cache 本身會變得很長。這時候模型能不能有效利用一個很長的 cache?論文沒有測這種極端情況。
話說回來,「不用重訓就能提升 5.6%」這個價值主張是真的有說服力。如果你正在跑 multi-hop RAG 而且被重複檢索問題困擾,Section 3.1 的 contextualization 設計值得仔細看——概念簡單,實作門檻也不高。
📄 論文:https://arxiv.org/abs/2603.12396
你有沒有觀察過 agentic RAG 系統跑 multi-hop 問題時的行為?它搜了一次,拿到一些段落,然後再搜一次——結果拿回來的東西跟第一次幾乎一模一樣。它不知道自己已經看過這些資料了,就這樣一圈一圈地繞,token 燒掉一堆,答案品質卻沒變好。Adobe Research 的這篇論文就是在處理這個問題,而且解法意外地簡單——不用重新訓練模型,只在推論時加兩個模組就搞定。
🔍 問題出在哪
先講背景。Search-R1 是目前 agentic RAG 的代表性框架,核心想法是讓模型「想一步、查一步」地迭代推理。理論上很美,實際跑起來有兩個明顯的毛病:
第一,重複檢索。模型不記得自己查過什麼,所以同一份文件可能被撈出來三四次。每次都要花 token 去處理,但完全沒有新資訊。
第二,上下文整合不良。就算撈到了對的文件,模型也不一定能把其中的關鍵資訊「消化」進推理過程。原始文件塞進 prompt 裡就是一大段冗長的文字,模型得自己從裡面挑重點——它經常挑不好。
🛠️ 兩個 test-time 模組
論文提出的解法完全不動模型權重:
第一個是 contextualization 模組。每次檢索後,用 GPT-4.1-mini 把原始文件「蒸餾」成跟當前問題相關的精華摘要,累積在 memory cache 裡。想像成你有個助理,每次查完資料先畫重點,而不是把整本書丟給你。
第二個是去重模組。記錄所有看過的文件 ID,下次撈到重複的就自動替換成排名次高的新文件。
📊 結果有點反直覺
→ 單用 contextualization:EM 準確率 +5.6%,搜尋次數 -10.5% → 單用去重:EM +3%,但搜尋次數反而增加 → 兩者組合:EM +3.4%,搜尋次數 -10%
最有趣的是去重模組居然讓搜尋次數變多。仔細想也合理——強制換掉已看過的文件,新的不一定更有用,模型反而因為少了有用的上下文,得多搜幾輪才能收斂。
而 contextualization 能同時提升準確率又減少次數,我猜是因為精煉後的摘要讓模型更容易判斷「我已經知道夠了,可以停了」。
🤔 我的看法
最吸引我的是它的「輕量級」——完全不用重訓,直接插在現有系統上就能用。
不過 contextualization 每輪都要多呼叫一次外部 LLM。你本來想省 token,結果又多花了一層 API 成本。latency 敏感的場景要自己算 trade-off。
另外他們只測了 500 個問題,confidence interval 有重疊。統計上嚴謹度不太夠。
話說回來,「不用重訓就能提升 5.6%」這個價值主張是真的有說服力。如果你正在跑 multi-hop RAG 而且被重複檢索問題困擾,Section 3.1 的 contextualization 設計值得看——概念簡單,實作門檻也不高。
📄 論文:https://arxiv.org/abs/2603.12396
#GenAI #RAG #Agent #TestTime #SearchR1 #AdobeResearch #LLM