主題: 學習筆記
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 倒過來。這是特定模型與任務下的結果,沒有說「中間的內容一定讀不到」,也沒有替今天使用的模型排出一套通用座位表。
我會把它當成一個值得測的方向:同樣一段重要資料,換個位置,答案會不會不同?先固定其他條件,再來比較。
拿一份提示詞收藏庫的需求來看
假設要請 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 寫入失敗?文件沒有說明。
- 目前尚無實作與瀏覽器測試結果。
接續工作:先讀現有儲存邏輯,再依上述需求實作與檢查。
這份摘要保留了決定、來源和還不知道的事。尤其不能把「應該要這樣」縮成「已經做好了」,不然下一輪就會帶著錯誤前提繼續跑。
另開對話時,可以把這份摘要與必要原文一起帶過去。摘要也要回頭核對,因為壓縮內容時可能漏掉條件。換個聊天室很容易,交接沒交代清楚的問題也會一起搬過去。
換位置與刪資料,分開測
要知道哪種改動有用,我會先把比較拆開:
| 比較 | 調整內容 | 保持不變 |
|---|---|---|
| 位置 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 移到後面 |
| 精簡或摘要 | 另開一組比較,刪去無關內容或改用摘要 | 使用相同問題,另外核對必要事實是否保留 |
前三組比較的是位置。最後一組連內容都改了,就要另外記錄,不能把效果全算在「搬到前面」身上。
實際測試時,保存完整請求、模型版本與設定,重複測試,檢查三個答案是否正確、來源是否對得上,以及有沒有加入文件沒寫的功能。成本與延遲也一起記錄。
這裡沒有實驗分數。上面的文件順序與摘要,都是待驗證的設計;等拿到重複測試的結果,才知道對這個任務是否有幫助。
參考資料與範圍
- Sabrina Goldfarb,Context Placement:課程中的資訊位置與長對話整理建議。原站文字內容標示為 CC BY-NC 4.0,程式範例與練習為 Apache 2.0。
- Liu 等人,Lost in the Middle: How Language Models Use Long Contexts:相關資訊位置的研究。
- Anthropic,Prompting best practices:長文件與問題排列的供應商指引。
來源於 2026-10-16 查閱。本篇整理概念並使用自編需求文件,非課程逐字翻譯。沒有執行模型品質或實作測試;人工預期答案不代表模型實際表現。