人人都会AI编程

8.6 检索增强技术

更新时间:2026-07-12

基础的 RAG 流程使用“用户原问题 → 向量检索 → top‑k 片段”的单一路径,在实际应用中往往不够健壮。用户提问方式多样、知识库结构复杂,仅靠一次原始查询很难稳定命中相关文档。检索增强技术就是在检索阶段引入各种策略,提升召回质量和覆盖面,为后续生成提供更可靠的“原材料”。以下介绍几种在实践中行之有效的增强方法。

8.6.1 查询改写与扩展

用户提问往往口语化、省略关键词,或包含指代不明的表述。直接拿原问题去检索,容易漏掉相关文档。

  • 查询改写:让 LLM 将用户提问改写成一个更规范、信息更完整的搜索式查询。例如,用户问“这个功能怎么开?”,可以被改写成“如何启用双因素认证功能”。改写时还可以补充业务术语、同义词,以匹配知识库中更正式的表达。
  • 查询扩展:将原问题拆解成多个子问题,或根据问题生成若干不同角度的查询,并行检索后合并结果。这有助于应对“一个问题涉及多个知识点”的场景。

实际做法:在检索前增加一个轻量提示词调用,将原始问题转换为 1~3 个规范查询,再将多个查询的结果去重、融合,大幅减少“问法不对就查不到”的情况。

8.6.2 假设文档嵌入(HyDE)

HyDE 的核心思路是:用户提问通常很短,而答案往往以完整陈述句的形式存在于文档中。直接拿问题向量去和文档片段向量做相似度匹配,语义空间上存在一定差距。

HyDE 的做法是:先让 LLM 根据问题编造一个假设的答案(答案不必真实,只是用来制造检索向量),然后用这个假设答案的向量去检索,召回那些与这个假设答案语义相近的真实文档。因为假设答案和真实文档的语句结构、信息密度更接近,检索命中率通常更高。

适用场景:知识库内容丰富但用户问题太短、太口语化时,HyDE 往往能显著提升 top‑k 的准确性。缺点是增加了一次 LLM 调用的延迟和成本,但对质量敏感场景来说这个代价通常可以接受。

8.6.3 多路召回与融合

单一检索方式可能存在盲区:向量检索擅长语义匹配,但对精准关键词不敏感;关键词检索(如 BM25)对专有名词、编号、代码等精确匹配更好,却不懂近义表达。多路召回就是将两者结合,各自返回候选片段,再通过融合排序输出最终结果。

  • 向量召回:基于语义相似度,覆盖近义表达和上下文关联。
  • 关键词召回:适用于精确匹配(如产品型号、法律条款编号)。
  • 融合策略:常用的有倒数排名融合(RRF),对两路结果按排名加权融合,简单有效,无需额外模型。

在包含大量表格、编号、专用术语的企业文档中,单纯向量检索很容易错过关键信息,增加关键词召回后,命中率通常有明显飞跃。

8.6.4 篇章级检索与上下文窗口

文档切块过细可能割裂完整语义,导致检索到的片段缺乏充分上下文。常见的应对手段包括:

  • 父子索引:先基于小粒度片段(子块)进行检索,但返回给模型的却是其所属的大粒度片段(父块)或整个小节,确保模型能看到完整上下文。
  • 滑动窗口重叠:在切片时保留一定字符重叠,避免关键句恰好落在分割边界上。
  • 检索后扩展:获取 top‑k 片段后,自动拉取其前后相邻的若干片段,再交给模型处理。

这些方法只需在预处理和检索后处理中稍作调整,就能显著减少“信息到位、但上下文缺失”的问题。

8.6.5 重排序

初步检索返回的 top‑k 个片段,排序只是近似最优。重排序(re‑rank)是用更精确但稍慢的模型,对这 k 个片段进行二次打分,把最相关的片段排到最前面,再截取前 m 个(m ≤ k)送入生成阶段。

  • 跨编码器 :将问题与每个片段拼接后输入模型,输出一个更精准的相关性分数,比双塔模型(嵌入匹配)准确得多,但计算成本较高,所以仅对少量候选使用。
  • 轻量级模型:选择专门优化的 re‑rank 模型,在有限候选集上实时打分,可极大改善最终送入 LLM 的资料质量。

重排序是投入产出比很高的优化手段:k 可以适当放大(如 20~50),保证召回覆盖面,然后靠 re‑rank 精准挑选出真正与问题紧密相关的 3~5 段,既控制了上下文长度,又提升了答案准确性。

8.6.6 自查询

当知识库中附带结构化元数据(如日期、文档类型、适用范围等)时,可以根据用户问题自动生成带有过滤条件的查询,这就是自查询。例如用户问“2024 年更新的合规政策”,系统会先提取出“年份=2024,类型=政策”,然后在向量检索时附加元数据过滤,仅检索符合条件的文档片段。这种方法能有效缩小检索范围,避免不相关领域的干扰。

实现上,可以通过提示词让 LLM 从问题中抽取结构化过滤条件,再将条件传递给向量数据库的过滤接口,实现语义搜索与结构化过滤的无缝结合。


检索增强技术并非需要全部堆叠,而是根据场景和痛点有选择地引入。多数情况下,“查询改写 + 多路召回 + 重排序”的组合已能覆盖大部分实际需求,额外的引入应以效果验证为依据。本章后续将进一步介绍如何衡量这些增强技术带来的实际收益。