模型已经把上下文窗口卷到百万 token,用起来却是另一回事:喂得越长,答得越不靠谱。这个现象有几个流行的名字:上下文腐烂(context rot)、注意力稀释、信噪比下降。
一、实验结论
1.1 Chroma 的 Context Rot 报告:控制变量测出来的衰减
2025 年 7 月 Chroma 发布的技术报告是目前最系统的一次测量。方法论上的关键动作是控制变量:任务难度恒定,只改变输入长度。18 个主流模型(Claude、GPT、Gemini、Qwen 四个家族),8 种输入长度 × 11 个 needle 位置,judge 对齐人类判断 99% 以上。四组实验值得记住:
- 语义距离:大海捞针的变体,把 needle 与问题的字面重合度调低,只靠语义相近。短输入下低相似度也答得好;输入拉长后,相似度越低衰减越狠。短输入的表现证明任务本身不难,衰减来自长度。
- 干扰项:往干草堆里掺一个相似的错误答案就掉分,四个叠加更狠,且随长度放大。家族风格差异明显:Claude 倾向于拒答,GPT 倾向于自信地答错。
- 打乱的干草堆反而更好:把连贯散文打乱成无序句子后,18 个模型全部表现提升。逻辑结构居然是有害的,这是全报告最反直觉的一条。
- 复读测试:让模型原样复读一段重复的词。输入到万词量级,开始漏字、错位、越写越短,有的模型编出输入里根本不存在的词。连复读都做不干净,说明退化与任务难度无关,是长度本身在征税。
另有一组直接对标真实场景的 LongMemEval 测试:同一批问题,全量输入约 113k token 对比聚焦输入约 300 token,所有模型聚焦组显著更好。答案两种输入里都在,多出来的十几万 token 不是免费的。
1.2 RULER:标称窗口的打假基准
RULER(COLM 2024)换了一个问法:不测「能不能找到针」,测更难的行为:多跳追踪、聚合等 13 类任务。结果:17 个长上下文模型在标准 NIAH 上几乎满分,换难任务后随长度大幅衰减;所有模型都标称支持 32K 以上,但只有一半在 32K 还能保持满意表现。NIAH 满分成了一种营销指标,它测的是窗口里最不容易坏的那种用法。
1.3 Lost in the Middle:中段的信息约等于不存在
斯坦福 2023 年的经典实验:多文档问答,把含答案的文档摆到不同位置。结果是 U 型曲线:开头结尾记得牢,中段显著塌陷。最刺眼的数字:答案埋在中间时,GPT-3.5-Turbo 的得分低于完全不给文档的闭卷基线。给了答案,反而更差。
1.4 NoLiMa:需要推理时,有效上下文只有几千
NIAH 类测试本质仍是匹配。NoLiMa 换成需要语义推理的题目后,数字难看得多:32K token 时多数模型得分不到短输入的一半;折算「有效上下文」,多数模型只有 2K 上下。标称窗口买来的是空间,可靠性得另算。
1.5 多轮维度:同一批信息分几轮给,掉 39%
微软与 Salesforce 2025 年的实验:把基准测试的完整提示拆成多轮对话逐步给出,平均性能掉 39%,o3 从 98.1 掉到 64.1。机制是模型在信息不全时过早定稿,之后拿到补充也不回头改。长度在烂,轮次也在烂,agent 场景两条都占。
1.6 小结:四条共性
- 衰减与任务难度无关(复读实验),与长度强相关;
- 退化是渐变不是悬崖,表达依然流畅自信,事实召回和长程推理先悄悄掉队。这是它危险的地方:不报错,不出现在任何仪表盘上;
- 标称窗口 ≠ 有效窗口,简单检索撑得住不代表推理撑得住;
- 干扰信息的杀伤力大于无关信息,错误但相似的内容最坏。这条在第二章还会回来。
二、原理分析
2.1 先说一个流行解释为什么不对
讲这个现象的文章,十篇有九篇会写「注意力总和是 1,N 个 token 每个平均分到 1/N,所以稀释了」。这个说法把数学事实当成了失效机制。softmax 的输出可以任意尖锐,只要 logit 差距够大,权重可以几乎全部压在极少数 token 上,N 再大也无所谓。归一化只保证总和为 1,不保证摊平。真正的故事要回到公式里逐项排查。
2.2 一个公式,逐处排查
scss
attn(q) = Σᵢ wᵢ·vᵢ 其中 w = softmax(QKᵀ/√d)
输出侧:凸组合是稀释的算子本身。 注意力输出是 value 向量的加权平均,权重和为 1,数学上这叫凸组合,输出必然落在所有 value 张成的凸包内。这一条没有回旋余地:权重摊平多少,输出就靠近均值多少,信号被字面意义地平均掉。它同时给出上界:QK 再强,最好情况也只是干净地选中某一个 v,变不出凸包外的信息。
softmax 分母:噪声随 N 线性累积。 把目标 token 的 logit 记作 s*,其余 N−1 个噪声 token 的 logit 记作 sᵢ:
scss
w* = e^{s*} / (e^{s*} + Σᵢ e^{sᵢ}) ≈ 1 / (1 + (N−1)·e^{s̄−s*})
分母里的噪声项随 N 线性增长。N 涨 32 倍,logit 差距 s*−s̄ 要多拉开 ln32 ≈ 3.5,才能保住原来的权重。而 logit 差距是训练出来的 QK 分辨力,不会因为你把窗口拉长就自动变大。稀释真正进入的位置在这里,不在归一化。
这个式子还顺手把「上下文信噪比」形式化,目标权重对噪声总质量的比可以写成:
SNR ≈ e^{s*} / Σᵢ e^{sᵢ} ≈ e^Δ / N (Δ = 目标与噪声的 logit 差距)
随 N 线性衰减,除非 Δ 随 ln N 增长。上下文腐烂、注意力稀释、信噪比下降,三个词在这个式子里是同一个量。它也能回头解释 1.1 的实验:字面匹配的 needle 撑得久(精确重合天然 Δ 大);语义匹配衰减快(Δ 小);干扰项一个就掉分(干扰项是高 logit 噪声,e^{sᵢ} 大,几个就够压垮分母)。
2.3 信噪比的两个实验注脚
噪声不是标量:语义距离决定毒性。 Cuconasu et al. 2024 系统研究了 RAG 里的检索噪声:检索器打分最高但不含答案的文档(相关噪声)明确有害;而最反直觉的发现是,往 prompt 里加随机文档,准确率反而提升,最高 +35%。作者明说机制待研究。2.2 的式子能解释毒性的排序:随机 token 的 sᵢ 很低,对分母贡献小;相关噪声的 sᵢ 逼近 s*,直接抢分子。「无关」和「错误但相似」是两回事,后者才是毒药,这正是 1.6 小结里那条共性的微观解释。但式子只解释了「危害小」,解释不了「有帮助」:随机文档为什么反而提升准确率,中间还隔着一条机制鸿沟,这里不硬答。
压缩即去噪:密度本身是可操作的变量。 LongLLMLingua 的实验:NaturalQuestions 上把 prompt 压到 1/4 的 token,性能不降反升,最高 +21.4%;LooGLE 上成本降 94%。它的立论就是信噪比语言:模型表现取决于关键信息的密度与位置,压缩提高密度。这给「少即是多」一个定量形状:压缩去掉的是分母里的噪声项,长度只是顺带变小。
2.4 softmax 不能拒绝:attention sink 是架构的泄压阀
softmax 还有一条更隐蔽的约束:权重和恒为 1,意味着每个 query 必须看某个地方,「谁都不看」不在可表达的范围内。没什么该看的时候怎么办?模型学会的解法是把多余权重倾倒到序列最开头的几个 token 上,这就是 attention sink。
StreamingLLM(Xiao et al. 2023)的实验很说明问题:保留开头 4 个 token,哪怕把它们替换成毫无语义的换行符,��意力团块纹丝不动,长流生成照常工作。倒垃圾的动作是结构性的,与首 token 的内容无关。泄压阀是 softmax 的标配,不是哪个模型的怪癖。
对长上下文有两层含义。一层是税:sink 占掉的权重是纯开销。另一层是位置格局:开头有 sink 加持,结尾有近因偏置,中段两头不靠。这与 1.3 的 U 型曲线互相印证,也给「关键信息放首尾」这条经验一个架构级的解释。
2.5 多头分工:长程检索是少数头的活
多头注意力的设计意图是分工,不同的头学不同的关注模式。检索头研究(Wu et al. 2024)量化了这种分工:长上下文里负责「找到 needle 并搬过来」的头只占很小一部分;mask 掉这几个头,大海捞针能力立刻崩溃,mask 掉同样数量的其他头几乎无损。后续的 DuoAttention 顺着把头分成检索头和流式头两类,只给检索头保留全量 KV cache,推理成本大降而长文能力保住。
这件事改变了「长上下文能力」的计价单位:窗口、层数、头数都是面子,里子是少数检索头的 QK 分辨力。窗口可以堆到百万,干检索活的头并没有变多。
2.6 两个条件性因素
RoPE 的距离衰减:旋转位置编码让远距离 token 对的 QK 内积系统性衰减,天然偏向近端。理论上成立,也与 U 型曲线自洽;但注意 Chroma 在自己的实验设置里没有复现出显著的位置效应。位置因素真实存在,强度跟任务类型和编码方案相关,不是铁律。1.1 那条「打乱的干草堆反而更好」也归在这一档:结构与顺序的影响真实存在,但方向不稳定,机制层面还没有干净的解释。
训练分布偏斜:训练语料里短序列远多于超长序列,模型对跨越整个长上下文的依赖关系练得少。这是 Anthropic 工程博客给的归因,符合直觉,但没有独立实验证实。
2.7 置信度分层
| 说法 | 状态 |
|---|---|
| 凸组合:权重摊平 → 输出趋向均值 | 数学事实 |
| 分母噪声随 N 累积,SNR ≈ e^Δ/N | 可推导;「这就是 context rot 的主因」仍是假设 |
| 相关噪声有害、随机噪声反而有益 | 实证(Cuconasu),机制未明 |
| 压缩提密度可提升性能 | 实证(LongLLMLingua) |
| attention sink 存在且是结构性的 | 实证扎实 |
| 检索头集中、mask 即崩 | 实证扎实 |
| RoPE 距离衰减贡献中段塌陷 | 条件性成立 |
| 训练分布偏斜 | 合理推断,未独立证实 |
最后补一条纪律:Chroma 报告本身明确表示机制未解,「输入的结构模式可能影响注意力分配」只是它给出的展望。上面的分析给出的是稀释进入的位置和量级,不是一条已证实的完整因果链。
三、应对方案
每项对策对应公式里的一项,或一组实验事实:
| 对策 | 作用于 |
|---|---|
| 压缩与清理:摘要压缩、tool result 清除或折叠 | 减 N、提密度,收分母 |
| 子代理隔离:脏活在独立上下文里干,只回传蒸馏后的结论(Anthropic 的描述:子代理吃掉几万 token,回传一两千) | 减 N,最激进的一种 |
| 按需检索:不预先塞全量,用时取回 | 减 N,LongMemEval 的直接教训 |
| 关键信息放首尾、指令前置 | 顺 sink 与近因的位置格局 |
| 关键内容语义独特、结构标记清晰 | 拉大 Δ,补分子 |
| 工具数量克制(Berkeley 函数调用基准上,工具一多所有模型都变差)、无关参考资料不进上下文 | 减高 logit 噪声项 |
| 长期记忆放上下文外,用时取回 | 把冷的 v 移出凸包 |
| 多轮任务尽早给全约束,避免分片透露 | 对多轮 −39% 的直接回应 |
| 安全约束钉在压缩够不到的地方 | 对 Governance Decay 的直接回应 |
展开最值得说的三条。
「少一点」比「给全了」更接近正确。 LongMemEval 那组对照(113k vs 300 token)是最直白的证据:答案都在,但带着十几万 token 陪跑,所有模型都变差。「万一用得上」是上下文管理里最贵的念头,放进来的每个 token 都进分母,没有免费乘客。Anthropic 把这叫做 attention budget:判断标准不是「这条信息有没有一点关系」,而是「它值不值得占一份注意力」。Cuconasu 的随机噪声实验从反面补了一刀:连无害的噪声都不是免费的,它只是危害小,相关噪声才是毒药。检索和塞料的决策标准应该按「与任务的语义距离」排毒性,别按「有没有用」一刀切。
压缩是第一公民,但它有一个安全面。 压缩即去噪,LongLLMLingua 证明压得好性能反升。但 2026 年的 Governance Decay 研究给出了反面的数字:长时程 agent 场景里,安全约束完整可见时违规率 0%,一轮压缩之后平均 30%,最差的模型到 59%,摘要悄悄删掉了「不许做什么」。约束幸存于摘要,违规率就回到 0%;被丢掉,就到 38%。所以压缩要分两层对待:任务上下文可以有损,治理约束必须无损。论文给的解法叫 constraint pinning,把红线类内容钉在压缩流程够不到的位置(比如常驻的 system 位),实测违规率回到 0%。这对所有做 compaction 的系统是硬要求,不是优化项。
给自己装一个仪表盘。 注意力衰减不报错、不进日志,这是最麻烦的一点。应对只有主动测:给关心的任务类型做一个小的长上下文召回测试(自制 NIAH 就够),换模型、改上下文结构时跑一遍;对多轮 agent,把「第 1 轮给的关键约束,第 30 轮还能不能守住」加进回归。RULER 的教训是别拿 NIAH 满分当验收标准,用最像你真实负载的任务去测。测一次的成本很低,瞎着的成本很高。
收尾
2026 年的前沿模型缩小了衰减的幅度,没有消除它,Chroma 测的 18 个模型无一例外。窗口的数字还会继续涨,公式里的那个式子不会变:SNR ≈ e^Δ/N。搞清楚 Δ 和 N 哪个能动,比等一个更大的窗口有用。
参考来源
- Kelly Hong et al., Context Rot: How Increasing Input Tokens Impacts LLM Performance, Chroma Research, 2025-07
- Hsieh et al., RULER: What's the Real Context Size of Your Long-Context Language Models?, COLM 2024
- Nelson Liu et al., Lost in the Middle: How Language Models Use Long Contexts, TACL 2024
- Modarressi et al., NoLiMa: Long-Context Evaluation Beyond Literal Matching, 2025
- Laban et al., LLMs Get Lost in Multi-Turn Conversation, Microsoft/Salesforce, 2025
- Cuconasu et al., The Power of Noise: Redefining Retrieval for RAG Systems, 2024
- Jiang et al., LongLLMLingua: Accelerating and Enhancing LLMs in Long Context Scenarios via Prompt Compression, 2023
- Shiyang Chen, Governance Decay: How Context Compaction Silently Erases Safety Constraints in Long-Horizon LLM Agents, 2026
- Wu et al., Retrieval Head Mechanistically Explains Long-Context Factuality, 2024;DuoAttention, 2024
- Xiao et al., Efficient Streaming Language Models with Attention Sinks(StreamingLLM), 2023
- Anthropic, Effective context engineering for AI agents, 2025-09