模型厂商都在强调上下文长度,从 8K 到 128K 甚至更长。但窗口变长,不代表模型对窗口里的内容 一视同仁。我做了一组很小的对照实验,记录如下。

实验设置

取一份约 3 万字的技术文档,切成若干段落。在这份文档里埋一个只有一个句子能回答的事实, 然后构造一个需要这个事实才能回答的问题。把关键句子分别放在文档的开头、中间和结尾, 再分别用 8K、32K、128K 的上下文去问同一个模型。

结果

  • 关键信息在开头或结尾时,三种窗口长度的准确率都接近,差距在几个百分点以内。
  • 关键信息在中间时,8K 和 32K 还能稳定答对,128K 的准确率明显下滑。
  • 窗口越长,回答里混入无关段落信息的比例越高。

可能的原因

这和常见的「中间遗忘」现象一致:模型对上下文开头和结尾的注意力更强,中间部分容易被忽略。 另外,上下文越长,注意力需要在更多位置上分配权重,单个段落的权重被稀释, 检索式的能力会下降。

实践上的建议

与其把所有材料一次性塞进超长上下文,不如先把材料做一次筛选或检索,把最相关的几段放在 开头或结尾的位置。对于必须全量处理的文档,分块处理再汇总,通常比硬塞更稳定。

窗口长度是上限,不是目标。能少放就少放,把位置留给真正需要的内容。