Skip to content

RAG 检索不准怎么排查:召回、混合检索与重排序 ​

检索是 RAG 的核心。检索质量差,生成的内容就是“垃圾进,垃圾出”(Garbage In, Garbage Out)。

这是常见的基础模式:使用索引和查询采用的相似度度量,取一组候选结果。Cosine 相似度是可选方案之一,实际度量需要与 Embedding 模型、向量归一化方式和数据库配置保持一致。

  • 优点:速度快,捕捉语义关联。
  • 缺点:对于专有名词、精确匹配(如“错误码 503”)效果不佳。

混合检索 = 向量检索 (Dense) + 关键词检索 (Sparse/BM25)

向量检索擅长语义理解,关键词检索擅长精确匹配。两者结合,互补短板。 不同搜索引擎和向量数据库对稀疏检索、过滤与融合的能力不同,接入前应按当前版本文档和真实语料验证,不能只根据产品类别推断。

Golang 伪代码逻辑 ​

go
// 1. 并行执行两路搜索,候选数量由经过评估的配置决定
// Goroutine A: 向量检索
// Goroutine B: BM25 关键词检索

// 2. 结果融合 (Reciprocal Rank Fusion, RRF)
func RRF(denseResults, sparseResults []Result, rankConstant float64) []Result {
    scores := make(map[string]float64)

    // rank 应从 1 开始;rankConstant 是待评估并记录的配置,不是质量阈值。
    for rank, doc := range denseResults {
        scores[doc.ID] += 1.0 / (rankConstant + float64(rank+1))
    }
    for rank, doc := range sparseResults {
        scores[doc.ID] += 1.0 / (rankConstant + float64(rank+1))
    }

    // 排序返回
    return SortByScore(scores)
}

这段代码只表达融合思路。生产实现还要处理同一文档的 Chunk 去重、稳定排序、空结果、超时、部分失败和权限过滤,并通过离线评估选择候选数量与融合参数。

3. 精排:重排序 (Re-ranking) ​

粗召回的候选中可能包含不相关或重复内容。重排序模型可以对 (Query, Chunk) 重新打分,再根据上下文预算和评估结果选择证据。重排序不是必然提升质量:模型语言、领域、输入上限、延迟和失败降级都需要验证。

流程:

  1. Retrieval:召回足够覆盖答案证据的候选集。
  2. Filter / Deduplicate:执行权限过滤、版本过滤和去重。
  3. Rerank:使用经过验证的模型或规则重新排序。
  4. Context Build:根据上下文预算选择片段,并保留引用元数据。

不要直接复制某个相关性分数作为阈值。不同模型的分数不可直接横向比较,应在固定评估集上观察排序质量、无答案行为、延迟和成本,再确定截断规则;模型或版本变化后重新校准。

4. 检索不准的排查顺序 ​

先保存最终送给模型的 Chunk ID、排名、来源版本和过滤原因,再沿链路定位:

现象首先检查不要先做
明明有文档却零结果索引是否成功、租户/权限/版本过滤是否过严直接提高相似度阈值
专有名词或错误码找不到清洗是否保留原文、关键词索引和分词配置只更换生成模型
主题相近但没有答案证据Chunk 边界、查询表达、候选覆盖和重排只扩大最终 Prompt
召回大量重复片段Overlap、父子 Chunk、融合去重把所有重复片段交给模型
召回正确但回答错误上下文顺序、截断、引用约束和生成阶段继续调召回参数
某些用户能搜到不该看的内容授权来源和服务端过滤是否在召回前生效依赖 Prompt 要求模型保密

解析与清洗问题回到 文档导入与清洗,边界问题回到 文本切分与 Chunk Size。每次只改变一个主要变量,并使用 RAG 评估方法比较候选版本,才能知道改善来自哪里。

5. 权限、引用与失败降级 ​

  • 权限条件应由可信身份映射为服务端过滤表达式,并同时约束向量、关键词、缓存和重排候选。
  • 过滤最好尽可能早地进入检索;若基础设施只能后过滤,要验证候选不足和侧信道风险。
  • 每个结果保留 document_id、版本、标题路径、定位和访问范围,生成引用后再校验引用确实来自本次授权候选。
  • 向量、关键词或重排任一路超时,不应静默伪装成完整成功。可以按已评估的策略降级、返回“证据不足”,并记录降级原因。
  • 查询、候选文本和日志可能含敏感信息,追踪默认记录 ID、耗时、版本和结果统计,而不是完整正文。

总结 ​

混合检索和重排序是常见选项,不是所有 RAG 的固定标准配置。简单语料可能只需一种检索;精确标识符、跨语言或领域术语场景则可能从混合检索获益。最终方案必须由代表性评估集、权限正确性、延迟和成本共同决定。

回到 RAG 专题查看学习顺序;下一步阅读 RAG 评估方法建立回归基线,或用 RAG 生产化检查清单核对检索、权限、引用和降级证据。完整项目连接见 企业级 RAG 知识库。

AI 应用开发训练营 · 现在开始

别只收藏 AI 文章,今天就做出第一个能上线的项目

文章解决认知,项目才证明能力。把 Agent、RAG、MCP 变成可运行、可展示、可面试表达的成果,现在就从一次岗位准备度自测开始。

立即开始 AI 岗位准备度自测 查看训练营路线
真实学员成果先看成果,再决定是否开始 →
  1. 01选方向
  2. 02做项目
  3. 03出成果
  4. 04拿面试