Rerank精排:RAG系统从“找得到”到“找得准”的关键一步
Rerank 精排的本质,是在 RAG 系统中增加一个“精读判断”的环节。向量检索负责快速找到可能相关的内容。BM25 负责补充关键词精确匹配。RRF 负责融合多路召回结果。Rerank 负责最终精排,把真正能回答问题的内容放到前面。它不是替代向量检索,也不是替代大模型,而是连接“检索”和“生成”的关键桥梁。一个没有 Rerank 的 RAG 系统,可能能跑,但容易出现:召回内容相似但不准确答案引
一、先说结论:Rerank到底解决什么问题?
在大模型应用里,尤其是 RAG 知识库问答系统里,很多人会遇到一个问题:
明明向量库已经召回了内容,为什么回答还是不准?
原因很简单:召回阶段只负责“先把可能相关的内容找出来”,但它不一定能把最有用的内容排在最前面。
Rerank 精排,就是专门解决这个问题的。
它的作用可以理解为:
先粗筛,再精挑。
向量检索、关键词检索、混合检索负责从海量文档里快速捞出一批候选内容;Rerank 再对这些候选内容进行重新打分,把真正和用户问题最相关的内容排到前面。
Sentence Transformers 文档也明确提到,Cross Encoder 常用于对第一阶段检索出的 Top-K 结果进行重排序,通常效果更好,但速度更慢,因为它需要逐条计算 query 和文档之间的关系。
二、为什么有了向量检索,还需要Rerank?
很多人刚接触 RAG 时,会以为流程是这样的:
用户问题
↓
Embedding 向量化
↓
向量数据库检索
↓
取 Top 5 文档
↓
丢给大模型回答
这个流程能跑,但效果经常不稳定。
因为向量检索本质上是“语义相似度匹配”,它擅长判断两段话大方向像不像,但不一定擅长判断哪一段真正能回答问题。
举个例子。
用户问:
“会员积分过期后还能恢复吗?”
向量检索可能召回这些内容:
- 会员积分规则说明
- 积分兑换优惠券流程
- 积分过期提醒规则
- 积分过期后申诉恢复规则
- 会员等级升级规则
从语义上看,前几个都和“积分”有关,所以向量检索可能把“积分规则说明”排在第一。
但真正能回答问题的,其实是:
积分过期后申诉恢复规则。
这就是 Rerank 的价值。
它不是简单看“像不像”,而是更细致地判断:
这段内容到底能不能回答用户的问题?
Pinecone 在 RAG reranking 资料中也把这种方式称为 two-stage retrieval,也就是两阶段检索:第一阶段快速召回,第二阶段用 reranker 精排提升结果质量。
三、Rerank的通俗理解:像招聘里的“初筛”和“复面”
可以把 RAG 检索过程想象成招聘。
第一轮是 HR 初筛:
看关键词,看经验,看大方向是否匹配。
这就像向量检索、BM25、混合检索。
它的特点是:
速度快,范围大,能从很多简历里快速筛出几十个候选人。
但它的问题是:
不够细。
第二轮是技术面试官复面:
面试官会认真看项目细节、技术深度、岗位匹配度。
这就像 Rerank。
它的特点是:
速度慢一点,但判断更准。
所以完整流程不是二选一,而是配合使用:
召回负责“别漏掉”,Rerank负责“排得准”。
四、Rerank在RAG链路中的位置
一个生产级 RAG 系统,常见链路大概是:
用户问题
↓
问题改写 / 意图识别
↓
关键词检索 + 向量检索
↓
召回 Top 50 / Top 100
↓
Rerank 精排
↓
取 Top 3 / Top 5
↓
Prompt 组装
↓
大模型生成答案
↓
后处理 / 引用来源 / 合规校验
Rerank 通常放在:
召回之后,大模型生成之前。
它的输入一般是:
用户问题 + 候选文档列表
它的输出一般是:
每个候选文档的相关性分数,然后重新排序。
BGE 文档也说明,reranker 通常采用 Cross-Encoder 架构,同时输入 query 和 text,直接输出相似度分数;完整检索系统通常先用 retriever 做大范围召回,再用 reranker 做更精细排序。
五、Rerank和Embedding的核心区别
很多人容易把 Embedding 和 Rerank 搞混。
1、Embedding是“提前算好向量”
Embedding 模型会把文档提前转成向量,存进向量数据库。
用户提问时,也把问题转成向量,然后在向量库里找相似向量。
它的优点是:
快。
因为文档向量可以提前算好,查询时只需要做向量相似度搜索。
它的缺点是:
判断不够细。
因为 query 和文档是分别编码的,模型没有真正把“问题”和“文档”放在一起逐字对照。
这类模型通常叫:
Bi-Encoder,双塔模型。
2、Rerank是“现场逐条精读”
Rerank 模型一般会把:
用户问题 + 候选文档
一起输入模型。
模型会同时看到问题和文档,然后判断这段文档对这个问题有没有帮助。
它的优点是:
更准。
它的缺点是:
慢。
因为它要对每个候选文档都算一遍。
这类模型通常叫:
Cross-Encoder,交叉编码器。
BAAI 的 bge-reranker-v2-m3 模型卡也说明,reranker 不同于 embedding 模型,它把 question 和 document 一起作为输入,直接输出相关性分数。
六、为什么Rerank更准?
原因很简单:
Embedding 是“隔空判断”,Rerank 是“当面对质”。
Embedding 模型处理问题和文档时,是分开看的。
它会把问题变成一个向量,把文档变成一个向量,然后比较两个向量的距离。
这就像你只看两个人的标签:
一个人标签是:Java、AI、RAG、检索
另一个岗位标签是:Java、AI、知识库、问答
看起来很匹配。
但 Rerank 不只是看标签,它会把问题和文档放在一起理解。
例如用户问:
“退款超过7天还能申请吗?”
候选文档 A:
“用户可在订单完成后7天内申请退款。”
候选文档 B:
“超过7天的订单,如商品存在质量问题,可联系客服申请人工审核。”
向量检索可能觉得 A 更像,因为它包含“7天、退款、申请”。
但 Rerank 更可能把 B 排上去,因为 B 才真正回答了“超过7天还能不能申请”。
这就是精排的意义。
七、Rerank的典型工作流程
1、第一步:用户输入问题
例如:
“合同到期后,会员权益还保留吗?”
2、第二步:召回系统先找一批候选内容
可以通过多种方式召回:
向量检索
关键词检索
BM25 检索
混合检索
多路召回
元数据过滤
例如先召回 Top 50。
3、第三步:Rerank逐条打分
Rerank 会把问题和每个候选 chunk 拼成一对:
问题 + 候选文档1
问题 + 候选文档2
问题 + 候选文档3
……
然后输出每条的相关性分数。
4、第四步:重新排序
假设原始召回顺序是:
A、B、C、D、E
Rerank 后可能变成:
D、B、A、E、C
5、第五步:选Top N给大模型
通常不会把所有候选内容都给大模型。
而是取 Top 3、Top 5、Top 8。
这样可以减少噪声,降低 token 成本,也能让大模型更聚焦。
八、Rerank解决的不是“召回率”,而是“排序质量”
这里一定要分清楚两个概念:
1、召回率
召回率关注的是:
正确答案有没有被找出来。
如果正确文档根本没被召回,Rerank 也没办法。
因为 Rerank 只能在候选列表里重新排序,它不能凭空创造新文档。
2、排序质量
排序质量关注的是:
正确文档是不是排在前面。
Rerank 最擅长解决这个问题。
所以一个好的 RAG 系统通常是:
先提高召回阶段的覆盖面,再用 Rerank 提高排序质量。
如果只召回 Top 5,再 Rerank,意义可能不大。
更常见的做法是:
先召回 Top 50 或 Top 100,再 Rerank 取 Top 5。
九、Rerank适合哪些场景?
1、知识库问答
这是最典型的场景。
用户问一个问题,系统从知识库里找答案。
如果没有 Rerank,大模型可能拿到相似但不准确的内容,导致回答跑偏。
2、客服机器人
客服场景非常适合 Rerank。
因为客服问题经常很细:
退款规则
发票规则
会员规则
售后规则
物流规则
优惠券规则
很多内容关键词相似,但答案差异很大。
Rerank 可以帮助系统把真正能回答问题的规则文档排到前面。
3、企业内部知识库
企业文档里经常有大量制度、流程、公告、审批规范。
同一个关键词可能出现在很多文档中。
比如“报销”可能出现在:
差旅报销
办公用品报销
招待费报销
项目费用报销
发票规范
付款审批
没有精排,很容易召回错。
4、法律、医疗、金融等严肃场景
这些场景对准确性要求更高。
不是“差不多相关”就行,而是必须找到最能支撑答案的证据。
Rerank 能明显减少错误上下文进入大模型。
5、搜索系统
Rerank 不只用于 RAG,也用于传统搜索、推荐、问答排序。
搜索引擎里很早就有类似思想:
先粗排,再精排,再重排。
RAG 只是把这套思路带到了大模型应用里。
十、常见Rerank模型有哪些?
1、BGE Reranker
BGE Reranker 是国内使用比较多的一类开源 reranker。
例如:
bge-reranker-base
bge-reranker-large
bge-reranker-v2-m3
其中 bge-reranker-v2-m3 常被用于多语言场景,模型卡说明它支持通过 query 和 passage 输出相关性分数。
适合场景:
中文知识库
中英文混合知识库
私有化部署
成本敏感场景
2、Sentence Transformers Cross Encoder
Sentence Transformers 提供了很多 Cross Encoder 模型。
它的文档中提到,Cross Encoder 适合对预定义的句子对进行打分,例如有 100 对 query-document,需要得到每一对的相似度分数。
适合场景:
英文检索
学术实验
轻量级重排
快速验证 RAG 效果
3、Cohere Rerank
Cohere 提供商业化 Rerank API。
适合场景:
不想自己部署模型
需要快速接入
英文或多语言搜索
线上应用快速试错
4、LLM Rerank
也可以直接让大模型做重排。
例如把问题和候选文档给大模型,让它判断哪些文档最相关。
优点是理解能力强。
缺点是:
成本高
速度慢
输出不稳定
批量处理不方便
所以 LLM Rerank 更适合复杂、小批量、高价值场景,不适合所有请求都用。
5、ColBERT类模型
ColBERT 介于向量检索和 Cross Encoder 之间。
它比普通向量检索更细,也比完整 Cross Encoder 更快一些。
但工程复杂度更高。
适合对检索质量要求高、同时又关注性能的大规模搜索系统。
十一、Rerank和混合检索是什么关系?
混合检索和 Rerank 经常一起出现,但它们不是一回事。
1、混合检索负责“多路召回”
混合检索通常是:
向量检索 + 关键词检索
比如:
向量检索擅长语义相似
BM25 擅长关键词精确匹配
用户问:
“SLA赔付规则是什么?”
关键词 SLA 很重要。
如果只用向量检索,可能召回“服务保障”“故障处理”等语义相近内容。
BM25 可以确保包含“SLA”的文档被召回。
2、Rerank负责“统一精排”
多路召回之后,结果可能比较乱。
向量检索召回一批,关键词检索召回一批,规则召回一批。
这时候就需要 Rerank 做统一打分。
所以完整链路是:
多路召回
↓
候选结果合并
↓
去重
↓
Rerank 精排
↓
取 Top N
十二、Rerank和RRF融合有什么区别?
RRF 融合和 Rerank 都能调整排序,但思想不一样。
1、RRF是基于名次融合
RRF 主要看:
某个文档在不同召回通道里的排名如何。
如果一个文档在向量检索里排名靠前,在关键词检索里也排名靠前,那么它的综合排名就会更高。
它不真正理解内容。
它只是融合多个排序结果。
2、Rerank是基于语义精判
Rerank 会把用户问题和文档放到模型里重新判断。
它更像内容理解。
所以:
RRF 适合多路召回结果融合。
Rerank 适合对候选内容做语义级精排。
生产中经常是:
向量检索 + BM25
↓
RRF 融合
↓
Rerank 精排
↓
Top N 给大模型
十三、Rerank一般取多少条候选?
这是工程落地里非常关键的问题。
不是召回越多越好,也不是越少越好。
1、候选太少的问题
如果只召回 Top 5,再 Rerank:
可能正确文档根本没进候选集。
Rerank 无法补救。
2、候选太多的问题
如果召回 Top 500,再 Rerank:
效果可能更稳,但延迟和成本会上升。
因为 Rerank 要逐条打分。
3、常见经验值
一般可以这样做:
小知识库:召回 Top 20,Rerank 后取 Top 3-5
中等知识库:召回 Top 50,Rerank 后取 Top 5-8
大知识库:召回 Top 100,Rerank 后取 Top 5-10
高准确场景:召回 Top 100-200,分批 Rerank,再压缩上下文
实际要根据延迟、成本、准确率做评测。
十四、Rerank会带来哪些成本?
1、延迟成本
Rerank 最大的问题就是慢。
向量检索是一次向量搜索。
Rerank 是对每个候选文档都打一次分。
如果召回 100 条,就要计算 100 个 query-document pair。
Sentence Transformers 文档也指出,Cross Encoder 通常更慢,因为它需要对每个 pair 单独计算,而不是像 bi-encoder 那样提前编码文档。
2、算力成本
如果用本地模型,需要 GPU 或高性能 CPU。
如果用 API,则有调用费用。
3、工程复杂度
增加 Rerank 后,系统链路会变长:
召回耗时
Rerank 耗时
大模型耗时
总耗时监控
超时降级
缓存策略
批处理优化
所以 Rerank 不是简单“加一个模型”就完事,而是要配套工程设计。
十五、如何降低Rerank带来的延迟?
1、控制候选数量
不要无限召回。
可以先从 Top 50 开始。
如果效果不够,再试 Top 100。
2、批量推理
Rerank 不要一条一条请求模型。
应该把多个 query-document pair 批量送入模型。
这样 GPU 利用率更高。
3、模型轻量化
可以选择更小的 reranker。
例如 base 模型比 large 模型快。
线上系统不一定追求最大模型,而是追求准确率、延迟、成本的平衡。
4、结果缓存
对高频问题,可以缓存 Rerank 结果。
例如:
用户问题标准化后作为 key
召回结果版本号作为辅助 key
缓存排序后的 Top N 文档
适合 FAQ、客服、政策类高频问题。
5、设置超时降级
如果 Rerank 超时,可以降级为:
直接使用混合检索结果
使用 RRF 结果
使用向量检索 Top N
返回兜底提示
生产系统不能因为 Rerank 慢就让整个问答链路崩掉。
十六、Rerank精排的工程落地架构
一个比较完整的 Rerank 架构可以这样设计:
1、Query处理层
负责:
问题清洗
问题改写
多轮对话补全
意图识别
关键词提取
例如用户问:
“这个还能退吗?”
系统需要结合历史对话补全成:
“用户购买的商品超过7天后还能退款吗?”
否则 Rerank 再强也不知道“这个”指什么。
2、召回层
负责多路召回:
向量检索
BM25 检索
标签过滤
权限过滤
时间过滤
业务规则召回
3、融合层
负责:
去重
合并
RRF 融合
基础分归一化
候选池控制
4、Rerank层
负责:
构造 query-document pair
批量打分
排序
过滤低分结果
保留证据来源
5、上下文组装层
负责:
选择 Top N
控制 token 长度
去掉重复内容
保留标题、来源、段落位置
必要时做内容压缩
6、生成层
负责:
把问题和精排后的上下文交给大模型
要求模型基于上下文回答
输出答案和引用来源
7、评测与监控层
负责:
召回命中率
Top1 命中率
Top3 命中率
Rerank 耗时
模型调用失败率
用户满意度
人工标注反馈
十七、Rerank分数应该怎么用?
Rerank 输出的是相关性分数。
但是这个分数不能机械理解。
1、可以用于排序
这是最基本的用法。
分数高的排前面。
2、可以用于过滤
如果最高分都很低,说明候选内容可能都不相关。
这时候不要强行回答。
可以返回:
“知识库中没有找到足够相关的内容。”
这比胡编更安全。
3、可以用于置信度判断
例如:
最高分很高,且和第二名差距明显:答案可信度较高。
最高分一般,且多个文档分数接近:需要谨慎回答。
所有分数都低:触发兜底或人工转接。
4、不能直接当成绝对概率
不同模型的分数范围不一样。
有的输出 0 到 1。
有的输出可能是未归一化分数。
所以需要结合具体模型和评测数据设阈值。
十八、Rerank常见问题一:为什么加了Rerank效果没提升?
可能有几个原因。
1、召回阶段太差
如果正确文档没被召回,Rerank 没用。
解决方案:
扩大候选 Top K
加入 BM25
做混合检索
优化切片
优化 embedding 模型
增加元数据过滤
2、切片质量太差
如果 chunk 切得太碎,缺少上下文。
Rerank 判断不准。
如果 chunk 切得太长,噪声太多。
Rerank 也难判断。
解决方案:
按标题层级切片
保留父标题
保留段落上下文
使用滑动窗口
控制 chunk 长度
3、问题没有改写好
多轮对话里,用户经常问:
“那这个怎么处理?”
“超过了还能办吗?”
“这个规则适用吗?”
如果不补全问题,Rerank 很难判断。
4、模型不适合业务语言
如果业务文档是中文,但用英文 reranker,效果可能不好。
如果文档是法律、金融、医疗专业文本,通用模型也可能不够。
5、没有做评测
很多系统只是凭感觉说“好像更准了”。
但没有评测集,就不知道到底有没有提升。
十九、Rerank常见问题二:Rerank能不能替代向量数据库?
不能。
Rerank 不适合直接从海量文档中检索。
因为它太慢。
如果有 100 万个 chunk,不可能让 Rerank 对每个 chunk 都打分。
正确方式是:
先用向量检索、BM25 等快速方法找出几十到几百条候选。
再用 Rerank 精排。
所以 Rerank 是第二阶段,不是第一阶段。
二十、Rerank常见问题三:Rerank是不是越靠后越好?
Rerank 一般放在召回后、生成前。
但在复杂系统里,也可以多次使用。
1、召回后Rerank
最常见。
用于重排候选文档。
2、答案生成前Rerank
把多个证据重新排序,选择最适合放进 Prompt 的内容。
3、多轮对话中Rerank
结合历史问题和当前问题,对上下文重新排序。
4、工具调用结果Rerank
Agent 调用了多个工具后,可以对工具返回结果做重排。
但注意:
Rerank 次数越多,延迟越高。
不要为了复杂而复杂。
二十一、Rerank在客服知识库中的完整例子
假设用户问:
“我买的东西超过7天了,还能退吗?”
1、问题改写
系统改写成:
“商品购买超过7天后是否还能申请退款?”
2、多路召回
向量召回:
商品退款规则
售后服务说明
质量问题处理规则
订单取消规则
会员售后权益
BM25 召回:
超过7天退款
七天无理由
质量问题退款
人工审核
3、候选合并
合并后得到 60 条候选。
去重后剩 45 条。
4、Rerank精排
Rerank 对 45 条内容重新打分。
排序结果:
第一名:超过7天但存在质量问题,可申请人工审核
第二名:七天无理由退款规则
第三名:售后申请入口说明
第四名:退款到账时间说明
第五名:会员专属售后权益
5、Prompt组装
只取前 3 条,交给大模型。
6、最终回答
大模型就可以回答:
如果是普通原因,超过7天通常不支持无理由退款;但如果商品存在质量问题,可以提交售后申请,由客服人工审核。申请时需要提供订单号、问题照片或视频等凭证。
这就是 Rerank 对答案质量的提升。
二十二、Rerank和大模型幻觉有什么关系?
Rerank 不能直接消灭幻觉。
但它能减少幻觉发生的概率。
因为大模型幻觉很多时候来自:
上下文不相关
上下文冲突
证据不足
召回内容排序错误
Rerank 可以让最相关的证据排在前面,减少无关内容进入 Prompt。
但是最终还需要配合:
严格 Prompt
引用来源
低置信度拒答
答案后处理
事实校验
人工反馈
Rerank 是提高 RAG 可靠性的关键一环,但不是唯一手段。
二十三、Rerank如何评测?
不要只看主观感受。
可以做一套评测集。
1、准备问题集
收集真实用户问题。
例如 200 条、500 条、1000 条。
问题要覆盖:
高频问题
长尾问题
模糊问题
多轮问题
专业问题
容易混淆的问题
2、标注标准答案文档
每个问题标注:
哪个 chunk 是正确证据
哪些 chunk 是部分相关
哪些 chunk 是无关内容
3、比较加Rerank前后的指标
常见指标:
Top1 命中率
Top3 命中率
Top5 命中率
MRR
NDCG
回答准确率
拒答准确率
平均延迟
不用被指标吓到。
通俗理解就是:
正确内容有没有排第一?
正确内容有没有进入前三?
正确内容有没有进入最终 Prompt?
4、线上观察
上线后继续看:
用户点赞率
用户追问率
人工转接率
答案投诉率
无答案率
接口耗时
Rerank 的价值最终要体现在业务效果上。
二十四、Rerank上线时要注意哪些坑?
1、不要对所有请求无脑Rerank
有些简单 FAQ,关键词命中已经很准。
可以直接回答。
Rerank 可以只用于:
低置信度问题
多候选问题
复杂问题
高价值问题
召回结果分数接近的问题
2、不要把Top K设置过大
Top K 越大,越慢。
可以通过评测找到最佳点。
比如 Top 50 和 Top 100 的准确率差不多,那就选 Top 50。
3、不要忽略权限过滤
企业知识库必须先做权限过滤,再 Rerank。
不能先把无权限文档送进模型。
否则可能造成数据泄露风险。
4、不要忽略版本问题
文档可能有新旧版本。
Rerank 只判断相关性,不一定知道哪个版本最新。
所以要结合:
发布时间
生效时间
文档状态
版本号
业务标签
5、不要只看Rerank分数
Rerank 分数高,不代表内容一定正确。
它只代表“相关”。
最终答案还要结合业务规则和事实校验。
二十五、生产级Rerank推荐方案
一个比较稳的生产方案可以是:
1、召回阶段
使用:
向量检索 Top 50
BM25 Top 50
业务规则召回 Top 20
2、融合阶段
对多路结果去重。
用 RRF 做初步融合。
控制候选池到 50-100 条。
3、精排阶段
使用 bge-reranker-v2-m3 或其他适合业务语言的 reranker。
批量推理。
输出相关性分数。
4、过滤阶段
过滤低分内容。
如果最高分低于阈值,触发拒答或转人工。
5、上下文阶段
取 Top 5。
保留标题、段落、来源、时间、文档 ID。
控制总 token 长度。
6、生成阶段
要求大模型:
只基于给定资料回答
没有依据就说没找到
输出引用来源
不要编造规则
7、监控阶段
记录:
query
召回结果
Rerank 分数
最终上下文
模型答案
用户反馈
耗时
异常
这样后面才能持续优化。
二十六、Rerank和Prompt优化哪个更重要?
这两个不是替代关系。
Prompt 优化解决的是:
大模型拿到资料后,怎么回答。
Rerank 解决的是:
大模型拿到什么资料。
如果资料错了,Prompt 再好也没用。
就像厨师再厉害,食材拿错了,也做不出正确的菜。
所以 RAG 系统里有一句很重要的话:
检索质量决定答案上限,Prompt 决定表达下限。
Rerank 就是提高检索质量的重要手段。
二十七、Rerank的最终价值
Rerank 的价值可以总结为五点:
1、提高答案准确率
让真正相关的文档进入大模型上下文。
2、减少无关内容干扰
降低大模型被错误资料带偏的概率。
3、提升复杂问题处理能力
尤其适合细粒度规则问答、多条件问题、长尾问题。
4、降低Prompt成本
因为不用塞太多候选文档,只需要塞精排后的 Top N。
5、增强系统可控性
可以用分数做过滤、拒答、降级、转人工。
二十八、总结:Rerank不是锦上添花,而是RAG质量提升的核心环节
Rerank 精排的本质,是在 RAG 系统中增加一个“精读判断”的环节。
向量检索负责快速找到可能相关的内容。
BM25 负责补充关键词精确匹配。
RRF 负责融合多路召回结果。
Rerank 负责最终精排,把真正能回答问题的内容放到前面。
它不是替代向量检索,也不是替代大模型,而是连接“检索”和“生成”的关键桥梁。
一个没有 Rerank 的 RAG 系统,可能能跑,但容易出现:
召回内容相似但不准确
答案引用错文档
大模型被噪声干扰
复杂问题回答不稳定
而加上 Rerank 后,系统会从“能找到相关内容”,进一步升级为:
能找到真正有用的内容。
这就是 Rerank 精排在大模型应用中的核心价值。
更多推荐

所有评论(0)