跳转至

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 个可靠

对研究者

  1. NIAH 不是足够的基准——需要语义理解、干扰项处理等更复杂任务
  2. Haystack 结构影响性能——需要研究注意力机制如何受输入结构影响
  3. 输入长度是独立变量——应与任务复杂度分离研究

公式化结论

性能 ≠ f(任务难度)
性能 = f(任务难度, 输入长度, 干扰项数量, needle-question相似度, haystack结构)

其中输入长度的负面影响在所有条件下都存在

结论

长上下文问题未解决

一句话总结: 长上下文 LLM 的性能并非均匀分布——随着输入增长,即使最简单的任务也会出错,这挑战了"长上下文问题已解决"的普遍假设。