← 算法与AI总览 首页 / 算法与AI / AI 基础入门 / 第14课 · 重排 Rerank
AI 基础入门 · 第14课

重排 Rerank:粗排之后再精排,把最相关的顶到最前面

上一课讲了 Embedding 粗排——从百万文档里快速捞出 50~100 个"大致相关"的候选。但粗排是双塔结构,问题和文档是各算各的,精度不够。Rerank(重排)就是用更贵但更准的交叉编码器(cross-encoder)把这几十个候选重新打分排序,把真正能回答问题的那 3~5 个顶上来。这一课讲透两阶段检索、cross-encoder 为什么比 bi-encoder 准但慢、以及 bge-reranker 在 RAG 里的价值。

① 小白第一课怎么学(4 步走,约 45 分钟)

这一课紧接 Embedding,是 RAG 检索质量的最后一道质量闸门。

1建立直觉(10 分钟)
读②③:粗排快但糙,精排慢但准,两阶段配合。
2搞清双塔 vs 交叉编码器(15 分钟)
读④:谁分开算、谁放一起算。
3看 Rerank 在 RAG 的位置(10 分钟)
读⑤:粗排 Top-50 → Rerank Top-5。
4刷题自测(10 分钟)
做⑦⑩,错题回⑥看易错点。
本课小目标学完你要能:① 说清"粗排→精排"两阶段;② 区分 bi-encoder(双塔)和 cross-encoder(交叉编码器);③ 解释为什么 Rerank 更准但更慢;④ 列举 bge-reranker 是干嘛的。

② 一图看懂:两阶段检索流水线

用户问题 "怎么退款" ① 粗排(Embedding 双塔) 百万文档 → 算向量 → 找近邻 快,召回 Top-50~100 ② 精排(Rerank 交叉编码器) 问题+每个候选 一起过模型 慢,重新打分 → Top-5 喂给大模型 只带最相关 的 3-5 段 为什么不能一步到位? 粗排 百万级 毫秒级 只留50个 精排 50个 几十~百毫秒 只留5个 大模型 读5段 生成答案 粗排:先广撒网,宁多勿漏(快) 精排:再挑最准的,宁缺毋滥(准) 两阶段 = 速度 + 精度兼得
读法:粗排(Embedding 双塔)在百万文档里毫秒级捞出 Top-50;精排(Rerank 交叉编码器)把这 50 个和问题一起仔细看一遍,重新打分,留下最准的 3~5 个喂给大模型。

③ 本质直觉:为什么需要"再排一次"

一句话定义:Rerank(重排)是在粗排召回的候选基础上,用一个更精细的模型对"问题—候选"成对地重新打分,把真正相关的文档排到最前面。

为什么粗排不够准?Embedding 用的是双塔(bi-encoder)结构:问题和文档分别独立编码成向量,再算余弦相似度。好处是文档向量可以离线算好、存在库里,查询时只算一次问题向量——快。坏处是问题和文档在编码时互不可见,交互不充分,召回的候选可能"意思沾边但答非所问"。

Rerank 用的是交叉编码器:把"问题 + 候选文档"拼在一起,一起送进模型,让它们在注意力层里充分交互后输出一个相关性分数。因为能看到双方,所以判得更准;但每对都要跑一次模型,慢得多。

类比:粗排像招聘会初筛——HR 只看简历关键词,一天筛几千份(快但糙);Rerank 像部门经理面试——每份简历和候选人面对面聊,判得准但一天只能面几十人。所以先初筛出 50 人,再面试挑 5 个。

双塔 bi-encoder(粗排) 问题→向量,文档→向量(分开算) 算余弦相似度,快但交互少 交叉编码器 cross-encoder(精排) 问题+文档拼一起 → 一起过模型 注意力充分交互,准但慢 先粗排捞50,再精排挑5
一句话总结粗排求"快、广",精排求"慢、准";两阶段配合,才能在百万文档里既不漏掉正确答案、又不把垃圾塞给大模型。

④ 完整体系:双塔 vs 交叉编码器对比 + 主流 Rerank 模型

两种编码器对比

维度双塔 bi-encoder(Embedding)交叉编码器 cross-encoder(Rerank)
编码方式问题和文档各自独立编码成向量问题+文档拼接后一起过模型
交互深度只在最后算余弦相似度,交互少注意力层充分交互,看得细
速度快(文档向量可离线预计算)慢(每对都要实时跑一次)
精度中等,召回"大致相关"高,精排"真正相关"
用在哪粗排:百万级 → Top-50精排:Top-50 → Top-5
代表模型bge-m3、text-embedding-3bge-reranker、Cohere Rerank

主流 Rerank 模型速查

