news 2026/5/30 11:43:35

提升 RAG 召回率的核心是:**让“正确文档更容易被搜到”,并且“不要太早把候选文档过滤掉”。**

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
提升 RAG 召回率的核心是:**让“正确文档更容易被搜到”,并且“不要太早把候选文档过滤掉”。**

提升 RAG 召回率的核心是:让“正确文档更容易被搜到”,并且“不要太早把候选文档过滤掉”。

可以从这几层优化:

1. 优化切分策略

很多召回差不是向量模型差,而是 chunk 切得不好。

建议:

  • chunk 不要太大:太大容易语义稀释。
  • chunk 不要太小:太小容易缺上下文。
  • 使用overlap:例如 10%–20% 重叠,避免答案跨 chunk 被切断。
  • 按结构切分:标题、段落、Markdown heading、表格、代码块、FAQ 项,比固定字符数更好。
  • 给 chunk 加上下文:把文档标题、章节标题、来源、时间等 metadata 拼进 embedding 文本。

例如不要只 embedding:

退款期限为 7 天。

更好是:

文档:售后政策 章节:退款规则 内容:退款期限为 7 天。

2. 使用 Hybrid Search

单纯向量检索容易漏掉关键词、编号、专有名词、代码、产品名。

推荐组合:

向量检索 + BM25/关键词检索

适合召回:

  • 人名、公司名、产品型号
  • API 名称
  • 错误码
  • 法条编号
  • 专有术语
  • 短查询

常见做法:

  1. 向量检索 top_k=50
  2. BM25 检索 top_k=50
  3. 合并去重
  4. 再 rerank top_k=5~10

3. 提高 top_k,不要过早裁剪

很多系统默认只取 top 3 或 top 5,召回自然低。

可以这样:

retriever top_k = 30~100 reranker top_k = 5~10

也就是说:召回阶段多拿,排序阶段再精排。

如果直接向量 top 5 给 LLM,很容易漏答案。

4. 加 Reranker

Embedding 负责“粗召回”,reranker 负责“精排序”。

常见结构:

Query → Hybrid Search 召回 top 50 → Reranker 重排 → 取 top 5 给 LLM

Reranker 对召回率本身不是直接提升,但它可以让你敢于扩大 top_k,因为后面有模型帮你筛掉噪声。

常用 reranker 类型:

  • cross-encoder reranker
  • bge-reranker
  • Cohere Rerank
  • Jina Reranker
  • LLM rerank

5. Query Rewrite / Query Expansion

用户的问题常常和文档里的表达不一致。

例如用户问:

怎么退钱?

文档写的是:

退款、退货、售后、赔付、取消订单

可以在检索前扩展 query:

原问题:怎么退钱? 扩展查询: - 退款流程 - 退货退款 - 取消订单后退款 - 售后赔付 - 退款到账时间

常见方法:

  • 多 query 检索
  • 同义词扩展
  • HyDE:先让 LLM 生成一个“假想答案”,再用假想答案去检索
  • 根据用户问题补全上下文

6. 做多路召回

不要只依赖一种检索方式。

可以并行:

1. Dense vector search 2. BM25 keyword search 3. Title/metadata search 4. FAQ exact match 5. Parent document search 6. Graph / entity search

然后合并候选结果。

尤其在企业知识库里,metadata 非常重要,比如:

  • 产品线
  • 地区
  • 版本
  • 时间
  • 文档类型
  • 权限范围
  • 语言

7. Parent-Child Retrieval

如果 chunk 太小,召回到了局部内容,但上下文不够。

可以用:

child chunk 用来检索 parent chunk / 原章节 用来喂给 LLM

流程:

小 chunk embedding 检索 → 命中 child chunk → 返回其所属 parent section → 给 LLM 更完整上下文

这样可以兼顾:

  • 小 chunk 的精准召回
  • 大 chunk 的上下文完整性

8. 改进 embedding 文本

很多系统只把正文做 embedding,效果一般。

可以把这些一起加入 embedding:

标题 章节路径 摘要 关键词 实体 正文 表格说明

例如:

标题:企业微信登录失败排查 关键词:登录失败、扫码失败、SSO、权限、账号冻结 正文:……

这对短查询召回非常有帮助。

9. 建立评测集

没有评测集就很难知道召回率有没有真的提升。

建议构建一批:

query -> 应该命中的文档/chunk

指标看:

  • Recall@5
  • Recall@10
  • Recall@50
  • MRR
  • nDCG
  • Hit Rate

例如:

Recall@10 = 正确答案是否出现在前 10 个召回结果中

优化时不要只看主观感觉。

10. 处理表格、PDF、图片、代码

很多 RAG 召回差,是因为非结构化内容没有处理好。

建议:

  • PDF 保留标题层级
  • 表格转成 markdown 或自然语言描述
  • 图片/OCR 内容加入索引
  • 代码按函数、类、文件路径切分
  • 表格每行加表头上下文
  • 对扫描 PDF 做 OCR 后再入库

例如表格不要只存:

7天 | 原路返回 | 1-3工作日

而应存:

退款规则表:无理由退款期限为7天,退款方式为原路返回,到账时间为1-3个工作日。

推荐的一套实用方案

比较稳的 RAG 召回架构:

文档清洗 → 结构化切分 → chunk 加标题/metadata → 向量索引 + BM25 索引 → 多 query 扩展 → hybrid search top 50 → reranker top 5~10 → LLM 生成答案 → 日志与评测集持续优化

优先级建议:

  1. 先做评测集
  2. 调 chunk size 和 overlap
  3. 加 hybrid search
  4. 提高 top_k
  5. 加 reranker
  6. 做 query rewrite
  7. 优化 metadata 和结构化解析

很多情况下,只做这三件事就能显著提升召回:

结构化切分 + Hybrid Search + Reranker

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 11:43:17

Pywinauto控件抓取翻车实录:从Inspect/Spy++到‘最佳匹配’的避坑指南

Pywinauto控件定位实战:从调试工具到高级匹配的工程化解决方案在Windows GUI自动化测试领域,Pywinauto无疑是Python技术栈中最强大的工具之一。但当脚本从demo环境迁移到真实项目时,开发者往往会遭遇一个令人沮丧的困境——那些在简单示例中运…

作者头像 李华
网站建设 2026/5/30 11:38:33

DownKyi完全指南:三分钟掌握B站视频下载终极技巧

DownKyi完全指南:三分钟掌握B站视频下载终极技巧 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&#xff09…

作者头像 李华
网站建设 2026/5/30 11:37:39

文件同步工具测评:10款企业同步盘横向对比(2026选型指南)

在企业数字化办公日益普及的今天,“同步盘”已成为跨设备访问、团队协作与数据安全治理的基础设施。相比传统网盘的“上传-下载”,同步盘更强调“文件变更自动同步”,并配套权限、版本、审计与共享机制,能显著降低版本混乱与泄露风…

作者头像 李华
网站建设 2026/5/30 11:36:55

如何快速掌握Ryzen处理器调试:面向初学者的完整硬件调优指南

如何快速掌握Ryzen处理器调试:面向初学者的完整硬件调优指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: http…

作者头像 李华