上下文腐烂
概述
上下文腐烂(Context Rot)是指随着 LLM 上下文窗口中 token 数量增加,模型从上下文中准确召回和推理信息的能力非均匀下降的现象。由 Chroma Research(ChromaDB 母公司)于 2025 年 7 月通过系统性跨模型实验命名、量化和分类,覆盖 18 个主流 LLM。
关键内容
为何 NIAH 基准不够充分
针刺干草堆(Needle In A Haystack, NIAH)是最广泛使用的长上下文基准测试,但存在根本局限: - 本质上是简单词汇检索——将已知句子嵌入无关文本,测试模型能否找回 - 模型在 NIAH 上接近满分,造成"长上下文问题已解决"的错觉 - 真实应用(Agent 任务、摘要、多轮对话)需要语义理解 + 推理,而非词汇匹配
四大实验与核心发现
Chroma Research 控制任务难度不变,仅变化输入长度,系统测量上下文腐烂:
实验一:针问相似度(Needle-Question Similarity)
发现:针(答案)与问题的语义相似度越低,随上下文增长性能退化越快。 - 高相似度(词汇接近):在短输入下表现好,长输入下退化较缓 - 低相似度(需要语义推断):反映真实场景——用户很少使用精确关键词
意义:真实应用中退化程度比 NIAH 测量的更严重,因为实际查询与答案的词汇相似度通常较低。
实验二:干扰项影响(Impact of Distractors)
关键区分: - 干扰项(Distractor):与针话题相关,但不能回答问题(如"我从大学同学那里得到的最糟糕写作建议是……") - 无关内容(Irrelevant Content):与针和问题均无关
发现: - 即使是单个干扰项,也会显著降低性能(相比基线仅有针) - 四个干扰项的影响远大于单个,但影响非均匀——某些干扰项远比其他更具误导性 - 随上下文增长,干扰项的非均匀影响更加放大 - 模型差异:Claude 模型幻觉率最低,但面对歧义时更倾向于"弃权"(abstain);GPT 模型幻觉率最高,即使有干扰项也倾向于给出(错误的)确定性答案
实验三:针-干草堆相似度(Needle-Haystack Similarity)
反直觉发现: - 针与干草堆语义相似("融入"背景),模型在 PG 文章干草堆中表现更差 - 语义不相关的针反而更容易被找到(对比更明显) - 但此效应非均匀,在 arXiv 干草堆中未观察到相同规律
含义:上下文内容的语义分布影响模型提取信息的难度,不只是信息是否存在。
实验四:干草堆结构(Haystack Structure)
最反直觉的发现:将干草堆句子随机打乱,模型性能反而提升。
- 原始干草堆(保留自然段落逻辑流)→ 性能更差
- 打乱句序的干草堆(保留话题但无逻辑连贯性)→ 性能更好
- 此规律在全部 18 个模型和所有配置中一致出现
推测:结构化文本的连贯逻辑流可能以某种方式影响注意力机制的应用方式,在长上下文中尤为明显——具体机制超出本报告范围,指向可解释性研究方向。
LongMemEval:聚焦 vs. 全量输入
对比两种输入: | | 聚焦输入 | 全量输入 | |--|---------|---------| | 内容 | 仅包含回答问题所需信息(~300 token) | 完整对话历史(~113k token),含大量无关内容 | | 模型任务 | 仅需推理 | 检索 + 推理 | | 性能 | 跨所有模型显著更好 | 跨所有模型显著下降 |
结论:将检索(从长上下文中找相关信息)和推理(基于信息回答问题)合并为一次调用,会显著降低两者的质量。最佳实践是尽量为模型预先过滤,只提供相关信息。
Claude 特有行为:面对全量输入中的歧义性更倾向于"无法从对话历史中确定答案"(弃权),导致 focused vs. full 的性能差距在 Claude 模型中最为明显。
重复单词任务(Repeated Words)
验证极简场景:要求模型精确复制一段由重复词组成的文本(含一个特殊词)。
发现:即使是如此简单的任务,随输入+输出长度增长,性能也一致退化: - 序列长度 < 250 词时,所有模型表现良好 - 超过 2500-5000 词后,模型开始: - 生成随机词汇(不在输入中的词) - 无法精确复现特殊词的位置 - 过度生成或不足生成词汇量
意义:上下文腐烂不是复杂推理问题的专属现象,连简单的序列复制在足够长的输入下也会失败。
核心结论
信息是否存在于上下文中不是最重要的;更重要的是信息如何被呈现。——Chroma Research
- 上下文腐烂不是崖式崩溃,而是性能梯度下降,且降速因语义相似度、干扰项数量、内容结构而非均匀
- 所有 18 个主流 LLM 均表现出此现象,包括 GPT-4.1、Claude 4、Gemini 2.5、Qwen3
- 等待更大的上下文窗口不能解决此问题——即使窗口扩大,退化仍然发生
- 这是Context-Engineering存在的核心动机:精心策划呈现给模型的信息,而非简单堆砌
对系统设计的含义
- RAG 和即时上下文检索的必要性:预先过滤 + 只传递相关信息,而非传入完整文档
- 干扰项设计:RAG 系统中检索到的相似但不相关的 chunk 就是干扰项,其危害大于完全无关内容
- 信息密度:压缩和精选比填入更多信息更重要
来源
- raw/articles/ai-engineering/anthropic-engineering/Context Rot_ How Increasing Input Tokens Impacts LLM Performance.md — Chroma Research 原始报告(Hong, Troynikov, Huber, 2025)
- raw/articles/ai-engineering/anthropic-engineering/Effective context engineering for AI agents.md — Anthropic 对本研究的引用
相关
- 注意力预算 — related_to(上下文腐烂的架构根因:n² 注意力计算稀释)
- Context-Engineering — part_of(上下文腐烂是上下文工程存在的核心动机)
- 上下文重置 — related_to(应对长上下文退化的技术手段之一)
- 即时上下文检索 — related_to(JIT 策略通过只加载相关信息避免上下文腐烂)
- 检索增强生成 — related_to(RAG 的 chunk 相关性和干扰项设计直接影响上下文腐烂程度)
- 渐进式披露-Progressive-Disclosure — related_to(按需加载是避免上下文腐烂的策略)
- ChromaDB — 上下文腐烂研究来源机构