模型出品方一句话
bge-reranker-v2-m3智源 BAAI开源中文首选,多语言,和 bge-m3 配套
bge-reranker-large智源 BAAI英文/通用场景,560M 参数
Cohere Rerank 3Cohere闭源商用 API,开箱即用
Jina RerankerJina AI开源,长文本友好
典型 RAG 配置粗排 Top-50(Embedding) → Rerank Top-5(cross-encoder) → 拼进提示词 → 大模型生成
Rerank 不是越大越好它要对每个候选都跑一次,Top-100 就跑 100 次。一般粗排捞 50~100 个给 Rerank 就够,太多会把延迟拖垮。

⑤ 用法场景与典型例题:RAG 中重排的价值

场景 1:为什么加了 Rerank,回答明显变准了
客服 RAG 系统,用户问"我的订单怎么退款"。
粗排靠 Embedding 捞回 50 条,里面混着"退货政策""优惠券使用""订单查询"等字面沾边的片段。过一遍 bge-reranker 后,真正讲"退款流程"的那几条被顶到前面,大模型拿到的就是对的资料,回答自然准。
场景 2:Rerank 能把"答非所问"的挤下去
用户问"高血压能不能吃西柚"。
Embedding 粗排可能捞回一堆"高血压饮食"的泛泛之谈;cross-encoder 因为同时看到问题和候选,会把真正讨论"西柚与降压药相互作用"的片段排到最前,把泛泛的挤下去。
场景 3:什么时候可以不用 Rerank
库很小(几百篇文档)、或对延迟极度敏感。
文档少到粗排直接能捞准,Rerank 那 50 次推理纯属浪费;或者在边缘设备上跑,加不动这一层。大多数生产级 RAG(几千篇以上)都建议加 Rerank。
RAG 全链路一句话文档切块 → Embedding 存向量库 → 问题 Embedding → 粗排 Top-50 → Rerank 精排 Top-5 → 拼进提示词 → 大模型生成。Rerank 是检索质量的最后一道闸门。

⑥ 高频错误诊断(4 条)

错误 1:以为 Rerank 就是再做一次 Embedding 检索不是。Rerank 用的是 cross-encoder,把问题和候选拼在一起实时打分,不是算余弦相似度。
错误 2:粗排捞了 1000 个给 Rerankcross-encoder 每个候选都要跑一次模型,1000 个就是 1000 次前向,延迟直接爆。一般粗排 50~100 个给 Rerank。
错误 3:用 Embedding 模型当 Rerank 用Embedding 是双塔,快但糙;Rerank 要的是 cross-encoder 的精度。两者结构不同,不能互相替代。
错误 4:以为加了 Rerank 就万事大吉它只是把粗排候选里的相关项顶上来;如果粗排压根没召回正确文档(漏了),Rerank 也变不出来。粗排召回率和 Rerank 精度要一起调。

⑦ 考点真题演练(4 题)

考点分布

考法出题形式应对
两阶段顺序问先粗排还是先精排先粗排后精排
cross vs bi问谁更准但慢cross-encoder
Rerank 模型问 bge-reranker 是什么重排模型
Top-K 设置问粗排捞多少给 Rerank50~100

真题基础1. RAG 检索的两阶段顺序是?

真题中档2. 为什么说 cross-encoder 比 bi-encoder 准但慢?

真题中档3. bge-reranker 属于哪类模型?

真题拔高4. 关于 Rerank 的候选数量,下面哪个做法合理?

⑧ 必背知识点卡

两阶段:粗排(快广)→ 精排(慢准) 先捞后挑
粗排:bi-encoder 双塔,问题文档分开算向量 bge-m3
精排:cross-encoder,问题文档拼一起过模型 bge-reranker
为什么准:问题和候选能在注意力层充分交互 不是只算余弦
为什么慢:每对候选都要实时跑一次 不能预计算
典型配置:粗排 Top-50 → Rerank Top-5 再喂大模型
召回是前提:粗排没捞到正确文档,Rerank 也救不回来 两者都要调

⑨ 应用输出:一行代码加 Rerank

实战场景:在已有 Embedding 检索后面接一层 bge-reranker。
① 用 sentence-transformers 的 CrossEncoder:
from sentence_transformers import CrossEncoder
reranker = CrossEncoder("BAAI/bge-reranker-v2-m3")
# hits 是粗排返回的 50 个候选文本
pairs = [[query, doc] for doc in hits]
scores = reranker.predict(pairs)          # 每对打一个相关性分
ranked = sorted(zip(hits, scores), key=lambda x: -x[1])
top5 = [h for h, s in ranked[:5]]          # 取最相关的 5 条
② 把 top5 拼进提示词:把这 5 条片段和用户问题一起喂给大模型,让它"看着资料回答"。
③ 注意:bge-reranker 和 bge-m3 是配套的,但即使粗排用别的 Embedding,Rerank 这层也能独立提升精度。
口述全链路"先粗排用 Embedding 双塔从百万文档里捞 50 个大致相关的;再用 Rerank 的 cross-encoder 把问题和每个候选拼一起重新打分,挑出最准的 5 个;最后把这 5 段塞进提示词让大模型回答。"

