当前位置: 首页 > news >正文

让 Agent RAG 真正好用,检索质量是关键,多路召回 + 重排序

一、多路召回与重排序:工程级的检索优化

要让 Agent RAG 真正好用,检索质量是关键。工程实践中,最有效的提升策略是多路召回 + 重排序

多路召回策略:三种检索方式融合

用户查询并行触发三路:向量检索(语义相似度,捕捉同义表达)、关键词检索 BM25(精确匹配,捕捉专有名词)、结构化查询](SQL/元数据过滤,精准条件筛选)。三路结果汇入重排序器,用 Cross-Encoder 精细打分,输出 Top-K 高质量上下文注入 LLM。

为什么需要多路召回?

单纯的向量检索有盲区——它对语义相似度很敏感,但对精确关键词不够好。例如:

  • 用户问"第 3.2.5 条款的内容"——向量检索可能找不到,但关键词检索能精确定位
  • 用户问"关于资金安全的政策"——关键词检索找不到,但向量检索能命中语义相关的段落

三路召回各司其职:

  • 向量检索:捕捉语义相似性,处理同义表达
  • 关键词检索(BM25):精确匹配,处理专有名词、型号、条款编号
  • 结构化查询:利用元数据(时间、类别、作者)精准过滤,缩小检索范围

重排序(Reranker)

三路召回可能带来几十个候选文档块。重排序器的任务是从中精选出最相关的 Top-K。

Bi-Encoder(向量检索的核心):把查询和文档分别向量化,计算相似度。速度快,但精度较低——因为查询和文档没有交叉注意力。

Cross-Encoder(重排序的核心):把查询和候选文档拼接在一起,让模型同时"看到"两者,给出相关性分数。精度高得多,但速度慢——只适合对少量候选做精排,而不是全库检索。

实际系统的标准做法:向量检索/关键词检索(快,覆盖广)→ 多路合并 → Cross-Encoder 重排(精,准)→ Top-K 注入 LLM

二、Self-RAG:让 Agent 知道自己"不知道"

在医疗、法律、金融]等高精度要求场景,幻觉是零容忍的。Self-RAG是目前最有效的幻觉抑制方案之一。

它的核心创新:让模型在生成过程中主动插入"反思令牌",评估检索结果质量和回答可靠性。

Self-RAG 完整流程图

五步流程:1.判断是否需要检索(不需要则直接生成)→ 2.执行多路召回 → 3.判断检索结果是否相关(不相关则重检索,有循环箭头)→ 4.生成附引用来源的答案 → 左侧有"最终自我核查"的反向路径。

Self-RAG 的四个关键判断

① 是否需要检索(Retrieval Token)

不是所有问题都需要查文档。"2 + 2 等于多少"不需要检索,"公司的差旅报销标准"才需要。模型自主判断,避免不必要的检索开销。

② 检索结果是否相关(ISREL Token)

对每个检索到的文档块打分:这个段落真的和问题相关吗?过滤掉无关内容,只保留真正有用的部分。

③ 答案是否有文档支撑(ISSUP Token)

生成答案后,模型检查:这句话有文档依据吗?如果某个陈述没有文档支撑,模型应该标注"无法确认"而不是硬编。

④ 答案整体质量评分(ISUSE Token)

综合评估答案的有用性——不只是准确,还要完整、清晰、真正回答了用户的问题。

三、RAG 管道的关键工程决策

分块策略怎么选?

fromlangchain.text_splitterimportRecursiveCharacterTextSplitter# 递归字符分割(最常用)splitter=RecursiveCharacterTextSplitter(chunk_size=512,# 每块大小(Token 数)chunk_overlap=50,# 重叠大小,防止边界截断separators=["\n\n","\n","。","!","?"," "]# 优先按段落切)# 语义分割(质量更高,速度更慢)fromlangchain_experimental.text_splitterimportSemanticChunkerfromlangchain_openaiimportOpenAIEmbeddings semantic_splitter=SemanticChunker(embeddings=OpenAIEmbeddings(),breakpoint_threshold_type="percentile"# 在语义跳变处切割)

经验法则

  • 纯问答场景:chunk_size=512, overlap=50是个好起点
  • 需要完整上下文(如合同条款):chunk_size=1024, overlap=100
  • 代码文档:按函数/类边界切,而不是固定大小

Embedding 模型怎么选?

模型语言支持向量维度适用场景
text-embedding-3-small多语言1536通用,性价比高
text-embedding-3-large多语言3072高精度要求
bge-m3(开源)多语言1024私有部署,中文优秀
jina-embeddings-v3多语言1024长文档效果好

关键原则:确定了就不要换。一旦换模型,历史索引全部失效,需要重新向量化整个知识库。

检索数量 K 怎么设置?

  • K 太小:可能漏掉关键信息
  • K 太大:塞满上下文,LLM 被无关内容干扰,成本也高

经验参考:

  • 简单问答:K=3~5
  • 复杂分析:K=8~12
  • 使用重排序后:先召回 K×3,重排后取 K
http://www.jsqmd.com/news/1392091/

相关文章:

  • 图像传感器基础知识介绍
  • 华硕笔记本性能控制实测:GHelper 怎么用?轻量开源替代官方控制台
  • 成都宠物医疗助理培训班 零基础学宠物 B 超 X 光实训 怎么报名去哪里学 - 湖北找学校
  • 当AI遭遇算力、能源和落地困境:类脑智能或成为具身智能破局关键
  • 26/8/13下班学习小结
  • 用Python让AWR1843毫米波雷达数据在屏幕上实时跳动,比想象中简单
  • 告别上万行代码的眼花缭乱:notepad-- 代码折叠功能实用手册
  • 智能压枪从入门到实战:PUBG-Logitech鼠标宏自动识别压枪完整调校手册
  • 新电脑装软件装到崩溃?WinUtil 让你半小时搞定安装、优化与修复
  • LDD3--字符设备驱动
  • 魔兽争霸3地图编辑器卡顿救星:HiveWE完整上手指南,大图创作告别等待
  • 如何判断一家 GEO 服务商是否靠谱?
  • N1搭建Hexo个人博客,部署博客到Github
  • 长春网站建设加q479185700:中小企业突围的数字破局之道与实战避坑指南
  • 【VI Generator × GPT:让AI 更加快速准确的生成 LabVIEW 工程】
  • Demucs量化模型实战:mdx_q与mdx_extra_q的INT8部署避坑指南
  • PDF书签添加工具:三步为扫描版PDF快速生成智能导航目录
  • 从报错到流畅运行:我是这样彻底解决 Visual C++ 运行库问题的
  • 功能安全系列: MISRA C与汽车软件的安全工程学
  • TreeMap 的使用
  • BT下载慢到怀疑人生?三步搞定trackerslist免费公共Tracker,重回满速时代
  • WinUtil实测:免费Windows优化工具,5分钟装完常用软件,旧电脑提速40%
  • 李建忠 电子商务网站建设与管理 ppt 深度解析与实战应用指南
  • 开发者 2026 检测书签栏:12 个链接应对 90% 网络故障
  • 别再手动刷种子了!Cubiomes Viewer 免费开源搞定 Minecraft 稀有种子查找与地图分析
  • 盛科 8 口交换板国产化配置与宽温环境调试记录
  • BilibiliDown 上手指南:免费开源的跨平台B站视频下载工具,5分钟搞定高清批量下载
  • 从数学最高荣誉到AI革命:基础科学正在决定人工智能未来高度
  • 【研发类-框架和库Skills】azure-containerregistry-py 技能
  • 得物知识问答:复合检索 Agent 的系统设计实践