1. 什么是 RRF 以及为什么需要它?
一句话结论 :RRF 是一个"超级公平的投票计分员",专门用来解决把不同搜索方式(比如向量搜和关键词搜)的结果合并排序的问题,它只看排名,不看原始分数。
混合检索的两大流派
- 向量检索(Dense Search):按"语义"搜。特点是聪明、懂变通,能理解同义词和上下文(比如搜"打车"能找出包含"滴滴"、"出租车"的文章)。它的得分通常是介于 0 到 1 之间的余弦相似度(如 0.85)。
- 关键词检索(Sparse Search / BM25):按"字面命中率"搜。特点是精准、死板,只看关键字是否命中及出现的频率(比如搜"报错 502",它就死盯"502"这个词)。它的得分通常是十几、几十的绝对数值(如 25.3)。
为什么需要 RRF(痛点)
正因为上述两种检索方式的"计分体系"完全不在一个维度上,就像一个是百分制,一个是千分制,我们无法将它们的分数直接相加来比较。这时候就需要 RRF 统一尺度。
RRF 是怎么计算的
彻底抛弃原始分数,根据文章在各自列表里的"名次"来算分。
- 公式 :
得分 = 1 / (常数k + 名次)(k 通常为 60) - 举例 :一篇文章在向量搜排第 2,关键词搜排第 4。那它的总得分就是
1/(60+2) + 1/(60+4)。
RRF 的魔力
它偏爱"双料冠军"。如果一篇文章既在"语义上"匹配,又在"字面上"匹配(在两边排名都很高),它的倒数之和就会非常大,最终排名就会高。这能极大提升最终答案的准确度。
2. Query Rewrite 场景下的 4 路并发检索实例
一句话结论:一套顶级的 RAG 检索体系是"两段式"的:先用 4路并发搜索+RRF 进行"粗筛"(捞出几十篇候选),再交由专门的 Rerank 模型进行"精排"(挑出最核心的 3 篇),最后发给大模型。
工作流拆解(两段式黄金架构)
- 多路并发召回(粗筛)
- 原问题 (Q1) ➡️ 发给 向量数据库 ➡️ 得到 Top 10 名单 A
- 原问题 (Q1) ➡️ 发给 关键词引擎 ➡️ 得到 Top 10 名单 B
- 改写问题 (Q2) ➡️ 发给 向量数据库 ➡️ 得到 Top 10 名单 C
- 改写问题 (Q2) ➡️ 发给 关键词引擎 ➡️ 得到 Top 10 名单 D
- 合并与 RRF 打分(粗筛排序) 把 A、B、C、D 四份名单合并去重,用 RRF 公式统一计算得分,选出综合得分最高的 Top 20 篇文章作为初筛候选集。
- Rerank 重新打分(精排) 把这 20 篇文章和用户问题一起喂给 专用精排模型(Cross-Encoder) ,让它进行深度阅读和重新打分,真正根据逻辑匹配度选出最靠谱的 Top 3。
- 大模型生成回答 最后,把这精挑细选的 Top 3 篇文章作为上下文拼接进 Prompt,发给生成式大模型(LLM)写出最终的回答。
为什么在 RRF 之后,非要加一道 Rerank (精排)?
- 因为粗筛(Embedding 向量检索)排不准:Embedding 用的是 Bi-Encoder 架构,属于"盲婚哑嫁"。用户问题和文档是各自独立变成数字向量的。这就会导致:搜"VPN 密码重置"时,由于"VPN 客户端安装"话题相近,也会得到极高的相似度分数,但实际上它根本无法回答用户的问题。
- Rerank (精排) 是降维打击 :精排用的是 Cross-Encoder 架构,属于"面对面对质"。它把用户问题和文章 拼接在一起 一口气读完。它能敏锐地判断出"虽然都提到 VPN,但一个是讲密码,一个是讲安装,逻辑不匹配",从而给不相关的文章打极低分。
- 精排的代价是慢:精排极其耗时。这也是为什么我们不能一上来就全库直接精排,而是必须先靠前面的 4路并发+RRF 快速"粗筛"出 20 篇,再把好钢用在刀刃上,对这 20 篇进行"精排"。
3. RAG 系统中的幕后英雄(小模型串讲)
一句话结论 :除了大模型外,标准 RAG 还需要 Query Rewrite 模型 、Embedding 模型 和 Rerank 模型,它们在流水线上各司其职,缺一不可。
3.1. Query Rewrite 模型(查询改写与路由 / Small LLM)
它的特点:
- 文字打磨工:它的职责不是回答最终问题,而是作为一个"翻译官"或"路由器",专门负责把用户随口说的、口语化的问题,改写成能够精确检索的关键词或子问题。
- 轻量级大模型:为了省钱和追求极致的响应速度,通常不会用最庞大、最昂贵的模型(如 GPT-4o),而是采用"小一号"的大模型。
业界最常用模型排行:
- GPT-4o-mini / Claude 3 Haiku:商业 API 中的性价比之王,速度极快,做问题改写和路由绰绰有余。
- Qwen2-7B / Llama3-8B 等开源小参数模型:企业私有化部署的标配,资源占用小,通常会针对"提问改写"做专门的微调(Fine-tuning)。
3.2. Embedding 模型(文本嵌入模型 / Bi-Encoder)
它的特点:
- "背对背"独立模式 :用户问题和知识库文档是独立分开进行转换的,互相不知道对方的存在(业界叫双塔架构)。
- 极速海选:因为不需要两两比对,它的速度极快,主要用于在几十万、上百万篇文档中做第一波"粗排(Recall)"。
- 不会说话:它是个纯粹的翻译机,只能把文字翻译成几百上千个浮点数(向量)。
业界最常用模型排行:
- BGE (BAAI General Embedding) :智源研究院出品(如
bge-m3,bge-large-zh-v1.5)。开源、免费、中文效果极佳,几乎是国内企业私有化部署的首选统治者。 - OpenAI Text Embedding (如
text-embedding-3-small/large):如果不要求私有化部署且有预算,直接调 API 最省事,综合素质顶尖。 - Jina Embeddings:支持高达 8K 长文本,最近在业界非常火,适合直接整篇长文档向量化。
- Cohere Embeddings:多语言支持强悍,国际上的标杆之一。
3.3. Rerank 模型(精排模型 / Cross-Encoder)
它的特点:
- "面对面对质"模式 :它把用户问题和初筛出来的文档拼接在一起同时阅读,能够深刻理解两者间的逻辑关系(比如到底能不能回答这个问题),而不是仅仅看"字面或者主题长得像不像"。
- 非常慢但极准:计算成本极高,不能拿去搜全库,只能对粗筛捞回来的 Top-N(比如前 20 篇)进行"精排",吐出一个极准的 0~1 的相关性分数。
业界最常用模型排行:
- BGE Reranker (如
bge-reranker-v2-m3):同样由智源出品,国内绝大多数开源 RAG 精排环节的标配,效果拔群。 - Cohere Rerank:商业 API 领域的精排天花板(SOTA),很多追求极致体验的大厂场景的首选。
- Jina Reranker:效果优秀且 API 价格相对便宜,开源版本也备受好评。
- BCE-Reranker (网易有道):专为中英双语优化,在跨语种(比如用中文搜英文资料)检索时表现非常出色。
阶段核心总结
一个满配的 RAG 后台其实是个极其严密且分工明确的"AI 接力赛": 小参数 LLM 负责润色改写问题 ➡️ Embedding 模型 负责极速海选捞人 ➡️ Rerank 模型 负责精细打分挑出前三名 ➡️ 大参数 LLM 拿着前三名的资料写最终总结。
4. RAG 检索核心概念全局大串联 (终极总结)
这篇文章一路走下来,RAG 检索的核心概念基本就全部串起来了。真正决定 RAG 效果的核心往往是 Query Rewrite + Chunking + Recall + Rerank,而不只是 LLM 本身。
RAG 标准全链路图
Query Rewrite (问题改写) ➡️ Metadata Filter (元数据过滤) ➡️ Recall (ANN+BM25 粗排) ➡️ RRF (排名融合) ➡️ Rerank (精排) ➡️ LLM (生成最终回答)
关键结论提炼
- Chunking (切块) 是基础 切块策略决定了知识如何被"打包",直接影响检索能找到什么。固定切块、滑动窗口、语义切块、Parent-Child 各有适用场景。注意"Lost in the Middle"现象------喂给大模型的 Chunk 并不是越多越好。
- Embedding 把语义变成数学 把文本变成向量,让语义相近的词在空间中距离更近。Dense (向量) 抓语义,Sparse (BM25) 抓字面关键词,两者完美互补。
- 相似度认准"余弦 (Cosine)" 主流 Embedding 模型就是为余弦相似度训练的,用别的距离度量方式相当于给考试临时换了评分标准,会导致算不准。
- HNSW 算法解决速度问题 百万级向量如果逐条对比会卡死。HNSW 用"跳表的分层思想 + 图的贪心搜索",用可控的召回损失,换来了数量级的速度提升。它通过三个参数(
M、ef_construction、ef_search)来控制精度和性能的平衡。 - Query Rewrite 是隐藏的高收益点 用户往往不会提问。让 LLM 先改写 query 再去检索,通常是投入产出比最高的单点优化。而元数据过滤 (Metadata Filter) 则是生产环境的第一道防线------先缩减安全范围,再去做召回。
- 混合检索才是终局 任何单一路径都有盲区。语义搜索管意思,BM25 管字面,两路互补;用 RRF 融合它们的排名,再用 Rerank 面对面精排------多路协同,缺一不可。检索的本质,从来不是单一技术,而是多条防线的完美配合。