长材料的排布与提问顺序
上下文很长时,模型对中段内容的利用率明显低于开头与结尾,这个现象在 Liu 等人 2024 年发表于 TACL 的实验中被称为迷失在中间(Lost in the Middle)。工程上的对策很直接:把长材料放在提示前部,把指令与问题放在后部,让问题紧跟在材料之后出现;多份材料用带编号的标签分别包裹,回答时要求先引用原文再给结论。
排布要点
| 顺序 | 材料在前、问题在后;问题紧邻材料结尾,减少中间隔断 |
|---|---|
| 编号 | 每份材料用带 id 的标签包裹,便于引用与定位 |
| 引用要求 | 先引用依据原文,再给结论;找不到依据写「未提及」 |
| 相关资料位置 | 相关度最高的片段放前部或结尾,避开中段 |
| 分块 | 材料过长时先分块摘要再汇总,不要指望一次读完全文 |
典型使用场景
- 多份文档对比:按 id 分别包裹,要求逐项引用后给差异
- 合同与制度问答:引用条款原文再解释,答案可追溯到条款号
- 长报告要点提取:先分块,再合并去重
- 代码库分析:按文件包裹,问题里指明需要比对的文件范围
- 会议纪要核对:多份纪要并按日期编号,避免结论混淆
推荐排布
推荐排布
<doc id="1">……文档一全文……</doc>
<doc id="2">……文档二全文……</doc>
问题:对比两份文档在「上线时间」与「回滚方案」上的差异。
要求:先在 <quote> 标签内引用依据原文,再给出结论;找不到依据时写「未提及」。
# 材料在前、问题在后;要求引用可显著减少凭印象作答长上下文常见问题
| 现象 | 原因 | 处理 |
|---|---|---|
| 中段内容被忽略 | 长上下文位置偏差 | 调整排序,把关键材料放前部或结尾 |
| 答案无依据 | 未要求引用原文 | 要求先引用再结论,缺依据写「未提及」 |
| 多份材料混淆 | 材料之间没有编号与分隔 | 每份独立标签并带 id |
| 输出被截断 | 材料过长挤占输出预算 | 先分块处理,再合并结果 |
上下文窗口大不等于可用:材料越多,单条信息的注意力被稀释得越厉害,能用分块就用分块。