跳转至

三十一: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 retriever 是 first-stage recall,目标是从大量 chunk 中快速召回候选。Reranker 是 second-stage precision,目标是在几十到几百个候选里,把真正能回答问题、证据最充分的 chunk 排到前面。 二者的根本区别:

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 级交互,适合精排。
Rerank 模型通常更慢,因为每个候选都要和 query 共同过一次模型。但它能捕捉否定、条件、数字、实体关系、代码符号、跨语言语义和证据充分性,因此能显著提升 top-k precision。

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 的输入输出

推理形式:

input pair = [query, passage]
score = reranker(input pair)
常见用法:

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="