Skip to content

Chapter 8 · 直面 Lost in the Middle

这一部分处理的是摊薄概率。所有 B 档失败模式都不能被根治,但可以被多采样、跨视角、长度归一等统计技巧把单点失败摊薄到产品可接受的尾部。本部分的核心心智模型是:LLM 是可以分布外推的——同一个问题问 5 次取多数,比问 1 次更接近真相。



经典发现(Liu et al. 2023):把一句关键事实放在 32k 上下文的中段,LLM 抓取它的成功率比放在头尾低 15%-25%。这是 Transformer 注意力分布的物理特性,所有大上下文模型至今都受影响。

Item 21:关键信息要么前置要么末置

中段是上下文的"百慕大三角"。

核心

NIAH 实验在所有主流模型上都重复出"U 型曲线"——开头与结尾的检索准确率显著高于中段。把关键事实置于这两个区域,可立刻把检索准确率拉回 95%+。

Things to Remember

  • RAG 上下文:检索 chunks 按相关性排序后,top-1 置首、top-2 置末,相关性弱的放中间。
  • system prompt 的关键约束既写开头也写结尾。
  • 不要相信"我们的模型已经解决 Lost in the Middle"——跑 NIAH 验证。

延伸阅读

  • Lost in the MiddlearXiv:2307.03172)—— 经典实验:把关键事实放在 32k 上下文中段,所有主流模型抓取准确率都比放在头尾低 15-25%,呈 U 型曲线。
  • Found in the MiddlearXiv:2403.04797)—— 后续研究:用注意力校准 / 位置去偏方法能部分拉平 U 型曲线,但无法消除——这是 Transformer 的结构特性。

Item 22:用 Map-Reduce 分块替代"塞进 200k 窗口"

200k 窗口不等于 200k 有效注意力。

核心

即便模型支持 200k 上下文,注意力质量随长度严重衰减。把长文档分 chunk,每 chunk 单独提取要点(Map),再 reduce 为最终答案,比一次性塞进去更可靠。

Things to Remember

  • 长文档摘要、长合同分析一律走 Map-Reduce。
  • 每 chunk 控制在 4k-8k tokens,避免又触发中段问题。
  • Reduce 阶段用更强的模型,Map 阶段用便宜模型。

Item 23:rerank 后再生成,不要 retrieve 后直接生成

检索是召回,rerank 是排序,生成是表达——不要混。

核心

直接把 BM25 / dense 检索的 top-k 给 LLM,会带入大量"语义相关但题外"的 chunk,触发 Distracted by Irrelevant ContextarXiv:2302.00093)。先 rerank 到 top-3-5 再生成,准确率显著提升。

Things to Remember

  • 检索召回 top-100 → rerank 到 top-3-5 → 再生成。
  • Reranker 用 Cohere Rerank / BGE-Reranker / RankGPT。
  • 砍掉 80% 的"看起来相关但其实没用"的 chunk。

Effective LLM