mxbai-rerank

开源权重 · mixedbread-ai ·

开源权重托管 APIApache 2.0v2:100+ 种语言浏览器可跑 xsmall

mixedbread-ai 目前有两代重排序器。v1(xsmall/base/large)是基于 DeBERTa-v3 的 cross-encoder 系列,仅支持英文,其中 xsmall 足够轻量、可在浏览器中运行 —— 这也是它成为本站在线 Demo 选项之一的原因。v2(base/large)是更新的一代,基于 Qwen2.5、经强化学习训练,新增了 100+ 种语言支持,包括中文。两代均采用 Apache 2.0 协议。

模型变体

模型参数量上下文长度语言最适合
mxbai-rerank-xsmall-v171M512 tokens英文浏览器 / 边缘端;Demo 里最大的模型(实测每 10 段约 728 ms)
mxbai-rerank-base-v1~0.2B512 tokens英文速度与质量的良好平衡
mxbai-rerank-large-v1435M512 tokens英文上一代旗舰;已被下方的 v2 取代
mxbai-rerank-base-v20.5B默认 8k,最高可达 32k100+ 种,含中文体积与质量的最佳平衡;生产环境默认选择
mxbai-rerank-large-v21.5B默认 8k,最高可达 32k100+ 种,含中文精度最高;建议使用 GPU

v1 系列是在 MS MARCO 段落排序任务上训练的 DeBERTa-v3 cross-encoder;v2 是基于 Qwen2.5 的新一代,采用三步强化学习训练(GRPO、对比学习、偏好学习)。新的生产环境建议从 mxbai-rerank-base-v2 开始,尤其是涉及非英文内容时 —— 它在下方所有公开基准上都优于 v1 的 large。仅在浏览器或边缘端部署时才保留 xsmall-v1,因为 v2 没有同等体积的小型变体。

速度方面,mixedbread 自己的表给出的 A100 延迟是:large-v1 2.24 秒,large-v2 0.89 秒,base-v2 0.67 秒。表里没说是多大批量,所以请把它当作相对速度来看 —— v2 体量更大却更快 —— 而不是单次查询的耗时。

基准测试

模型BEIR,mixedbread 2026 年对比表11 个 BEIR 数据集,v1 发布时(NDCG@10)同一测试,Accuracy@3
mxbai-rerank-xsmall-v1未公布43.970.0
mxbai-rerank-base-v1未公布46.972.3
mxbai-rerank-large-v149.32*48.874.9
mxbai-rerank-base-v255.57*未参与该测试—
mxbai-rerank-large-v257.49*未参与该测试—

两组测试都是 mixedbread 自己做的。第一列来自他们的跨代对比表(GitHub 上的 mxbai-rerank);后两列来自 v1 的模型卡:11 个 BEIR 数据集,对 Lucene 关键词检索召回的前 100 条重排序,单用关键词检索得分为 38.0。2026 年 10 月之前,这张表写的是 xsmall-v1 和 base-v1 在 BEIR 上约 55.5 和约 59.8,另有一列 MS MARCO MRR@10(约 38.0 到 42.3),这些我们都查不到出处;mixedbread 在 11 数据集测试中公布的是 43.9 和 46.9,也没有为这几个模型公布 MS MARCO 分数。9 月时本页已将 large-v1 从没有出处的约 62.1 改正。

多语言(v2 存在的原因)

模型Mr.TyDi 多语言均值中文
mxbai-rerank-large-v1(仅英文)21.88*72.53
mxbai-rerank-base-v228.56*83.70
mxbai-rerank-large-v229.79*84.16

v1 从来都不是多语言模型 —— 只是在 mixedbread 自己 2026 年的回顾评测之前,它一直没有在非英文数据上被测过。如果你的文档不全是英文,应该用 v2 这一代;v1 不能替代它。

快速上手

v2,自建部署

pip install -U mxbai-rerank
from mxbai_rerank import MxbaiRerankV2

reranker = MxbaiRerankV2("mixedbread-ai/mxbai-rerank-base-v2")  # or large-v2

query = "How do I add reranking to my RAG pipeline?"
documents = [
    "Rerankers score each query-passage pair with a cross-encoder.",
    "BM25 is a classical keyword-based retrieval method.",
    "London is the capital of the United Kingdom.",
    "Two-stage retrieval: retrieve 50 candidates, rerank to top 5.",
]

results = reranker.rank(query=query, documents=documents)
for r in results:
    print(f"{r.score:.4f}  {r.document[:80]}")

v1,自建部署(sentence-transformers)

pip install sentence-transformers
from sentence_transformers import CrossEncoder

model = CrossEncoder("mixedbread-ai/mxbai-rerank-base-v1")

query = "How do I add reranking to my RAG pipeline?"
passages = [
    "Rerankers score each query-passage pair with a cross-encoder.",
    "BM25 is a classical keyword-based retrieval method.",
    "London is the capital of the United Kingdom.",
    "Two-stage retrieval: retrieve 50 candidates, rerank to top 5.",
]

