跳到主要内容
SecondHome

Lost in the Middle:位置与长度的双重衰减

8 分钟入门2aL3 p.11 ↗录像 ↗支撑材料 5 篇

「中间会忘」是长上下文圈引用率最高的结论,但 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 形消失。

两派不一定互斥。任务族不同:一边多文档问答,一边大海捞针。金文档与问题的相似度高低,是另一条现成的调和线索。

引用任何长上下文评测结论前,先问清它在什么任务、什么长度、什么位置网格上测出来的。

前沿注脚:NoLiMa 的 32K 断崖

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. 的张力正是本讲的看点。

  • 位置效应的开山作:多文档 QA 与键值检索中,模型对信息的召回呈 U 形——放开头和结尾最容易,埋在中间最差,且与文档本身的相关性无关。论文用 16 张图系统展示了这一规律,提醒「塞进窗口」不等于「看得见」。注意常被误引为 2207.03172(那是 FastHebb),正确编号 2307.03172。

  • Manus 团队的中文复盘,最出圈的判断是「KV-cache 命中率是生产 Agent 最重要的单一指标」——命中与否可差 10 倍成本。具体做法:保持前缀稳定、只追加不重写;工具定义只在头部出现一次(遮蔽而非移除);把文件系统当上下文用;todo.md 之类的软状态放到上下文末端。字字来自踩坑。

  • NoLiMa 把针与 haystack 的词汇重叠降到最低,逼模型靠语义关联而非字面匹配来定位信息。结果:13 个标称 128K+ 的模型里 11 个在 32K 处跌破各自短文本基线的 50%,GPT-4o 从 99.3 跌到 69.7。说明长上下文的短板往往不是「装不下」,而是「联想不动」。

  • 给「为什么开头最重要」一个机制解释:模型把超量注意力倾注在开头几个 token 上当「注意力汇」(attention sinks),后续 token 依赖它们维持稳定生成。只要保留最前面几个 token 的 KV 缓存并配合位置重排,就能以恒定内存做 400 万 token 流式生成,最高提速 22.2 倍。lost in the middle 现象的架构层根因。

AI 生成 · 仅供参考,与课程方无关。选中正文里的任何一段也能直接问我(解释一下 / 举个例子)。

本详解以 CMU 11-768 AI Agents (Fall 2026) 课程大纲为参考框架独立撰写,AI 辅助起草、人工抽审。 涉及的官方课件、论文与课程材料版权归原所有方,讲义为站内镜像、其余外链原文出处; 观点与文字(除标注引用外)为作者原创。