RAG--检索优化

RAG–检索优化

0.前言

  在前面提到的多种分块办法后,接下来便是优化RAG的检索模块,这里我们主要从三个方面入手

  

1.优化数据源(构建高质量的索引)

1.1父文档检索器

  父文档检索器,在索引阶段将文档切分为子文档,同时保留父文档的完整消息,在检索阶段,通过子文档匹配返回完整的父文档。

1.2生成QA对

  从文档生成QA对:创造语义入口

1.3元数据标注

  为每个文档块添加结构化元数据,如:

  • 来源(source)
  • 创建时间(date)
  • 作者(author)
  • 所属章节(section)
  • 分类标签(tags)

  

2.理解用户意图(查询转换策略)

  • 查询扩展:

  通过LLM生成多个语义等价的子查询,每个子查询分别进行检索,最后将结果合并,这种方法能够有效提升模糊查询的召回能力,覆盖更多的同义表达

  在LangChain中,提供了实现多查询检索的代码示例,展示了如何通过LLM生成子查询并进行检索,从而提升检索效率

  • RAG-Fusion:智能结果融合

  原理是基于RRF算法对多个查询结果进行打分重排,去掉共识文档,抑制噪声,从而提升整体相关性排序

  • “后退一步”提示(Step-Back Prompting)

  当问题过于具体时,容易陷入“只见树木不见森林”的困境。此时应引导 LLM 抽象出更高层次的问题,以获取更广泛的背景知识。这样子即可避免因问题太专而导致检索失败。同时还能为 LLM 提供上下文全景,增强回答的深度与广度。

  

3.融合关键词与向量(混合搜索)

  在传统的向量搜索中,纯向量搜索在处理专有名词、代码片段、ID编号等必须精确匹配的内容时存在明显的不足,这些内容无法通过语义向量进行有效检索,所以需要结合其他的检索方式,例如结合稀疏检索方法BM25,将权重设置为向量60% 关键词40%

结合两种检索范式:

  • 稀疏检索(Sparse Retrieval):BM25,基于词频匹配,擅长关键词定位。
  • 稠密检索(Dense Retrieval):基于向量相似度,擅长语义理解。

RAG--检索优化
https://one-null-pointer.github.io/2026/02/05/RAG--检索优化/
Author
liaoyue
Posted on
February 5, 2026
传送口