☰
如何快速上手Rerank?5分钟跑通本地多语言重排序的完整教程
2026/10/17 16:13:09 网站建设 项目流程

【免费下载链接】Rerank

项目地址:https://ai.gitcode.com/netease-youdao/Rerank
点击查看免费下载

Rerank 是网易有道开源的多语言重排序(Rerank)模型,仓库内置基于 XLM-RoBERTa 架构的 ONNX 推理文件和完整分词器配置,无需训练、不依赖 GPU,5 分钟即可在本地跑通中、英、日、韩、法、德等上百种语言的文档重排序。这篇完整教程带你从零开始:克隆仓库 → 安装依赖 → 跑通最小推理示例 → 读懂相关性分数并排序。

一、Rerank 是什么?一分钟读懂多语言重排序模型

在搜索和检索系统里,通常会经历两步:

  1. 召回(Retrieval):从海量文档中快速筛出几十上百个候选;
  2. 重排序(Reranking):用更精细的模型对候选逐个打“相关性分数”,把最相关的排到前面,显著提升结果质量。

Rerank 就是第二步的“打分模型”。它的核心特点:

  • 🌍多语言:底层采用 XLM-RoBERTa 架构(12 层、768 维隐藏层,词表 25 万),天然支持上百种语言,跨语言检索也能用;
  • ⚡ONNX 格式:推理文件 rerank.onnx 采用开放的 ONNX 格式,跨平台、加载快、CPU 即可运行;
  • 📦开箱即用:仓库直接提供推理文件 + 分词器,不需要 PyTorch 权重,也不需要自己训练;
  • ✅Apache-2.0 协议:可自由用于商业项目(见 README.md)。

二、准备工作:克隆仓库与文件清单一览

仓库中的大文件通过 Git LFS 管理,所以克隆前务必先安装 LFS,否则拿到的是 100 多字节的占位指针文件而不是真正的模型:

git lfs install git clone https://gitcode.com/netease-youdao/Rerank cd Rerank

仓库结构非常精简,每个文件各司其职:

文件作用
rerank.onnxONNX 格式的重排序推理模型(核心)
config.json模型结构配置,标明XLMRobertaForSequenceClassification架构
sentencepiece.bpe.modelXLM-RoBERTa 的 SentencePiece BPE 词表
tokenizer_config.json分词器配置(特殊 token、分词器类型等)
special_tokens_map.json特殊 token 映射(<s>、</s>、<pad>等)
version.txt模型版本号(当前v0.0.1)

💡 小提示:config.json 中的"model_type": "xlm-roberta"和"num_hidden_layers": 12等参数,正是多语言能力的来源;torch_dtype为float32,说明推理无需担心半精度兼容问题。

三、5分钟跑通 Rerank 本地推理(最小示例)

只需安装两个依赖,无需任何 GPU 环境:

pip install onnxruntime transformers

在仓库根目录创建demo.py,写入下面这段最小推理代码:

import numpy as np import onnxruntime as ort from transformers import AutoTokenizer # 1. 加载分词器与 ONNX 模型(全部来自本地仓库文件) tokenizer = AutoTokenizer.from_pretrained(".") session = ort.InferenceSession( "rerank.onnx", providers=["CPUExecutionProvider"] ) # 2. 一条查询 + 三条候选文档(中英文混排也没问题) query = "什么是重排序模型?" docs = [ "Rerank 是一个多语言重排序模型", "ONNX 是一种开放的机器学习模型格式", "今天天气真不错", ] # 3. 对每篇文档打分:sigmoid 归一化到 0~1 def relevance(doc: str) -> float: enc = tokenizer(query, doc, return_tensors="np", truncation=True, max_length=512) input_names = {i.name for i in session.get_inputs()} out = session.run(None, {k: v for k, v in enc.items() if k in input_names})[0] return float(1.0 / (1.0 + np.exp(-out.flatten()[0]))) # 4. 按分数排序,即完成重排序 ranked = sorted(zip(docs, map(relevance, docs)), key=lambda x: x[1], reverse=True) for doc, s in ranked: print(f"{s:.4f}\t{doc}")

运行python demo.py,典型输出类似:

0.9871 Rerank 是一个多语言重排序模型 0.4102 ONNX 是一种开放的机器学习模型格式 0.2205 今天天气真不错

✅ 到这里,你已经在本地跑通了多语言重排序——最相关的文档自动排到最前面。

四、读懂输出:用相关性分数完成重排序

模型输出的是一个未经归一化的打分 logits,经过sigmoid变换后落在 0~1 之间,可直观理解为“文档与查询的相关概率”:

  • 分数越高 → 文档与查询越相关;
  • 重排序的做法就是:对候选文档逐一打分,然后按分数降序取 Top-K。

工程上的推荐用法:

  • 🔍两阶段检索:先用向量检索/关键词检索召回 50~100 条,再用 Rerank 对这批候选精排,效果与耗时最平衡;
  • 🧮批处理提效:把多条(query, doc)对堆成 batch 一次性送入session.run,比逐条推理快数倍;
  • 🌐跨语言场景:因为词表是 SentencePiece BPE 多语言词表(见 tokenizer_config.json 中的XLMRobertaTokenizer),中文查询匹配英文文档也能得到合理分数。

五、常见问题与性能优化技巧

Q1:模型加载报错或文件只有 100 多字节?说明大文件没走 LFS。在仓库目录执行git lfs install && git lfs pull重新拉取 rerank.onnx 与 sentencepiece.bpe.model 即可。

Q2:输入可以有多长?config.json 中max_position_embeddings为 514,即单条(query, doc)拼接后最多约512 个 token。超长文档建议先截断或切块。

Q3:CPU 跑得快吗?ONNX + CPUExecutionProvider 在单条短文本上通常在几十毫秒内完成;批量请求时建议使用 batch 推理,或按 config.json 的float32精度保持默认即可,无需手动转换。

Q4:可以用来做语义相似度吗?它训练目标是(query, doc)相关性打分,专用于重排序场景;纯语义相似度建议另选 embedding 模型。

总结

Rerank 把“多语言重排序”这件事做到了极致简单:

  1. git lfs install+ 克隆仓库,拿到 rerank.onnx 与全套分词器配置;
  2. pip install onnxruntime transformers两个依赖;
  3. 一段不到 30 行的代码,即可对任意语言的候选文档打相关性分数并完成排序。

整个过程不到 5 分钟,全程本地运行、Apache-2.0 开源协议,无论是搜索优化、RAG 结果精排还是多语言内容理解,都可以直接上手使用。🚀

【免费下载链接】Rerank

项目地址:https://ai.gitcode.com/netease-youdao/Rerank
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询