AI 简明手册
Agent 工程:从能跑到可控 · 让检索片段保留语境给碎片补一句背景:Contextual Retrieval

给碎片补一句背景:Contextual Retrieval

定义

Contextual Retrieval 在传统 RAG 的切块与索引之间增加一步:为每个 Chunk 生成一段简短的来源语境,再把语境与原文一起建立向量和关键词索引。Anthropic 在其测试中报告,Contextual Embeddings、再叠加 Contextual BM25、最后加入重排序时,前 20 个 Chunk 的检索失败率分别降低 35%、49% 和 67%;这些数字只适用于该实验设置。

先搭一个心智模型

普通切块像从书里撕下一段话;Contextual Retrieval 会先在纸条上补一句“它来自哪一章、谈的是什么”,再拿去建立索引。

说明

传统 RAG 的问题是 Chunk 脱离上下文后可能变得含糊,例如“公司 Q2 收入同比增长 3%”单独看不出公司、年份和章节。Contextual Retrieval 先结合整篇文档,为片段生成简短说明,再把说明与原文一起索引。

三层优化解决不同问题:Contextual Embeddings 改善语义向量,Contextual BM25 补充精确关键词匹配,Reranking 再对候选结果做更细的相关性排序。官方实验中的 35%、49% 和 67% 是逐层组合后的结果,不能把 49% 归给 Embeddings 单项。

代价是索引阶段要为片段生成额外语境,并承担更多存储、调用和重排成本。是否值得,应以自己的查询集衡量召回、答案质量、延迟和费用,而不是直接套用官方比例。

跟着一个例子走

一句“收到后 30 天内”到底指什么

检索库里有多个政策片段都包含相似期限,孤立 Chunk 很难判断适用商品和条件。

  1. 为片段补局部语境

    在索引前添加“未拆封耳机的消费者退款政策”等简短上下文。

  2. 同时保留原文

    语境帮助召回,但回答仍要引用并核对原始条款,不能只信生成的标签。

  3. 用真实查询评测

    比较加语境前后的召回和答案质量,确认收益没有被额外成本抵消。

回到概念

它改善的是片段在索引中的可辨识度,不会自动修复错误切块、过期文档或不可靠的最终生成。

边界与误区

  • Contextual Retrieval 和传统 RAG 的核心区别是什么: 传统 RAG 直接对切块做向量化,Chunk 丢失原文语境;Contextual Retrieval 先用 LLM 生成上下文前缀,让 Chunk 自带来源和关键实体信息。

  • 为什么 Contextual Embeddings 加上 BM25 和 Reranking 效果最好: 三种技术互补:向量检索擅长语义匹配,BM25 擅长关键词精确匹配且受益于前缀,Reranking 提升排序精度。

来源与核验

  1. [anthropic-contextual-retrieval] Anthropic:Contextual Retrieval

核验日期:2026-08-31