scores = model.predict([(query, p) for p in passages])
ranked = sorted(zip(scores, passages), reverse=True)

for score, text in ranked:
    print(f"{score:.4f}  {text[:80]}")

在 RAG 流水线中(v2)

from mxbai_rerank import MxbaiRerankV2

reranker = MxbaiRerankV2("mixedbread-ai/mxbai-rerank-large-v2")

def rag_answer(query: str, vector_db, llm) -> str:
    # Stage 1: retrieve wide
    candidates = vector_db.search(query, top_k=50)
    # Stage 2: rerank tight
    results = reranker.rank(query=query, documents=candidates, top_k=5)
    top5 = [r.document for r in results]
    # Stage 3: generate
    return llm.complete(f"Context:\n" + "\n\n".join(top5) + f"\n\nQ: {query}")

托管 API

Mixedbread 现在主推的托管重排序模型已经不是 v1 或 v2。它的文档把这两代都归入旧版模型:权重仍在 Hugging Face 上,但直接调用的 rerank API 已不再出现在文档中,现有集成需要联系 Mixedbread 支持团队了解迁移。托管重排序现在在 Mixedbread Search 内部运行,对象是你上传到 Mixedbread 存储里的文档,默认模型是 mxbai-rerank-v3.1-listwise(2026 年 7 月)。它是列表式模型 —— 把候选集当作一个整体来读,能按“以最近一次预订为准”这样的自然语言指令排序 —— 权重没有公开。

在 Mixedbread 自己的 900 条指令跟随评测中,v3 列表式模型的 MRR 为 0.93*,Voyage rerank-2.5 为 0.84*,Cohere Rerank 4 Pro 为 0.77*,zerank-2 为 0.71*(发布公告);9 月取代它的 v3.1 据称更快、效果更好(v3.1 公告)。目前还没有第三方测试。

下面这个直接调用的接口配合开源的 v2 权重,是 Mixedbread 到 2026 年为止文档里的用法。SDK 是 mixedbread(旧的 mixedbread_ai 包属于 v1 时代):

pip install mixedbread
from mixedbread import Mixedbread

mxbai = Mixedbread(api_key="YOUR_API_KEY")

result = mxbai.rerank(
    model="mixedbread-ai/mxbai-rerank-large-v2",
    query="How do I add reranking to my RAG pipeline?",
    input=[
        "Rerankers score each query-passage pair jointly.",
        "BM25 is a keyword-based retrieval method.",
        "London is the capital of the United Kingdom.",
        "Two-stage retrieval: retrieve wide, rerank tight.",
    ],
    top_k=3,
)

for item in result.data:
    print(f"{item.score:.4f}  rank {item.index + 1}")

浏览器使用

v1 的 xsmall 变体足够轻量,可以通过 transformers.js 在浏览器中运行 —— 这正是我们 Demo 所使用的方式。v2 最小的变体(0.5B)目前还没有对应的浏览器体积版本:

// transformers.js (ES module)
import { AutoTokenizer, AutoModelForSequenceClassification }
  from "https://cdn.jsdelivr.net/npm/@huggingface/transformers@4";

const tokenizer = await AutoTokenizer.from_pretrained(
  "mixedbread-ai/mxbai-rerank-xsmall-v1", { dtype: "q8" }
);
const model = await AutoModelForSequenceClassification.from_pretrained(
  "mixedbread-ai/mxbai-rerank-xsmall-v1", { dtype: "q8" }
);

const inputs = tokenizer(
  [query, query],
  { text_pair: [doc1, doc2], padding: true, truncation: true }
);
const { logits } = await model(inputs);
const scores = logits.sigmoid().tolist();

使用 dtype: "q8" 后,量化权重约为 35 MB —— 下载迅速,首次运行后即缓存到 IndexedDB 中。

优缺点

优点

  • Apache 2.0 —— 完全开放,允许商业使用,两代都是
  • v2 支持 100+ 种语言,包括中文
  • v1 的 xsmall 变体可通过 transformers.js 在浏览器中运行
  • v2 在所有已公开的基准上都优于 v1 的 large
  • 可通过 mxbai-rerank / sentence-transformers 包轻松集成
  • 可通过 Mixedbread Search 使用托管重排序,现在用的是能跟随指令的列表式模型

缺点

  • v1 仅支持英文;多语言的是 v2 这一代,不是 v1
  • v2 没有浏览器 / 边缘端体积的变体 —— 最小的是 0.5B
  • v1 的 512 token 上下文对长文档而言较短
  • 社区规模小于 bge 或 Cohere
  • v2 的 large 需要 GPU 才能达到实用速度

mxbai-rerank-xsmall 驱动本站 Demo

在模型选择器中选中它,实时看到它对你的段落打分 —— 首次使用后无需重新下载。

打开 Demo →

其他模型