⑩ 分层练习 16 题(基础 6 + 中档 5 + 拔高 5)

▍基础 6 题

基础1Rerank 中文叫什么?
重排,在粗排召回的候选基础上重新打分排序。
基础2两阶段检索的顺序?
先粗排(Embedding 快速召回 Top-50),再精排(Rerank 重新打分到 Top-5)。
基础3粗排用哪种编码器结构?
双塔 bi-encoder,问题和文档分别编码成向量再算余弦相似度。
基础4精排(Rerank)用哪种结构?
交叉编码器 cross-encoder,问题和候选拼一起实时过模型打分。
基础5bge-reranker 是哪类模型?
开源的重排模型(cross-encoder),智源 BAAI 出品。
基础6典型 RAG 配置里 Rerank 后留几条给大模型?
一般 Top-3~5 条最相关的片段,拼进提示词。

▍中档 5 题

中档7为什么双塔快、交叉编码器慢?
双塔的文档向量可离线预计算,查询时只算一次问题向量;cross-encoder 每对"问题+候选"都要实时跑一次模型,50 个候选就是 50 次前向。
中档8为什么交叉编码器更准?
双塔在编码时问题和文档互不可见;cross-encoder 把两者拼一起送进注意力层,能充分交互细节,判断"到底答不答得上"更准。
中档9粗排一般捞多少个候选给 Rerank?
通常 50~100 个。太少可能漏掉正确答案,太多会拖慢 Rerank 的延迟。
中档10Rerank 能替代粗排吗?为什么?
不能。百万级文档每对都跑 cross-encoder 太慢,不可行。必须先用快的粗排把范围缩到几十上百个,再用 Rerank 精排。
中档11bge-reranker 和 bge-m3 是什么关系?
同属智源 BGE 系列,配套使用:bge-m3 是 Embedding 双塔做粗排,bge-reranker-v2-m3 是 cross-encoder 做精排。

▍拔高 5 题

拔高12如果粗排没召回正确文档,Rerank 能补救吗?
不能。Rerank 只能在粗排给出的候选里排序,候选里没有正确文档它也变不出来。所以粗排的召回率和 Rerank 的精度要一起调。
拔高13为什么说 Rerank 是"宁慢勿错"的最后一道闸门?
它只对几十条候选做精细判断,延迟可控;但它决定了最终喂给大模型的资料质量。这一步排错,后面大模型再强也只能基于错资料回答。
拔高14小文档库(几百篇)要不要加 Rerank?
通常不必。粗排直接就能捞准,加 Rerank 反而增加延迟和成本。文档规模上千、或对回答质量要求高时再加。
拔高15Rerank 的分数为什么不直接用余弦相似度那种阈值?
cross-encoder 输出的是相关性打分(logit 或 sigmoid),不同模型分数分布不同,主要用途是排序而不是卡阈值;一般取 Top-K 而不是设分数线。
拔高16生产环境 RAG 加 Rerank 后延迟增加多少?
粗排通常毫秒级,Rerank 50 个候选在 GPU 上约几十到一百多毫秒。整体从几十毫秒涨到一两百毫秒,在可接受范围;CPU 上会明显变慢,建议 GPU 加速。

⑪ 记忆口诀 + 7 天复习计划

三句口诀 ① 粗排快广捞 50,精排慢准挑 5。
② 双塔分开算向量,交叉编码器拼一起。
③ bge-m3 粗排,bge-reranker 精排;粗排没召回,精排也白搭。
天任务自检
第 1 天读②③,画"粗排→精排"流水线说清两阶段
第 2 天背知识点卡 + 基础 1-6基础全对
第 3 天读④对比表,做中档 7-11区分两种编码器
第 4 天做拔高 12-16理解召回是前提
第 5 天做⑦真题 4 题限时每题 2 分钟
第 6-7 天合上书口述三句口诀不看资料全说对

📌 知识链路

前置知识(先学) · 第13课 · Embedding:先搞懂文本怎么变向量、余弦相似度怎么算,再看 Rerank 为什么要在粗排之后再加一层。
本节位置 本页是 RAG 检索流水线的"精排"环节——粗排用 Embedding 捞出大致相关的候选,本页用 cross-encoder 把最该看的那几条顶上来。它和 Embedding 一前一后,共同决定检索质量。
下一步(学完去) · RAG 系统详解:把 Embedding、向量库、Rerank 串成完整的检索增强生成系统。
· 第19课 · 推理引擎:Rerank 模型本身也需要 GPU 推理,下一条技术线讲怎么高效跑模型。
← 第13课 · Embedding 算法与AI总览