三十一:Rerank模型¶
来源:http://mp.weixin.qq.com/s?__biz=MzYyNTk3Njg1NA==&mid=2247484363&idx=1&sn=67e089dbca6aa50969173d850abe2fb8&chksm=f01eb0b2c76939a4dee3f09c213f5db384d8147c6881f3251df1d173889734273785c048ce72#rd
1. 学习范围¶
本日主题是 ReRank 模型盘点,重点是熟悉至少一个可落地的 rerank 模型,并能在面试中讲清楚: - 它属于哪类 reranker。
-
输入、输出和推理方式是什么。
-
为什么它通常比 embedding 召回更适合做精排。
-
在中文、多语言、长文档、多模态、代码检索等场景下怎么选型。
-
如何评估它是否真的提升了 RAG 质量。
推荐主讲模型:BAAI/bge-reranker-v2-m3。它是当前工程中非常常见的开源 cross-encoder reranker,中文和多语言能力较强,部署成本相对可控,适合用来串起 RAG 中的召回、精排、评估和调参。
推荐了解的模型族:
- BGE Reranker v2:以 bge-reranker-v2-m3 为代表。
-
Jina Reranker v2:多语言、函数调用、代码检索和 SQL 场景友好。
-
mGTE / GTE multilingual reranker:长上下文、多语言、阿里 GTE 系列。
-
Qwen3-VL Embedding / Reranker:面向图文、文档截图、视频等多模态检索。
-
LLM-as-reranker:用通用大模型按相关性或证据充分性打分,成本高但表达力强。
2. 参考资料¶
-
2024 年比较火的 rerank 模型:https://blog.csdn.net/cxk19980802/article/details/144531617
-
BGE 官方介绍 BGE Re-Ranker v2.0:https://mp.weixin.qq.com/s/XnkQFCdbvjox1Y06IbIIYw
-
BGE-M3 论文:https://arxiv.org/abs/2402.03216
-
BGE reranker model card:https://huggingface.co/BAAI/bge-reranker-v2-m3
-
Jina Reranker v2 官方介绍:https://jina.ai/news/jina-reranker-v2-for-agentic-rag-ultra-fast-multilingual-function-calling-and-code-search/
-
Jina Reranker v2 model card:https://huggingface.co/jinaai/jina-reranker-v2-base-multilingual
-
Jina Embeddings 2 论文:https://arxiv.org/abs/2310.19923
-
mGTE 论文:https://arxiv.org/abs/2407.19669
-
GTE multilingual reranker model card:https://huggingface.co/Alibaba-NLP/gte-multilingual-reranker-base
-
Qwen3-VL Embedding / Reranker 论文:https://arxiv.org/abs/2601.04720
-
Qwen3-VL Embedding 官方页:https://qwen.ai/blog?id=qwen3-vl-embedding
3. Rerank 模型在 RAG 中的位置¶
典型 RAG 检索链路:
用户问题
-> query rewrite / query expansion
-> sparse retrieval: BM25 / SPLADE
-> dense retrieval: embedding vector search
-> fusion: RRF / weighted fusion
-> reranker: query-document 精排
-> top-k context
-> LLM answer
Embedding / bi-encoder:
query -> vector
document -> vector
score = similarity(query_vector, document_vector)
文档可离线编码,适合大规模召回。
Reranker / cross-encoder:
input = [query, document]
score = model(query, document)
query 和 document token 级交互,适合精排。
4. 模型盘点的核心维度¶
选择 rerank 模型时,不能只看榜单分数。工程中更重要的是下面这些维度: 维度 需要确认的问题 典型业务影响 架构选型 cross-encoder、late interaction、LLM reranker、多模态 reranker 检索排序精度、推理延迟、集群扩容可扩展性、多模态场景适配能力 语言覆盖 单中文、单英文、多语言混合、跨语言检索 用户 Query 与底层检索语料语种是否对齐,跨语种召回衰减幅度 输入上下文长度 512 / 1024 / 8192 / 32k token 长文档 / 长查询是否强制截断;超长文本是否需滑窗分片重排、额外算力开销 业务任务类型 通用问答、代码检索、SQL 匹配、工具函数调用、图文混合文档 模型排序偏好、有效区分正负样本的信号是否贴合业务真实场景 部署运行方式 本地开源权重、第三方 API、vLLM 加速、原生 Transformers、FlagEmbedding 套件 推理成本、端到端 QPS 延迟、敏感业务数据出境风险、运维复杂度 打分输出形式 logit 原始值、sigmoid 归一化分数、分类概率、文本二元判断 分数是否支持跨 Query 统一阈值过滤、多批次结果横向对比、业务阈值调参稳定性 训练数据构成 Hard Negative 难负样本、跨语言样本、长上下文样本、图文多模态样本 线上冷门 Query、相似干扰文档、超长文本场景的泛化排序效果 效果评估指标 nDCG@k、MRR@k、Recall@k、Answer EM/F1、人工偏好评测 仅看检索指标是否存在虚高,能否真实提升下游生成答案准确率与用户体验
如果是中文/英文混合 RAG,候选数 50 左右,文档以文本为主,优先试 bge-reranker-v2-m3。
如果有函数调用、代码或 SQL 检索,会补测 Jina Reranker v2。
如果文档很长且必须在 rerank 阶段读更长上下文,会关注 mGTE/GTE multilingual reranker 或长上下文模型。
如果检索对象包含截图、图像、视频或视觉文档,会考虑 Qwen3-VL Reranker 这类多模态 reranker。
5. BGE Reranker v2 体系¶
BGE Reranker v2 是 BAAI / FlagEmbedding 生态中的 reranker 系列。常见模型包括:
- BAAI/bge-reranker-v2-m3:基于 BGE-M3,轻量、多语言、易部署。
-
BAAI/bge-reranker-v2-gemma:基于 Gemma,模型更大,多语言能力强。 -
BAAI/bge-reranker-v2-minicpm-layerwise:可选择中间层输出,用于速度和效果折中。 -
BAAI/bge-reranker-base/large:更早的中英 reranker。
其中 bge-reranker-v2-m3 最适合作为面试主讲模型,因为它工程使用频率高、部署相对简单,且和 BGE-M3 embedding 体系能自然组合。
5.1 BGE-M3 和 reranker 的关系¶
BGE-M3 是 embedding 模型,不是 reranker。M3 表示: - Multi-Linguality:支持 100+ 语言。
-
Multi-Functionality:统一 dense retrieval、sparse retrieval、multi-vector / ColBERT retrieval。
-
Multi-Granularity:支持从短句到长文档,模型体系支持 8192 token 级输入。
bge-reranker-v2-m3 是基于 BGE-M3 的 cross-encoder reranker。它不是把 query 和 document 各自编码成向量再算相似度,而是把 query-document pair 一起输入,输出相关性分数。
6. BGE Reranker v2-m3 的输入输出¶
推理形式:
常见用法:from FlagEmbedding import FlagReranker
reranker = FlagReranker(
"BAAI/bge-reranker-v2-m3",
use_fp16=True
)
pairs = [
["什么是 RoPE?", "RoPE 是一种旋转位置编码,作用在 Q 和 K 上。"],
["什么是 RoPE?", "BM25 是一种稀疏检索方法。"],
]
scores = reranker.compute_score(pairs, normalize=True, max_length=1024)
print(scores)
compute_score 输入是一组 [query, passage] pair。
-
原始分数常是未归一化 logit,通常只适合同一 query 下排序。
-
normalize=True常用于 sigmoid 归一化,方便展示,但不等于严格概率。 -
max_length直接影响截断、显存和延迟。即使模型支持更长长度,生产中也常从 512/1024 开始调。
7. BGE Reranker v2-m3 的工程适用场景¶
适合: - 中文、英文、多语言混合知识库。
-
RAG top-50/top-100 候选精排。
-
问答、文档检索、客服知识库、内部制度检索。
-
需要本地部署、可控成本、可复现实验的场景。
不一定适合: - 候选数量极大且不能接受延迟增加的在线场景。
-
需要直接处理图像、截图、视频的多模态检索。
-
业务 query 和 passage 很长,但没有滑窗、摘要或层级检索策略。
-
需要跨 query 使用固定阈值做强过滤的场景,因为 reranker 分数通常校准不足。
推荐初始参数:
retrieve top_n: 50 或 100
rerank keep top_k: 3 到 10
max_length: 512 或 1024 起步
batch_size: 根据显存压测
score usage: 同一 query 内排序优先,阈值只作为辅助
8. Jina Reranker v2¶
Jina Reranker v2 的代表模型是 jina-reranker-v2-base-multilingual。它是 cross-encoder reranker,面向多语言检索,并特别强调 function calling、text-to-SQL、代码检索等 agentic RAG 场景。
它的特点:
- query-document pair 输入,输出相关性分数。
-
多语言能力较强。
-
对函数调用候选、SQL schema、代码片段等结构化文本场景做了针对性优化。
-
模型卡中说明基础上下文长度通常按 1024 token 使用,超长文本可用滑窗策略。
-
商业部署需要关注许可证和 API 方案。
Jina Embeddings v2 和 Jina Reranker v2 不要混淆。Jina Embeddings v2 是 embedding 模型,论文重点是 8192-token long-document embedding,使用改造 BERT 和双向 ALiBi 处理长文本。Jina Reranker v2 是精排模型,关注 query-document pair 的相关性判断。 适合把 Jina Reranker v2 作为对比模型的场景: - RAG 中有工具调用描述、函数签名、SQL 表结构、代码片段。
-
query 或 document 中多语言混杂。
-
希望通过 API 快速验证 rerank 对最终答案的收益。
9. mGTE / GTE multilingual reranker¶
mGTE 论文讨论的是长上下文多语言文本表示与重排模型。其核心方向是从头构建原生 8192 上下文的多语言文本编码器,并构造 hybrid text representation model 和 cross-encoder reranker。
工程上常见代表:
- Alibaba-NLP/gte-multilingual-reranker-base
- 支持 70+ 语言。
-
支持最高 8192 token 级长上下文。
-
模型约 306M 参数。
-
架构上结合 BERT、RoPE、GLU 等 transformer++ 设计。
它的价值在于:当你的语料不是短 chunk,而是长段落、法规、说明书、论文段落时,reranker 能读取更长的 query-document pair,减少因截断导致的错排。 但长上下文 rerank 不等于无成本: - 输入长度变长,attention 计算和显存压力会增加。
-
长文档中仍可能存在噪声,需要 chunking、段落压缩或层级 rerank。
-
线上 QPS 高时,需要批处理、缓存和候选数控制。
10. Qwen3-VL Embedding / Reranker¶
Qwen3-VL Embedding / Reranker 是面向多模态检索和排序的模型系列,建立在 Qwen3-VL 基础模型之上。它把文本、图片、文档图像、视频等输入映射到统一表示空间,并提供 cross-encoder reranker 做更细粒度的相关性估计。 它的关键词: - 多模态:文本、图片、截图、文档图像、视频。
-
多语言:继承 Qwen3-VL 的多语言能力。
-
长上下文:论文报告中 embedding 支持 32k token 输入。
-
Matryoshka Representation Learning:可灵活选择 embedding 维度。
-
reranker:query-document pair 通过 cross-attention 进行细粒度相关性判断。
-
尺寸:2B 和 8B 等不同规格,便于在效果和部署成本之间选择。
它适合的不是普通纯文本知识库的第一选择,而是: - 多模态 RAG。
-
PDF 截图、表格截图、网页截图检索。
-
图文混合商品检索。
-
视频片段和文本 query 的匹配。
-
视觉文档问答中的候选页面精排。
11. Rerank 的评估方式¶
只看 reranker 自身分数不够,必须看它对检索和答案的实际收益。 离线检索指标: - Recall@k:相关文档是否被召回。
-
Precision@k:top-k 中相关文档比例。
-
MRR@k:第一个相关文档的位置。
-
nDCG@k:考虑相关性等级和排序位置。
-
Hit@k:top-k 是否至少命中一个可回答证据。
RAG 端到端指标: - answer exact match / F1。
-
groundedness:答案是否被检索证据支持。
-
citation accuracy:引用片段是否真能支持结论。
-
hallucination rate:无证据回答比例。
-
latency / cost / QPS。
推荐实验设计:
baseline: embedding top-5 直接进 LLM
variant A: embedding top-50 -> rerank top-5
variant B: BM25 + embedding fusion top-100 -> rerank top-5
variant C: query rewrite -> fusion -> rerank top-5
比较:
nDCG@5 / MRR@10
answer groundedness
平均延迟和 P95 延迟
单次查询成本
12. Rerank 的常见失败模式¶
候选召回不足: reranker 只能重排已有候选,不能凭空找回没有召回的文档。如果 top-100 中没有答案,rerank 无法解决问题。 文档过长被截断: 相关证据在 passage 后半部分时,cross-encoder 可能没看到。需要优化 chunking、滑窗或 max_length。 分数不可跨 query 比较: 同一 query 下分数可以排序,但不同 query 的分数分布不同。直接设全局阈值可能误伤。 过度依赖语义相似: 有些 reranker 会把“看起来相关但不支持答案”的段落排高。需要用标注集检查 evidence sufficiency。 延迟爆炸: 候选数、输入长度、batch size、模型大小都会放大延迟。top_n 从 50 增到 200,成本可能线性增加;max_length 增加则可能导致 attention 计算明显增加。 训练或微调数据偏差: 如果 hard negative 不够难,模型会学会区分简单负例,但遇到高相似干扰段落时仍然错排。
13. 实战选型建议¶
纯文本中文/英文 RAG:
优先试 bge-reranker-v2-m3。它开源、生态成熟、中文表现稳,适合本地部署和快速建立 baseline。
代码、SQL、函数调用候选:
补测 Jina Reranker v2,观察它对符号、函数描述、参数约束和代码片段的排序效果。
长文档、多语言:
补测 GTE multilingual reranker / mGTE 系列,重点看长输入截断率、P95 延迟和长文档 nDCG。
图文混合、多模态 RAG:
考虑 Qwen3-VL Embedding / Reranker,尤其是截图、PDF 页面、图表、视频帧等场景。
高精度低 QPS:
可以尝试 LLM-as-reranker 或 listwise rerank,让大模型一次比较多个候选,但要严格控制成本和稳定性。
高 QPS 线上服务:
先控制候选数和输入长度,选择轻量 cross-encoder,加入缓存、batching、异步 rerank 和降级策略。
14. 面试表达模板¶
我比较熟悉 bge-reranker-v2-m3。它是 BGE Reranker v2 系列里的多语言 cross-encoder reranker,基于 BGE-M3。和 embedding retriever 不同,它把 query 和 passage 拼成 pair 输入模型,直接输出相关性分数,所以能建模 token 级交互,适合在 RAG 中对 embedding 或 BM25 召回的 top-50/top-100 候选做精排。
工程上我会先用 embedding 或 hybrid retrieval 召回候选,再用 bge-reranker-v2-m3 计算每个 query-passage pair 的 score,按同一 query 下的 score 排序,保留 top-3 到 top-10 给 LLM。评估时不会只看 reranker 分数,而是看 nDCG@k、MRR@k、answer groundedness、P95 延迟和成本。
需要注意的是,reranker 解决的是候选排序问题,不解决召回缺失问题;分数也不一定能跨 query 直接比较。生产中还要处理 max_length 截断、候选数控制、batching、显存和许可证。
15. 紧凑总结¶
-
Reranker 是 RAG 的二阶段精排模型,通常处理 retriever 召回的 top-n 候选。
-
Cross-encoder reranker 比 embedding retriever 慢,但能建模 query-document token 级交互。
-
BGE Reranker v2-m3 是中文/多语言文本 RAG 的强 baseline。
-
Jina Reranker v2 适合多语言、代码、函数调用、SQL 等 agentic RAG 场景对比。
-
mGTE / GTE multilingual reranker 强调长上下文和多语言,适合长文档检索。
-
Qwen3-VL Reranker 面向图文、截图、视频等多模态检索。
-
选型时要同时看精度、延迟、输入长度、语言、部署方式、许可证和业务数据。
-
评估 rerank 时要看检索指标和最终答案指标,不能只看模型榜单。
预览时标签不可点<div class="