三十:Rerank¶
来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247484348&idx=1&sn=331815f9e4cf3303a6560445375a985f&chksm=f01eb0c5c76939d316c06eb93daddbbc419012632ae2cf34df8694acfd5cb0ecc0bb2b7604f2#rd
1. 学习范围¶
本日主题是 Rerank,重点是 Rerank 与 Embedding 的关系。RAG 系统中,embedding 检索通常负责从大规模知识库中快速召回候选,rerank 负责对候选进行更精细排序。二者是召回与精排的关系,不是简单替代关系。 本日覆盖: - Rerank 的定义和在 RAG 中的位置。
-
Embedding bi-encoder 与 reranker cross-encoder 的区别。
-
两阶段检索:retrieve top-n -> rerank top-k。
-
Rerank 模型类型:cross-encoder、LLM reranker、ColBERT/late interaction、规则 reranker。
-
Rerank 与 embedding 在速度、精度、成本、可扩展性上的权衡。
-
Rerank 评估指标、训练数据、生产化和常见排错。
2. Rerank 的定位¶
RAG 中常见链路:
Query
-> Retriever / Embedding Search: recall top 50/100
-> Reranker: reorder candidates
-> Keep top 3/5/10
-> LLM Answer
-
降低无关 chunk 进入 prompt 的概率。
-
提升上下文质量。
-
降低幻觉风险。
-
在相同 top-k 下提升答案正确率。
3. Embedding Retriever 的特点¶
Embedding retriever 通常是 bi-encoder 架构(双编码器;双塔模型):
query -> encoder -> q_vector
doc -> encoder -> d_vector
score = sim(q_vector, d_vector)
-
查询速度快。
-
可使用向量数据库大规模检索。
-
适合百万/千万级候选召回。
缺点: - query 和 document 独立编码,交互较弱。
-
对细粒度匹配、否定、条件、数字、复杂语义不够敏感。
-
容易召回语义相似但不支持答案的 chunk。
Embedding retriever 适合作为 first-stage recall。
4. Cross-Encoder Reranker¶
Cross-encoder reranker 把 query 和 document 一起输入模型:
模型可以在 token 级别建模 query 与 document 的细粒度交互,因此排序精度通常高于 bi-encoder。 优点: - 相关性判断更准确。-
更擅长处理细节、否定、条件和多词关系。
-
能显著提升 top-k precision。
缺点: - 每个 query-document pair 都要单独推理。
-
无法离线预计算全部 pair。
-
成本和延迟高。
-
不适合直接在全库上运行。
因此 reranker 通常只用于 first-stage retriever 返回的候选集合。
5. Rerank 与 Embedding 的核心区别¶
维度 Embedding Retriever(嵌入召回器) Reranker(重排器) 底层架构 Bi-Encoder 双塔编码器 Cross-Encoder / LLM / Late Interaction 交互模型 文档向量 全库文档可离线预计算、持久化入库 必须 Query + 文档成对拼接输入,无法提前缓存文档表征 核心优化目标 保证高召回率,不漏相关文档 提升排序精度,筛选最优结果 推理速度 极快,仅编码 Query+ANN 检索 很慢,每条候选都要单独前向推理 适配数据规模 支持百万 / 亿级全文档库全局检索 仅能作用于召回输出的少量 Top-N 候选(几十条以内) 文本交互能力 Query、文档编码全程无深度交互,仅向量空间匹配 强,token 级交叉注意力,能捕捉细粒度语义匹配 模型输出 相似度排序后的 Top-N 候选文档列表 每条 (Query,Doc) 匹配分数,用于重新排序 一句话:embedding 负责“先找一批可能相关的”,rerank 负责“从这批里面挑最相关的”。
6. 两阶段检索¶
典型两阶段检索:
1. embedding retriever 召回 top 50
2. reranker 对 50 个候选逐一打分
3. 按 rerank score 排序
4. 取 top 5 进入 LLM prompt
-
正确证据可能在 embedding 排名 20-50。
-
reranker 可以把正确证据提到前面。
为什么不是直接 rerank 全库? - 成本不可接受。
-
延迟不可接受。
-
无法预计算 query-doc pair。
两阶段检索是召回率、精度、成本之间的折中。
7. Rerank 模型类型¶
7.1 Cross-Encoder Reranker¶
专门训练的重排序模型,如 BGE reranker、MS MARCO cross-encoder 等。输入 query 和 passage,输出相关性分数。
7.2 LLM Reranker¶
用大模型判断候选与 query 的相关性,可以输出分数、排序或理由。理解能力强,但成本高、延迟大、稳定性和批处理效率较差。
7.3 Late Interaction 晚交互模型¶
介于Bi-Encoder(无交互)与Cross-Encoder(全交互)中间。 - 双塔分别编码 query、文档,得到token 粒度细粒度向量,不是单一全局向量;
- 推理时不做全层交叉注意力,仅在最后阶段计算 token 间最大相似度聚合得到匹配分;
如 ColBERT,一定程度上保留 token-level interaction,同时比 full cross-encoder 更适合检索。它介于 bi-encoder 和 cross-encoder 之间。
7.4 规则 Reranker¶
基于元数据、时间、新鲜度、权限、标题匹配、关键词命中、来源权威性等规则调整排序。 实际系统常使用多种 rerank 信号融合。
8. Rerank 分数的含义¶
Reranker 输出的分数通常表示 query-document 相关性。不同模型的分数尺度不一定可比。 注意事项: - 分数不一定是概率。
-
不同 query 之间分数不一定可直接比较。
-
不同 reranker 模型分数不一定同尺度。
-
阈值需要基于验证集校准。
生产中常使用相对排序,而不是绝对分数。若要做拒答或过滤,需要单独调阈值。
9. Rerank 与 Top-k¶
Rerank 常涉及两个 k:
retrieval_top_n 太小: - 正确证据可能进不了候选,reranker 无法补救。retrieval_top_n 太大: - rerank 成本高。
- 延迟增加。
final_top_k 太小: - 证据可能不完整。
final_top_k 太大: - prompt 噪声增加。
- token 成本增加。
10. Rerank 与 Hybrid Search(混合检索 )¶
Rerank 常与 hybrid search 配合:
dense retrieval top 50 稠密检索,通过向量语义匹配
sparse retrieval top 50 稀疏检索,通过关键词精准匹配等方式
merge + deduplicate
rerank top 100
keep top 5
11. Rerank 与 Query Transformation¶
query rewrite、multi-query、decomposition 可能扩大候选集合。rerank 可以在合并候选后重新排序,减少 query expansion 带来的噪声。 常见流程:
original query -> rewrite/multi-query
retrieve candidates
merge candidates
rerank with original query or rewritten query
12. Rerank 与 Contextual Compression¶
Rerank 选择最相关 chunk,contextual compression 在 chunk 内进一步去掉无关内容。 关系: - rerank 解决 chunk 级排序。
- compression 解决 chunk 内内容过长或噪声过多。
常见组合:
这能提升上下文密度,但压缩可能误删关键限制条件,因此需要评估。13. Rerank 训练数据¶
Reranker 通常需要 query-document relevance 数据。 数据形式: - pairwise:query, positive doc, negative doc。
-
pointwise:query, doc, relevance label。
-
listwise:query, ranked docs。
负样本很关键: - random negative:随机无关文档,容易区分。
- hard negative:被 retriever 召回但不相关的文档,更有训练价值。
RAG 场景中,hard negative 往往来自 embedding top-k 中相似但不能回答问题的 chunk。
14. Rerank 评估指标¶
检索/排序指标: - MRR。
-
nDCG@k。
-
Precision@k。
-
Recall@k。
-
MAP。
RAG 端到端指标: - 答案正确性。
-
Faithfulness。
-
Citation accuracy。
-
Context relevance。
-
拒答准确率。
Rerank 优化不应只看排序指标,还要看最终 LLM 答案是否更好。
15. Rerank 阈值与拒答¶
有些系统会基于 rerank score 做过滤或拒答:
风险: - 分数尺度不稳定。-
不同 query 难度不同。
-
阈值过高导致过度拒答。
-
阈值过低导致无关上下文进入 prompt。
阈值必须用验证集校准,并结合 query 类型、候选数量和业务风险。
16. Rerank 成本与延迟优化¶
优化方法: - 降低 retrieval_top_n。
-
使用轻量 reranker。
-
batch rerank。
-
缓存 query-candidate 分数。
-
先规则过滤再 rerank。
-
只对低置信 query 启用 rerank。
-
使用蒸馏或量化 reranker。
-
对高频问题缓存最终上下文。
成本优化不能过度牺牲 recall。如果正确证据未进入 reranker 候选集,精排无意义。
17. 常见失败模式¶
Rerank 常见问题: - 第一阶段漏召回,reranker 无法补救。
-
reranker 偏向长文本或关键词多的文本。
-
reranker 分数不能直接做全局阈值。
-
候选 chunk 重复,top-k 多样性不足。
-
reranker 选择相关但不支持答案的背景资料。
-
query rewrite 偏移后 rerank 错误。
-
rerank 延迟过高影响用户体验。
排查时要同时看 first-stage candidates、rerank score、最终 context 和答案。
18. Rerank 在 RAG 中的实战流程¶
一个稳健流程:
1. 原始 query 和改写 query 生成。
2. Dense + sparse hybrid retrieval 召回 top 50-200。
3. 合并去重,保留元数据。
4. Reranker 对候选排序。
5. 根据 token budget 选择 top-k。
6. 对长 chunk 做 contextual compression。
7. LLM 基于上下文生成答案和引用。
8. 评估 answer correctness、faithfulness、citation。
-
选择 reranker 模型。
-
调 retrieval_top_n 和 final_top_k。
-
校准 score threshold。
-
评估端到端答案。
19. 面试表达要点¶
Rerank 的高分表达:
Embedding 检索是 bi-encoder,可以离线预计算文档向量,适合大规模快速召回,但 query-doc 交互弱。
Reranker 通常是 cross-encoder,把 query 和候选文档一起输入,能做细粒度相关性判断,因此精度高但成本高。
所以 RAG 常用两阶段架构:先用 embedding/hybrid search 召回较多候选,再用 reranker 精排,最后取少量高质量证据给 LLM。
Reranker 不能弥补第一阶段漏召回;它优化的是候选排序和上下文质量。
20. 核心总结¶
Rerank 的核心结论: - Embedding 负责召回,rerank 负责精排。
-
Bi-encoder 快但交互弱,cross-encoder 慢但精度高。
-
两阶段检索是 RAG 质量和成本的常见折中。
-
Rerank 能提升 top-k precision 和上下文质量。
-
Rerank 不能解决 first-stage 漏召回。
-
Rerank 分数需要校准,不能随便跨 query 使用固定阈值。
-
生产中要同时评估排序指标和端到端答案指标。
21. 参考资料¶
-
SentenceTransformers Cross-Encoder Rerankers: https://www.sbert.net/examples/applications/retrieve_rerank/README.html
-
BAAI FlagEmbedding / BGE Reranker: https://github.com/FlagOpen/FlagEmbedding
-
Cohere Rerank docs: https://docs.cohere.com/docs/reranking
-
Jina AI Reranker docs: https://jina.ai/reranker/
-
盘点 rerank 方法: https://weaxsey.org/articles/2024-10-20/#gte-rerank
-
深入理解 rerank 重排序的工作原理: https://juejin.cn/post/7440705321942663207#heading-22
-
重新排序器和两阶段检索: https://techdiylife.github.io/blog/topic.html?category2=t07&blogid=0048
预览时标签不可点<div class="