100 万 token 上下文不等于 100 万 token 好用:长上下文的三个真相
✦
← 教程与经验

100 万 token 上下文不等于 100 万 token 好用:长上下文的三个真相

楼主:超级管理员 · 2026-10-04 12:20 · 浏览 22

长上下文 RAG 实践
超级管理员 楼主

100 万 token 上下文不等于 100 万 token 好用:长上下文的三个真相

现在的模型动不动就支持 100 万 token 上下文。但实际用过的人都知道,标称长度和好用长度之间,差着十万八千里。

真相一:中段遗忘(lost in the middle)是真实存在的。

大量测试都指向同一个现象:模型对上下文开头和结尾的内容记忆最好,对中间部分的召回明显下降。你把一份 300 页的文档整个塞进去,然后问一个只有第 150 页能回答的问题,它很可能答不上来,或者给出看似合理但错误的内容。

应对方法:

  • 重要的信息放在开头或结尾,不要埋在中间。
  • 长文档先做结构化处理,给每部分加标题和小结。模型对有结构的文本召回更好。
  • 不要指望一次塞进去解决所有问题。分段处理再汇总,可靠性通常更高。

真相二:成本是线性的,效果是递减的。

上下文每增加一倍,成本大约也增加一倍。但效果不是——信息越多,信噪比越低,模型的注意力被稀释。把 10 万 token 的相关资料和 90 万 token 的无关资料一起喂进去,结果通常比只喂那 10 万要差。

应对方法:

  • 先检索,再填充。这是 RAG 的核心思路,也是长上下文场景下依然正确的做法。
  • 设定上下文预算。给每类任务定一个上限,超出就说明检索环节没做好。
  • 定期清理对话历史。多轮对话里,早期的内容往往已经无关了。

真相三:注意力不等于理解。

模型「看到」了某段内容,不代表它正确使用了这段内容。尤其是当上下文里有互相矛盾的信息时,模型未必能做出正确判断,反而可能被误导。

应对方法:

  • 不要在上下文里放互相冲突的材料。如果必须放,明确标注哪个是最新最权威的。
  • 关键结论要求模型给出依据位置,然后自己核一遍。
  • 对结果做验证,尤其是涉及数字、日期、版本号的。

什么时候该用长上下文,什么时候该用 RAG:

适合长上下文:

  • 单次任务需要通读全文(总结、对比、找出矛盾)。
  • 材料总量可控,比如几十页的文档。
  • 需要理解文档内部结构和逻辑关联的任务。

适合 RAG:

  • 知识库远大于上下文窗口。
  • 每次查询只涉及其中一小部分。
  • 需要引用来源、可追溯。
  • 知识频繁更新。

两者结合才是常态: 用检索把候选范围缩小到几万 token,再用长上下文能力做深度理解。这不是二选一。

一个务实的建议: 别把长上下文当成「不用做检索了」的理由。它是检索之后的工具,不是替代检索的方案。真到了必须塞 100 万 token 才能解决问题的地步,先想想是不是任务拆解方式有问题。

100 万 token 上下文不等于 100 万 token 好用:长上下文的三个真相 示意图


本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。

曹涛

中段遗忘是真的,我们拿 300 页文档测过,问中间的问题基本答不上来。现在改成先检索再填充,长上下文只用来做最后一步的深度理解。

曹南山

中段遗忘我自己测过,把答案放在中间,召回率掉两三成是常事。现在的做法是长文档先切片建索引,只把命中的几段塞进上下文,比整个丢进去准。还有个容易被忽略的坑:塞满之后生成变慢,token 成本翻倍,业务上根本用不起。

秦慕白

中段遗忘这点实测很明显。我们的做法是把长文档先按标题切成块,检索出相关块再拼接,召回质量和成本都比整篇塞进去好。另外标称窗口能跑不等于能跑满,缓存显存增长是线性的,并发一上来就爆。建议先拿自己的真实文档分布压测,别照着厂商 demo 数据做容量规划。

登录 后参与回复