主題: 學習筆記

Context Placement:重要資料放哪裡,AI 才找得到?

資料貼了,回答卻沒用上?從 Context Placement 與 Lost in the Middle,整理資訊位置、長文件排列、對話摘要,以及怎麼分開驗證。

「我剛剛不是有說嗎?」

如果一串對話先討論要不要用資料庫,後來改成只存瀏覽器,中間又聊了幾個暫時不做的功能,回頭找「現在到底決定哪一版」,可能連自己都要翻半天。

這篇接著 Core Prompting Techniques,單獨整理 Sabrina Goldfarb 課程中的 Context Placement。這次想處理的是:必要資料已經有了,要怎麼安排,才方便模型用它回答眼前的問題?

下面的需求文件、提示與預期答案皆為自編,尚未執行模型比較。先把整理方式和檢查條件寫清楚,效果留給實驗回答。

先確認:資料沒進去,還是進去了卻沒用上?

看到模型漏掉某個條件,我會先分清楚是哪一種情況:

情況 先檢查什麼 接著處理什麼
必要內容沒包含在實際輸入中 應用程式送出的完整請求、是否截斷或只帶了摘要 補回必要資料,檢查容量預算
內容有送進去,回答卻沒依據它 模型是否引用正確段落、遺漏哪個條件 比較資訊位置與相關資料的選取方式
同時存在互相矛盾的規則 哪份已核准、哪份已作廢 標記目前有效的決定,清掉歧義

這三種問題都可能讓人覺得「AI 忘記了」,處理方式卻不同。若那段話根本沒送進去,把它在原始文件裡往前搬,也補不回來。若是兩份規則打架,就要先說清楚哪份有效。

容量的概念可以接著看 Token Limits 與 Context Windows。這裡先處理已經能送入的內容。

Lost in the Middle 看到了什麼

課程引用的 Lost in the Middle,在多文件問答與 key-value 擷取實驗中,改變相關資訊的位置。研究觀察到,受測模型的表現往往在資訊靠近開頭或結尾時較好,放在長上下文中間時則下降。

先別急著把整份 prompt 倒過來。這是特定模型與任務下的結果,沒有說「中間的內容一定讀不到」,也沒有替今天使用的模型排出一套通用座位表。

我會把它當成一個值得測的方向:同樣一段重要資料,換個位置,答案會不會不同?先固定其他條件,再來比較。

資料有放進來,接著還要找到這次真正需要的那一段。 · 來源:GIPHY

拿一份提示詞收藏庫的需求來看

假設要請 AI 回答一個小型收藏庫的需求問題,可以先把文件與問題拆開:

參考文件:

REQ-01|已確認的表單需求
使用者可以輸入提示標題與內容,並新增一張卡片。

REQ-02|已確認的儲存需求
本輪使用 localStorage 保存資料。
重新整理後,已儲存的卡片仍須存在。
刪除卡片後,重新整理不能讓它再出現。

REQ-03|本輪範圍
不做帳號、後端 API 或雲端同步。

任務:
只根據以上文件,回答下面三個問題。
每項附上文件編號;找不到依據時,寫「找不到依據」。
1. 這次用什麼保存卡片?
2. 刪除後重新整理,預期看到什麼?
3. 這次需要帳號嗎?

這份提示很短,目的是把問題講清楚,並不會重現論文的長上下文實驗。依文件人工訂出的預期答案是:

問題 預期答案 依據
保存方式 localStorage REQ-02
刪除後重新整理 被刪除的卡片不再出現 REQ-02
是否需要帳號 本輪不做帳號 REQ-03

要求附上文件編號,方便我核對它到底用了哪段資料。編號也可能引錯,還是要對照原文;答案後面多了一個 REQ-02,不代表就能直接蓋章通過。

接著就能保持文件內容與問題相同,只改變三個文件區塊的順序。要測長文件情境,再換成具代表性的長資料,不能拿這個小例子宣稱已解決長上下文問題。

長文件與問題,要怎麼排?

課程建議把關鍵資訊放在前面,必要補充放在後面。Anthropic 的長上下文指引則建議長文件先放,接著才放問題與指令,並建議先找相關引文再作答。

兩者關注的內容與使用情境不同。我會先確認自己要移的是長文件、某一段證據,還是回答要求,再選一個排列方式測試。不能把它們縮成「所有重要的東西一律放最前面」。

文件的來源、版本和狀態也要寫清楚。如果舊提案已作廢,就標記被哪份決定取代。出現在最後一段,只能告訴我們位置在後面,不能拿來判定它已獲核准。

聊到很長時,先整理一份目前版本

如果一串對話已經混進草稿、否決方案與新的決定,我會先整理成一份能核對的摘要。延續前面的例子:

目前任務:完成提示詞收藏庫的本機儲存與刪除。

已確認決定:
- 表單包含標題與內容。來源:REQ-01。
- 資料存入 localStorage。來源:REQ-02。
- 刪除後重新整理,卡片不得復原。來源:REQ-02。

本輪不做:帳號、後端 API、雲端同步。來源:REQ-03。

尚待確認:
- 現有程式是否處理 localStorage 寫入失敗?文件沒有說明。
- 目前尚無實作與瀏覽器測試結果。

接續工作:先讀現有儲存邏輯,再依上述需求實作與檢查。

這份摘要保留了決定、來源和還不知道的事。尤其不能把「應該要這樣」縮成「已經做好了」,不然下一輪就會帶著錯誤前提繼續跑。

另開對話時,可以把這份摘要與必要原文一起帶過去。摘要也要回頭核對,因為壓縮內容時可能漏掉條件。換個聊天室很容易,交接沒交代清楚的問題也會一起搬過去。

整理上下文時,留下現在會用到的內容,也把還沒確認的事標出來。 · 來源:GIPHY

換位置與刪資料,分開測

要知道哪種改動有用,我會先把比較拆開:

比較 調整內容 保持不變
位置 A REQ-01 → REQ-02 → REQ-03 三份文件全文與最後的任務、問題
位置 B REQ-02 → REQ-01 → REQ-03 同上,只把相關的 REQ-02 移到前面
位置 C REQ-01 → REQ-03 → REQ-02 同上,只把 REQ-02 移到後面
精簡或摘要 另開一組比較,刪去無關內容或改用摘要 使用相同問題,另外核對必要事實是否保留

前三組比較的是位置。最後一組連內容都改了,就要另外記錄,不能把效果全算在「搬到前面」身上。

實際測試時,保存完整請求、模型版本與設定,重複測試,檢查三個答案是否正確、來源是否對得上,以及有沒有加入文件沒寫的功能。成本與延遲也一起記錄。

這裡沒有實驗分數。上面的文件順序與摘要,都是待驗證的設計;等拿到重複測試的結果,才知道對這個任務是否有幫助。

參考資料與範圍

來源於 2026-10-16 查閱。本篇整理概念並使用自編需求文件,非課程逐字翻譯。沒有執行模型品質或實作測試;人工預期答案不代表模型實際表現。