【免费下载链接】Rerank
Rerank 是网易有道开源的多语言重排序(Rerank)模型,仓库内置基于 XLM-RoBERTa 架构的 ONNX 推理文件和完整分词器配置,无需训练、不依赖 GPU,5 分钟即可在本地跑通中、英、日、韩、法、德等上百种语言的文档重排序。这篇完整教程带你从零开始:克隆仓库 → 安装依赖 → 跑通最小推理示例 → 读懂相关性分数并排序。
一、Rerank 是什么?一分钟读懂多语言重排序模型
在搜索和检索系统里,通常会经历两步:
- 召回(Retrieval):从海量文档中快速筛出几十上百个候选;
- 重排序(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.onnx | ONNX 格式的重排序推理模型(核心) |
| config.json | 模型结构配置,标明XLMRobertaForSequenceClassification架构 |
| sentencepiece.bpe.model | XLM-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 把“多语言重排序”这件事做到了极致简单:
git lfs install+ 克隆仓库,拿到 rerank.onnx 与全套分词器配置;pip install onnxruntime transformers两个依赖;- 一段不到 30 行的代码,即可对任意语言的候选文档打相关性分数并完成排序。
整个过程不到 5 分钟,全程本地运行、Apache-2.0 开源协议,无论是搜索优化、RAG 结果精排还是多语言内容理解,都可以直接上手使用。🚀
【免费下载链接】Rerank
相关推荐
如何快速上手 Gemma-3-4b_rai_1.8.0_npu_16K:10 分钟跑通本地 NPU 推理的完整教程
如何快速上手 Gemma 3 4b_rai_1.8.0_npu_16K:10 分钟跑通本地 NPU 推理的完整教程 Gemma 3 4b_rai_1.8.0_n
ModelTrace 快速上手:5 分钟跑通本地模型归因工具的完整教程
ModelTrace 快速上手:5 分钟跑通本地模型归因工具的完整教程 ModelTrace 是一个本地运行的 模型归因工具 :它通过三条独立的长整数生成挑战提
5分钟跑通Confucius4:llama-cli本地文本推理快速上手教程
5分钟跑通Confucius4:llama cli本地文本推理快速上手教程 想在自己的电脑上体验数学推理多模态大模型?Confucius4_GGUF 是网易有道
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考