引入 Contextual Retrieval

原文:Introducing Contextual Retrieval

导读

本文介绍 Contextual Retrieval:在文档切块前为每个 chunk 添加上下文说明,结合 BM25 与 embedding 检索,显著降低 RAG 系统检索失败率。

说明:本文按 Agent Learning 的中文阅读页格式,对原文结构与关键技术细节做逐节中文转述与解读;为避免整篇镜像转载,正文保留原文章节脉络、关键数字和术语,但不做逐字复刻。

核心观点

正文

原文主线

本文介绍 Contextual Retrieval:在文档切块前为每个 chunk 添加上下文说明,结合 BM25 与 embedding 检索,显著降低 RAG 系统检索失败率。

传统 RAG 的切块问题

RAG 系统通常把长文档切成 chunks,再用 embedding 或关键词检索相关片段。问题是 chunk 一旦离开原文档,很多上下文会丢失:代词指代、章节主题、表格含义、术语定义、时间范围都可能不再清楚。

当用户查询需要这些背景时,检索系统可能错过正确 chunk,或者把缺乏上下文的 chunk 交给模型,导致生成阶段只能猜。

Contextual Retrieval 怎么做

Contextual Retrieval 的方法是在索引前为每个 chunk 生成简短说明,描述它在原文档中的位置和含义。例如说明该片段来自某份财报的风险章节,讨论某地区营收变化,而不是只保存原始段落。

这些上下文与原 chunk 一起进入索引。检索时,embedding search 和 BM25 都能利用额外背景,更容易匹配用户问题。

与 BM25、embedding、rerank 的组合

embedding 擅长语义相似,BM25 擅长关键词精确匹配。Contextual Retrieval 不要求二选一,而是让两者都获得更完整文本。随后可以用 reranker 对候选结果重新排序,进一步提高相关性。

这提醒我们,RAG 不是单一技术点。chunking、context generation、indexing、hybrid search、reranking、prompt assembly 每一步都会影响最终答案。

成本与质量权衡

为每个 chunk 生成上下文会增加预处理成本、索引存储和 token 使用。因此上下文不宜过长,应聚焦能帮助检索的文档级信息。不同文档类型需要不同模板:合同、财报、代码文档、研究论文的上下文线索并不一样。

团队应通过 retrieval eval 衡量收益:看正确答案所需 chunk 是否被召回、排序是否前移、生成答案是否减少幻觉。

深度解读

Contextual Retrieval 的核心洞见很朴素:检索失败常常不是因为模型不懂,而是因为我们把材料切碎后抹掉了意义。它把一部分理解工作提前到索引阶段,用模型为数据加语境,再让传统检索受益。对企业知识库来说,这比单纯换更大的 embedding 模型更可控,因为它改善的是数据表示。RAG 的竞争力越来越像信息架构能力,而不是只看生成模型。

落地启示