一句话定义:上下文感知检索(Contextual Retrieval)是在把文档切成小块(chunk)做索引之前,先让大语言模型(LLM)给每一块补一句“它在原文里讲什么”,再把补充后的文本一起送去检索。
为什么需要它
AI 词典:检索增强生成">检索增强生成(RAG,Retrieval-Augmented Generation)的常规流程是:文档 → 切片 → 向量化 → 检索。问题出在“切片”这一步:切得太碎,块就会失去上下文。
比如原文是:“某公司去年财报显示,第二季度营收同比增长 12%。”切成块后可能只剩“第二季度营收同比增长 12%”。用户问“某公司去年二季度营收怎么样”,检索系统看到这个块里没有“某公司”“去年”,很可能匹配不上,或者匹配到别家公司的类似句子。
上下文感知检索的做法是:让 LLM 看着完整文档和这个块,生成一句简短说明,例如“本块来自某公司去年财报,讨论第二季度营收增长”。然后把这句话和原块拼在一起,再做向量索引和关键词索引(如 BM25)。这样查询里的“某公司”“去年”就能和补充的上下文对上。
打个生活化的比方
图书馆把一本书拆成散页。一页上只写着“同比增长 12%”,没头没尾。管理员在每页顶部贴一张便利贴:“这是《某公司年报》第 8 页,讲二季度营收”。以后找资料,先看便利贴,命中率就高多了。便利贴就是 LLM 生成的上下文。
和相邻做法的区别
| 做法 | 索引里放什么 | 块能否独立被理解 | 主要成本 |
|---|---|---|---|
| 普通切片检索 | 原始块文本 | 经常不能 | 低 |
| 上下文感知检索 | 原块 + LLM 补的上下文 | 基本能 | 多一次 LLM 调用 |
| 查询改写 | 改用户问题 | 不改变块 | 低 |
| 重排序 | 对召回结果精排 | 不改变块 | 中 |
注意,上下文感知检索通常不替代重排序,而是配合使用:它管“索引前补背景”,重排序管“召回后挑最相关”。
实际意义
对 RAG 从业者,这是在索引阶段做的小改动,却能明显降低“检索错配”——找回来一堆字面相似但答非所问的块。代价是要为每个块调用 LLM 生成上下文,文档量大时成本会增加,可以缓存或批量处理。对普通职场人,这意味着企业知识库问答会更少出现“张冠李戴”。具体实现方式和成本,以官方页面为准。
