02 - 上下文腐烂
前置:01 篇的五个 token 去向。
本篇回答:为什么"反正窗口有 100 万 token,多塞点没坏处"这个假设不成立,以及它具体以什么形态失效。
本篇会用到的词:
| 词 | 意思 |
|---|---|
| 大海捞针(needle in a haystack) | 长上下文的经典测法:把一句话(针)埋进一大段无关文本(草堆)里,问模型那句话说了什么 |
| 针-问相似度 | 那句话和提问之间的语义接近程度。相似度高=字面几乎能对上,低=需要推理才能建立联系 |
| 干扰项(distractor) | 和正确答案话题相关、但不是答案的内容。它比纯无关内容更容易把模型带偏 |
| 局部连贯 | 草堆本身读起来像一篇正常文章,而不是随机句子拼接 |
| 弃权 | 模型明确回答"找不到答案",而不是编一个。它是一种更安全的失败方式 |
一、被广泛默认、但不成立的那个假设
几乎所有"把东西塞进上下文"的设计背后都有一个隐含假设:模型处理第 10,000 个 token 和处理第 100 个 token 一样可靠。窗口标称多大,就当它均匀好用到多大。
Chroma 在 2025 年 7 月的技术报告里,在 18 个模型上(含 GPT-4.1、Claude 4、Gemini 2.5、Qwen3 系列)做了一组控制变量实验来检验它。做法是:保持任务本身完全不变,只把输入拉长,看表现怎么变。
关键结论是一句话:模型并不均匀地使用上下文。表现随输入变长而变得不可靠,即使是检索、复述这类极简任务也一样。
二、三组变量,三个反直觉结论
报告最有价值的部分不是"变长会变差",而是变差的程度取决于什么。