把提示詞貼兩次,準確率就不一樣了
Google Research 用7個模型驗證過的最便宜LLM效能提升方法。不需要額外訓練,不需要提示詞設計,複製貼上就好。
第一次看到這篇論文,我以為是在開玩笑。
把同一段提示詞貼兩次,準確率就會上升?聽起來根本是網路謠言,或是某個人在 Reddit 上亂講的把戲。但那是 Google Research 發的論文,跑了七個 benchmark、測了七個模型,結果是真的。我把它存起來,之後週末拿出來認真看完。
看完之後,我覺得這東西值得好好講清楚。
為什麼 LLM 讀長文會「忘記」問題在哪裡
要理解為什麼重複貼有效,要先知道語言模型怎麼讀東西。
LLM 是從左到右一個 token 一個 token 生成回答的。每個 token 的注意力分佈會受到它前面出現過的 token 影響,越早出現的 token,到生成回答時影響力越弱。這叫做「注意力不對稱」。
實際上的意思是:你給模型一段 2000 字的背景資料,後面接一個問題,模型開始生成回答的時候,注意力大多集中在剛剛看到的問題,前面那大段背景資料的影響力已經被稀釋掉了。
模型並沒有壞,它只是照著結構運作。問題在結構本身。
貼兩次之後發生了什麼
論文的做法非常直接:把整段提示詞(背景加問題)複製一份,直接貼在後面。
輸入變成 [背景 + 問題][背景 + 問題]。
這樣一來,第二次出現的問題裡的 token,可以直接 attend 到第一份背景資料裡的每一個 token,兩邊的距離變近了。同時,第一份背景資料裡的 token,也可以 attend 到第二次出現的問題,補足了它原本欠缺的「這些內容是要用來回答什麼問題」的脈絡。
token 之間的可見性變完整了,模型就比較不會漏掉關鍵資訊。
論文跑的七個 benchmark 裡,這個方法在大多數任務上都有顯著提升,尤其是需要從長篇背景抽取特定資訊的閱讀理解型任務。
貼三次就沒意義了
我看到這裡的時候也想說,那貼三次、四次效果是不是更好?
論文的答案是不。
原因跟推論架構有關。現在的 LLM 推論通常會用 prefill 階段來平行處理輸入,但平行化有上限,輸入越長,prefill 的時間成本不是線性增加,而是會有邊際遞減。兩份輸入換來的注意力改善,遠大於三份換來的。
成本算起來也說不通。本來貼兩次輸入 token 數就翻倍,再貼一次變三倍。但邊際效益從第二份之後就掉下來了,多花的錢沒有對應的準確率回報。
兩份是甜蜜點。
哪些情況沒有效果
這個部分論文說得很清楚,我覺得比「有效」本身更值得記住。
問題本身很短的時候沒有用。 重複的好處來自讓問題 token 能 attend 到更多背景 token。如果你的提示詞本來就只有兩三句話,問題和背景的距離本來就很近,重複一遍沒有改善任何東西,只是增加成本。
只對非推論模式有效。 這一點很重要。如果你用的是 o1、o3、DeepSeek-R1,或任何打開「thinking」模式的模型,重複提示詞沒有幫助。原因是推論模型內部已經有類似機制,它們會在生成最終回答之前反覆重新參照問題,等於自己把重複這件事做掉了。貼兩次給推論模型,只是白白多花輸入費用。
重複的是整段提示詞,不是只有問題。 我自己剛開始看的時候有誤解,以為只要把問題句重複一遍就好。不是的。要整段,包括背景資料,一起貼兩次。只重複問題的效果比完整重複差很多。
成本怎麼算才對
表面上,輸入 token 數乘以二,費用馬上翻倍。但這不是完整的帳。
如果一個任務因為準確率不夠,你需要 retry 或是人工介入修正,那個成本有時候比 2x 輸入費用高很多。用稍微貴一點的輸入換掉不確定性,在很多企業工作流程裡是合理的。
另外,這個技巧不需要任何微調,不需要設計複雜的提示詞結構,不需要等模型廠商推出新版本。你現在就可以試。
這就是為什麼一個看起來很蠢的技巧,實際上值得嚴肅對待。
論文原文在這裡:Prompt Repetition Improves Non-Reasoning LLMs,arXiv 編號 2512.14982,Google Research 出品。如果你想看完整的 benchmark 數據和模型清單,去原文查比我轉述準確。
訂閱電子報
獲取關於我最新專案、文章以及 AI 和 Web 開發實驗的更新。