Lost in the Middle:位置与长度的双重衰减
「中间会忘」是长上下文圈引用率最高的结论,但 U 形曲线只是 2023 年的一半故事:2025 年约 19.4 万次调用的复验里,长度效应在 18 个模型上稳健成立,位置效应却在 NIAH 上消失了。本篇把现象、争论、机制(attention sink)与工程对策串成一条线,帮你把这条结论用在对的地方。
20 篇文档摆进上下文,只挪动含答案那篇的位置,准确率就跟着走出一条 U 形曲线。「Lost in the Middle」大概是长上下文方向被引用最多的结论,但也最常被讲浅。转述往往只剩一句:信息放中间,模型会忘。
U 形曲线:位置决定的准确率
2023 年,Liu et al. 在 TACL 2023 做了同一组操纵,覆盖多文档问答(multi-document QA)与 key-value 检索两类任务。
上下文里混入干扰文档,只改变含答案信息所在的位置。
结果呈 U 形。相关信息放开头或结尾,准确率最好。埋进中间,最差。连显式标榜长上下文的模型也不例外。论文 16 张图不复用,直接看原文。
讲次页「广告上下文 vs 有效上下文」(L3 p.11)的对照,出处就是这组实验。窗口标称大,不等于窗口内处处等权。
下面这张示意把两种衰减画在一起。上面一条是挪位置,下面一条是拉长度;真实长任务里,两者叠加。
站内这个交互 demo 是实验的极简复刻:点击槽位移动金文档,看准确率怎么跟着 U 形走。中段甚至跌到闭卷基线以下。
位置效应 vs 长度效应:2025 年的复验与争论
Chroma 的 Context Rot 技术报告把实验网格拉大:18 个模型 × 8 种输入长度 × 11 个位置,约 19.4 万次调用。
- 长度效应稳健。任务难度不变,性能随输入长度一致退化,18 个模型无一幸免。
- 反直觉的地方。把 haystack(干扰文档)的顺序打乱,全部 18 个模型反而升分;needle(金文档)与问题的语义相似度越低,退化越快。
- 最微妙的一条。在 NIAH(大海捞针)上,2023 年的位置效应没有复现。
固定输入、移动金文档位置:开头结尾好、中间差,曲线 U 形。证据来自多文档问答与 key-value 检索。
固定任务、拉长输入总量:越长越差,与金文档埋在哪一格关系不大;NIAH 上 U 形消失。
两派不一定互斥。任务族不同:一边多文档问答,一边大海捞针。金文档与问题的相似度高低,是另一条现成的调和线索。
引用任何长上下文评测结论前,先问清它在什么任务、什么长度、什么位置网格上测出来的。
ICML 2025 的 NoLiMa 撤掉词汇重叠这条捷径。13 个标称 128K+ 的模型里,11 个在 32K 处跌破其短文本基线的 50%,GPT-4o 从 99.3% 掉到 69.7%。去捷径实验见本讲评测篇。
机制:attention sink 垫高了左端
U 形的左端为什么高?ICLR 2024 的 StreamingLLM 给出一个因果性解释:attention sink(注意力沉淀)。序列最开头的几个 token 即使语义上毫不相干,也会承接超高的注意力。
滑窗推理一旦把这些开头 token 的 KV 挤出缓存,注意力分布随之崩溃。
对策朴素得惊人:无论窗口滑到哪,永远保留最前几个 token 的 KV。仅这一招,窗口注意力就不崩了。4M token 流式推理、最高 22.2x 加速都由此而来。
对 U 形的含义:坐在序列开头的信息,恰好落在注意力沉淀的位置上,被一路 “看顾” 到生成结束。这给左端高点补上了机制层的解释。
至于右端为何也高,本篇素材未给对应机制。但工程上无所谓。高点就是高点,能利用就行。
工程对策:把关键信息放上架
结论落到日常就一句话:关键信息别埋中间。
Manus 团队给了右端利用的现成例子:维护一份 todo.md,每完成一步就把计划重写一遍、持续追加到上下文末端。当前目标与进度永远坐在 U 形右端高点上,长任务跑再久,也不怕开局目标沉进谷底。
关键信息要么放开头的系统提示区,要么持续重写到结尾的 todo / 状态文件。唯一禁区是长上下文的正中间。这两条规则,就是讲次页结构化管理路线在注意力层的根据。
与本讲的连接
本篇下钻的是讲次页广告上下文 vs 有效上下文(L3 p.11)背后的实验与争论,归入 L3 p.5 Capacity/Efficiency 二分中 Capacity 一侧的证据。注意力平方增长、KV 缓存线性膨胀是 Efficiency 侧的成本故事,本篇补的是容量侧的利用率故事:如开头所说,窗口标称大,不等于窗口内处处等权。
怎么科学地测这两类效应,衔接本讲的 long-context-eval 篇。资料库中 Liu et al. 论文与 Chroma 报告是两份一手材料,StreamingLLM、NoLiMa 与 Manus 博客各补机制、前沿与对策一角。
关键约束放进开头的系统提示区,计划与状态持续重写到末端,正中间不托付任何要紧信息。
本节论文与规范
本节资料
Chroma 的技术报告:18 个模型 × 8 种上下文长度 × 11 个位置,约 19.4 万次调用。结论是不需要任何干扰项,长度本身就足以让输出质量退化;把 haystack 打乱后所有模型都升分,说明模型对长上下文存在顽固的位置依赖。有趣的是 NIAH 任务上未复现位置效应——与 Liu et al. 的张力正是本讲的看点。
- Lost in the Middle: How Language Models Use Long Contexts 论文2307.03172进阶
位置效应的开山作:多文档 QA 与键值检索中,模型对信息的召回呈 U 形——放开头和结尾最容易,埋在中间最差,且与文档本身的相关性无关。论文用 16 张图系统展示了这一规律,提醒「塞进窗口」不等于「看得见」。注意常被误引为 2207.03172(那是 FastHebb),正确编号 2307.03172。
- Manus 上下文工程复盘(中文) 博客入门
Manus 团队的中文复盘,最出圈的判断是「KV-cache 命中率是生产 Agent 最重要的单一指标」——命中与否可差 10 倍成本。具体做法:保持前缀稳定、只追加不重写;工具定义只在头部出现一次(遮蔽而非移除);把文件系统当上下文用;todo.md 之类的软状态放到上下文末端。字字来自踩坑。
- NoLiMa: The Illusion of Long Context(长上下文的错觉) 论文2502.05167前沿
NoLiMa 把针与 haystack 的词汇重叠降到最低,逼模型靠语义关联而非字面匹配来定位信息。结果:13 个标称 128K+ 的模型里 11 个在 32K 处跌破各自短文本基线的 50%,GPT-4o 从 99.3 跌到 69.7。说明长上下文的短板往往不是「装不下」,而是「联想不动」。
- StreamingLLM / Attention Sinks: Efficient Streaming LLMs 论文2309.17453进阶
给「为什么开头最重要」一个机制解释:模型把超量注意力倾注在开头几个 token 上当「注意力汇」(attention sinks),后续 token 依赖它们维持稳定生成。只要保留最前面几个 token 的 KV 缓存并配合位置重排,就能以恒定内存做 400 万 token 流式生成,最高提速 22.2 倍。lost in the middle 现象的架构层根因。
AI 生成 · 仅供参考,与课程方无关。选中正文里的任何一段也能直接问我(解释一下 / 举个例子)。
本详解以 CMU 11-768 AI Agents (Fall 2026) 课程大纲为参考框架独立撰写,AI 辅助起草、人工抽审。 涉及的官方课件、论文与课程材料版权归原所有方,讲义为站内镜像、其余外链原文出处; 观点与文字(除标注引用外)为作者原创。