首页/新闻资讯/正文详情

【RAG 学习笔记 02】在线链路七步走:混合检索与 RRF 为什么有效

发布时间:2026/9/27 1:55:18 来源:云帆数科 栏目:资讯中心
【RAG 学习笔记 02】在线链路七步走:混合检索与 RRF 为什么有效
这是 RAG 学习笔记的第 2 篇把在线链路走一遍问题清洗 → 查询改写 → 混合检索 → Rerank → 组装上下文 → LLM 生成 → 引用后处理我原本是硬背这串流程背不下来后来把它想成帮朋友查资料回答问题的完整过程就顺了。本系列导航00 开篇用「开卷考试」理解 RAG 与我的学习方法01 Chunking 切块与 Embedding 选型02 在线链路七步走与混合检索 RRF本篇03 Rerank 与查询改写04 工程化延迟、缓存、成本与权限05 评测调优与三个进阶架构一、七步流程每一步为什么存在步骤做什么类比问题清洗去掉错别字、多余空格、敏感词把朋友含糊的话听清楚查询改写把口语化、有指代的问题改成适合检索的句子把它退款怎么算改成会员年卡的退款条件是什么混合检索同时用关键词BM25和语义向量找文档同时用关键字搜索和意思相近搜索Rerank把找回来的几十篇用更精细的模型重新排序海选后面试精挑 5 个组装上下文把挑出来的片段拼成一段话给 LLM把资料整理好放在桌上LLM 生成大模型根据资料写出答案你根据资料组织语言回答朋友引用后处理标来源、检查不安全内容告诉朋友这是从 XX 文件第 3 页看到的记忆口诀清 → 改 → 找 → 排 → 拼 → 答 → 标。面试口述版“在线阶段先清洗和改写用户问题然后混合检索召回候选再用 Rerank 精排组装上下文给 LLM 生成最后做引用和安全后处理。”——这就够了不需要一字不差背步骤名。二、混合检索BM25 管字面向量管意思BM25 是什么BM25 是一种基于关键词的检索算法传统搜索引擎比如 Elasticsearch默认就用它。它给每篇文档打分依据三个因素词频查询词在文档里出现几次越多分越高但有上限逆文档频率IDF一个词在所有文档里越罕见权重越高——比如Pod比怎么稀有所以匹配上Pod得分更高文档长度长文档做归一化避免长文档占便宜。一句话BM25 就是字面匹配打分器。向量检索在做什么很多人包括我以为向量检索就是把文字编码成向量——其实它包含两步编码用 Embedding 模型把用户问题变成向量约 10–30ms搜索拿这个向量去向量数据库Milvus / FAISS里找最相似的文档向量约 20–50ms。类比你要在图书馆找一本内容相似的书——先把需求翻译成管理员能懂的索引号编码管理员再去书架按索引号找搜索。两步加起来才是向量检索时间。为什么必须混合BM25 擅长精确匹配产品名、错误码、版本号、专有名词向量检索擅长语义泛化同义改写、口语表达。举例用户问K8s Pod 启动失败怎么排查方式结果纯向量召回Kubernetes 容器无法运行意思相近但可能漏掉精确包含Pod的文档纯 BM25精确命中Pod“启动失败”但漏掉容器无法运行这类语义相关文档混合 RRF两者互补Recall10 从 0.78 提升到 0.91一句话BM25 擅长字面一样向量擅长意思一样合起来才最全。三、RRF为什么只看排名、不看分数RRF Reciprocal Rank Fusion倒数排名融合。公式很朴素score Σ 1 / (k rank_i)意思是对每一路检索结果按其排名贡献分数第 1 名贡献最大越靠后越小再把多路分数相加。为什么不用加权分数而是用 RRF这是我最没懂、后来最服气的一点BM25 的分数范围可能是 0–20向量相似度是 0–1量纲完全不一致。直接加权归一化会引入偏差归一到哪个区间权重怎么定。而RRF 只看排名对分数量纲不敏感所以更稳健。k 值常用默认k60对排名差异不敏感。面试被问到怎么融合多路检索结果时我的答法是“我用 RRF 而不是加权求和因为两路分数量纲不同加权归一化会引入偏差RRF 只依赖排名更稳健。”四、顺带搞懂什么叫双塔粗排面试文档里写召回阶段是双塔粗排Query 和 Doc 独立编码交互不充分我一开始完全不懂。双塔有两个塔神经网络——一个塔编码 Query另一个塔编码 Doc。它们各自独立把文字变成向量然后算两个向量的相似度。为什么叫粗排因为 Query 和 Doc没有放在一起看模型不知道它们之间具体的词级交互。举例Query 是苹果价格Doc 是苹果手机售价——双塔只能分别编码可能忽略价格和售价的细微对应关系。精排Cross-Encoder把 Query 和 Doc 拼在一起如[CLS] 苹果价格 [SEP] 苹果手机售价 [SEP]让模型同时看到两边做深度交互——精度更高但计算慢。所以标准流程是双塔粗排召回 Top-50 → Cross-Encoder 精排 Top-5。粗排快但不够准精排准但慢所以只对少量候选做。五、检索为空怎么办三层兜底举例保险理赔 RAG用户问2025 年新增的宠物医疗险报销比例第一层——放宽重试降阈值、去过滤、启用 BM25 兜底第二层——明确拒答Prompt 约束上下文无相关信息时直接说未找到第三层——追问澄清追问您是指哪一款宠物险核心原则宁可拒答不可幻觉。这一条我后来在评估部分又见到一次无答案样本、受监管行业设 Faithfulness 门槛 0.98。会拒答是 RAG 系统成熟的标志只会答不会拒的系统在真实业务里很危险。六、这一篇的记忆卡概念一句话在线七步清 → 改 → 找 → 排 → 拼 → 答 → 标BM25基于关键词的字面匹配打分器词频 IDF 长度归一向量检索编码文字→向量 搜索向量库找相似混合检索BM25 管字面、向量管意思Recall10 可从 0.78 → 0.91RRF只看排名不看分数避免量纲不一致双塔粗排Query/Doc 独立编码快但不准检索为空放宽重试 → 明确拒答 → 追问澄清七、我的复盘这一篇最大的收获是搞清了**召回和排序是两个不同的目标**召回阶段要的是别漏高 Recall排序阶段要的是把对的放前面高精度。一句话想通后很多设计就顺了为什么召回想多要几路——为了 Recall为什么召回了还要 Rerank——为了把对的排前面为什么 RRF 只看排名——因为在排序这个目标上排名比原始分数更可比。下一篇讲 Rerank 和查询改写为什么 Cross-Encoder 更准却更慢、HyDE 什么情况下会把检索带偏、以及为什么多轮对话里每一轮的 Query 都必须自包含。

