同一条指令,放在长文开头模型照办,塞进结尾它就装没听见——这不是错觉,是注意力分配固有的位置效应。腾讯元宝、Kimi 处理长文档时都会受它影响,本文讲清两头占优的原因与应对摆法。
两头亮中间暗:注意力的偏好
大量评测观察到同一条曲线:模型对开头的命中率最高,结尾次之,中段最弱。机制上的解释包括:开头的信息从第一步起就参与所有后续计算,积累的交互次数多;结尾是最近读入的内容,临近输出自然占便宜。中间的内容既没有先发优势也没有近因优势,容易被稀释。越长的文,中段被稀释得越狠,位置效应随长度放大,几千字时是小事,十几万字时是大事。
| 位置 | 命中率 | 机制解释 |
|---|---|---|
| 开头 | 最高 | 从第一步起参与后续计算,交互次数多 |
| 中段 | 最弱 | 既无先发优势也无近因优势,容易被稀释 |
| 结尾 | 次之 | 最近读入,临近输出占便宜 |
放前还是放后:两种摆放派
一派主张指令放开头,先立规矩,模型带着任务去读正文;一派主张放结尾,紧挨生成位置,临场提醒权重高。实践里两头都放关键要求、中段只放素材,是更稳的摆法。投机解码是怎么验证草稿的那篇讲的生成流程、前缀缓存是怎么命中的那篇的命中条件都提醒一件事:挪位置会影响缓存复用与草稿命中率,性能账和效果账要一起算。上下文压缩是怎么做的那篇的摘要接力,更是直接改写中段,位置效应叠加压缩损失,长对话里的关键要求务必重新强调一遍。
长文本指令摆放自查清单三查
- 关键要求是否同时出现在开头与结尾
- 核心素材是否被埋在中段无人问津
- 压缩后的对话里,老规矩是否重新声明过
- 长文跑完效果不对,先按这份清单查摆放,再怀疑模型能力
长文本放大效应:越挑位置
窗口内几千字时,效应轻微;十几万字时,中段内容几乎要靠运气。约束解码是怎么保证 JSON 格式的那篇的结构化输出遇到长输入时尤其要小心:格式要求写在中段,模型容易漏抄,放开头或结尾稳得多。重复循环是怎么自我强化的那篇讲的复读,也可能被位置效应触发——关键约束没被读到,输出失去方向,开始原地打转。所以长文任务的第一步,是先把重要内容的坐标摆对。
关于位置效应的三个常问问题
- 为什么模型经常漏看文档中间的要求?:注意力分配天然偏开头与结尾,中段权重被稀释;把关键指令挪到两头或重复出现,能明显改善。
- 指令放开头好还是结尾好?:两种摆法各有场景,开头立规矩、结尾做提醒;要求复杂时两头都写,代价是多花一些字数。
- 缩短文本能消除这个现象吗?:能大幅缓解,中段占比越小稀释越弱;配合摘要压缩时注意关键信息别只留在摘要里。
一句话应用:重要的事说两遍——一头一尾各说一遍。再给一个可操作的经验:指令不仅要放对位置,还要做显式标记——用引号、编号或分隔线把关键要求和正文素材隔开,比单纯调整顺序更稳,因为显式边界同样在帮模型划分注意力范围。另外,多轮对话里最早的要求会被后续内容稀释,重要约束不妨隔几轮重申一次。需要注意的是,不同模型的位置偏好并不一致,有的对开头敏感,有的对结尾敏感,迁移提示词时值得用小样本各测一遍,别把一套摆放当成通用真理。两个位置都放最稳妥,但注意别原样重复三遍以上,重复本身也会稀释注意力,两头各一次通常就够了。顺序问题没有万能答案,但有万能方法:拿真实任务各测一次,用结果说话。


