上下文腐烂(Context Rot)指随着输入上下文变长,LLM 在准确率、指令遵循和引用忠实度上逐渐下降的现象。来自 Chroma、Anthropic 和 Databricks 的评测一致显示,同一模型在相同任务上准确率从 8K 时的 95% 跌到 64K 时的约 60%。Google 官方技术文件披露,同一模型在 MRCR 测试中,128K 上下文得分 84.9%,而 1M 上下文骤降至 26.3%。
斯坦福研究证实 LLM 对上下文的注意力呈 U 形曲线——开头和结尾的信息获得 70% 至 75% 的准确率,而中间部分跌至 55% 至 60%。在 20 份文档的多文档问答中,当相关文档位于第 5 至 15 位时,准确率比位于第 1 或第 20 位时下降超过 30%。这意味着防止幻觉的关键事实如果恰好位于长提示的中间位置,模型可能实际上"看不到"它。
Transformer 自注意力的计算量随序列长度呈二次方增长。在 10K token 时模型追踪 1 亿对关系,100K 时增至 100 亿,1M 时高达 1 万亿。Softmax 注意力在所有 token 间归一化权重,随着分母增大,每个 token 获得的注意力成比例减少。10 倍上下文增长意味着每个 token 的注意力减少 10 倍——这不是模型"忽略"了代码,而是在物理上无法同等强度地关注它。
Chroma 的研究分离出第三种机制——干扰物干扰。添加语义相似但不相关的内容造成的退化超出上下文长度本身的解释。与查询主题相关但事实上无关的干扰物在幻觉回答中出现频率最高。代码搜索是最坏情况:当编码 agent 搜索 webhook 处理器时,上下文中充斥着测试夹具、废弃实现、模拟对象和命名相似的函数,每一个都语义接近但事实无关。