Context Rot: LLM 长上下文性能退化研究¶
来源: Chroma Research (2025年7月)
作者: Kelly Hong, Anton Troynikov, Jeff Huber
链接: https://research.trychroma.com/context-rot
核心发现¶
主命题: LLM 并非均匀处理上下文——随着输入长度增加,模型性能会显著下降,即使任务本身难度保持不变。
| 误区 | 现实 |
|---|---|
| 模型应同样可靠地处理第 10,000 个 token 和第 100 个 token | 随着输入长度增长,性能变得不可预测 |
| NIAH 基准测试表明长上下文问题已解决 | NIAH 只是简单的词汇检索任务,不代表实际应用场景 |
实验设计¶
测试范围¶
- 18 个 LLM: GPT-4.1, Claude 4, Gemini 2.5, Qwen3 等
- 4 类任务: NIAH 扩展、LongMemEval、重复词复制
测试维度¶
| 维度 | 设置 |
|---|---|
| 输入长度 | 8 种长度 |
| Needle 位置 | 11 个位置 |
| 温度 | 0 (确定性输出) |
关键实验与结论¶
1. Needle-Question 相似度¶
实验: 改变问题与答案的语义相似度,观察输入长度影响
结论: - 相似度越低,性能下降越快 - 短输入时所有 needle-question 组合都能处理好 - 性能下降源于输入长度,而非任务本身难度
高相似度: "What was the best writing advice?" → "The best writing tip was to write every week."
低相似度: "Which character has been to Helsinki?" → "Yuki lives next to the Kiasma museum."
(需要外部知识:Kiasma 博物馆在赫尔辛基)
2. 干扰项 (Distractors) 影响¶
实验设置: - 基线: 只有 needle - 单干扰项: needle + 1 个干扰项 - 多干扰项: needle + 4 个干扰项
结论: - 即使单个干扰项也会降低性能 - 多干扰项影响更大 - 干扰项影响不均匀——某些干扰项比其他更具迷惑性
模型差异: | 模型 | 行为特征 | |------|---------| | Claude | 最低幻觉率,不确定时倾向于放弃回答 | | GPT | 最高幻觉率,经常自信地给出错误答案 |
3. Needle-Haystack 相似度¶
实验: 在同一 haystack 中放置语义相关 vs 无关的 needle
结论: - 影响不均匀,无法得出通用结论 - 在 PG essay haystack 中,无关的 arXiv needle 表现更好 - 在 arXiv haystack 中,差异不明显 - 需进一步研究
4. Haystack 结构¶
实验设置: - 原始: 保持文章逻辑流畅性 - 打乱: 句子随机重排,保持主题但无逻辑连贯性
反直觉结论:
打乱 haystack 反而提升性能
- 所有 18 个模型在打乱后的 haystack 上表现更好
- 结构化的逻辑流程可能干扰注意力机制
- 这对可解释性研究有重要意义
5. LongMemEval (对话记忆)¶
实验设置: - Focused input: 只包含相关部分 (~300 tokens) - Full input: 完整 113k tokens 输入,包含无关内容
结论: - 所有模型在 focused input 上表现显著更好 - Claude 家族差距最大(因保守行为导致更多放弃) - 添加无关上下文 = 添加检索任务 = 性能下降
问题类型表现排序: - 非思考模式: 知识更新 > 多轮会话 > 时间推理 - 思考模式: 知识更新 > 时间推理 > 多轮会话
6. 重复词任务 (Repeated Words)¶
实验: 让模型精确复制一段重复词序列(如 "apple apple apples apple...")
最简单的任务,仍然失败: - 随着上下文长度增加,性能持续下降 - 输入长度与输出长度成正比时,问题更严重 - 模型会出现不尝试、拒绝回答、随机输出等行为
拒绝模式示例:
"I can't replicate that exact text... this could potentially be used to test if I would reproduce copyrighted material."
模型家族对比¶
Claude 家族¶
- 最保守,不确定时倾向放弃
- 最低幻觉率
- Opus 4 有时会拒绝任务 (2.89%)
GPT 家族¶
- 最激进,常给出自信但错误的答案
- 最高幻觉率
- GPT-3.5 turbo 60% 任务被内容过滤拒绝
Gemini 家族¶
- 介于 Claude 和 GPT 之间
- 有时会输出随机内容
Qwen 家族¶
- 思考模式有显著提升
- 但 focused/full 差距仍然存在
核心启示¶
对开发者¶
| 建议 | 原因 |
|---|---|
| 优先使用 RAG | 只传递相关上下文,避免让 LLM 做检索 |
| 控制输入长度 | 即使任务简单,长输入也会导致性能下降 |
| 警惕干扰项 | 相关但不准确的上下文比无关上下文更危险 |
| 不要假设均匀性能 | 第 1000 个 token 的处理不如第 100 个可靠 |
对研究者¶
- NIAH 不是足够的基准——需要语义理解、干扰项处理等更复杂任务
- Haystack 结构影响性能——需要研究注意力机制如何受输入结构影响
- 输入长度是独立变量——应与任务复杂度分离研究
公式化结论¶
结论¶
长上下文问题未解决
一句话总结: 长上下文 LLM 的性能并非均匀分布——随着输入增长,即使最简单的任务也会出错,这挑战了"长上下文问题已解决"的普遍假设。