相关推荐

泰山派RK3566 MIPI屏调试实战:设备树配置与触摸校准指南
泰山派RK3566 MIPI屏调试实战:设备树配置与触摸校准指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 1:55:18

分支线耦合器实战设计:从ADS仿真到PCB失效根因分析
分支线耦合器实战设计:从ADS仿真到PCB失效根因分析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 1:55:12

光模块深度拆解:从硬件构造到PAM4、DSP与硅光技术实战指南
光模块深度拆解:从硬件构造到PAM4、DSP与硅光技术实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 1:55:12

不想每次都敲 docker 命令?用 Portainer CE 在 fnOS 上做一个可视化容器控制台
不想每次都敲 docker 命令?用 Portainer CE 在 fnOS 上做一个可视化容器控制台

不想每次都敲 docker 命令?用 Portainer CE 在 fnOS 上做一个可视化容器控制台 前言 我并不排斥命令行,真正让我觉得麻烦的是那些高频、重复、又很容易看漏的信息:容器到底有没有启动、端口映射到哪里、日志刚刚报了什么、哪个镜像还在占空间… · 2026/9/27 5:17:18

台州云推广网站避坑指南:3个细节救活你的官网转化率
台州云推广网站避坑指南:3个细节救活你的官网转化率

台州云推广网站避坑指南:3个细节救活你的官网转化率 别被那些花里胡哨的模板骗了,打开一看全是千篇一律的“蓝白配色加轮播图”,客户根本记不住你是谁。这就是为什么很多台州本地企业花了几千块做站,流量却没涨,转化还是零。今天这份… · 2026/9/27 5:17:12

想让AI做一局节拍跳台?把这7条节拍与判定规则写进提示词
想让AI做一局节拍跳台?把这7条节拍与判定规则写进提示词

唱片、平台、金币和角色同时出现,只能证明节拍游戏的视觉方向成立。真正可玩的节拍跳台,需要音乐时钟、平台事件、输入窗口、角色碰撞、计分和关卡结算共享同一套时间基准。本文将第一版限制为 120 BPM、90 秒和一条固定轨道,并给出七条可直接… · 2026/9/27 5:17:12

逐字同步歌词+AI翻译:深度测评Echo Music的8大歌词引擎与多源歌词架构
逐字同步歌词+AI翻译:深度测评Echo Music的8大歌词引擎与多源歌词架构

逐字同步歌词AI翻译:深度测评Echo Music的8大歌词引擎与多源歌词架构 【免费下载链接】Echo-Music A modern Android music app with ad-free streaming, synced lyrics, offline playback, and an intuitive user experience. 项目地址: https://gitcode.com/gh_… · 2026/9/27 5:16:42

中秋福利!奶茶外卖打车全覆盖
中秋福利!奶茶外卖打车全覆盖

这几个场景花得最值(最低0.01元起) 要说券的利用率,早点和下午茶排第一。楼下便利店两个包子加一杯豆浆,七八块钱,用券之后付几毛甚至零元,连着几天的早饭钱省出来了。想喝奶茶也行,一杯十几块的… · 2026/9/27 5:16:42

全国小学网站建设避坑指南:3招省下3万预算
全国小学网站建设避坑指南:3招省下3万预算

全国小学网站建设避坑指南:3招省下3万预算 找建站公司最怕什么?怕被坑,怕花大钱建个“样子货”,更怕后期维护被当韭菜。我干了十年这行,见过太多学校、教育局踩的坑,今天把这套【避坑指南】掏心窝子讲给你听。… · 2026/9/27 5:16:42

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码