Xinference 内置 jina-reranker-m0 重排模型:多模态 Rerank 的启动、调用与实现解析
2026/9/17 19:19:03 网站建设 项目流程

Xinference 内置 jina-reranker-m0 重排模型:多模态 Rerank 的启动、调用与实现解析

【免费下载链接】inferenceSwap GPT for any LLM by changing a single line of code. Xinference lets you run open-source, speech, and multimodal models on cloud, on-prem, or your laptop — all through one unified, production-ready inference API.项目地址: https://gitcode.com/GitHub_Trending/in/inference

本文以 Xinference 内置重排(Rerank)模型jina-reranker-m0为线索,完整讲解如何在 Xinference 中通过一行命令启动该模型、使用 Rerank API 对文本与图像文档进行相关性排序,并结合仓库源码剖析其模型规格定义、加载路径与运行前提。读完本文,你将掌握jina-reranker-m0的端到端使用方式,并理解其在 Rerank 能力文档 与内置模型体系中的定位。

一、模型概览与核心规格

jina-reranker-m0是 Xinference 内置模型清单中登记的多模态重排模型,其模型卡位于 doc/source/models/builtin/rerank/jina-reranker-m0.rst,关键信息如下:

  • Model Name(模型名):jina-reranker-m0
  • Languages(语言):en、zh、multilingual,即支持英文、中文与多语言场景
  • Abilities(能力):rerank(重排)
  • Model ID(模型标识):jinaai/jina-reranker-m0

在仓库内置模型规格文件 xinference/model/rerank/model_spec.json 中,可以找到该模型的完整结构化定义:

字段说明
version2模型规格版本
model_namejina-reranker-m0与启动命令使用的名称一致
typenormal常规重排模型类型
model_ability["vision"]具备视觉(图像)理解能力,这是其多模态重排的基础
language["en", "zh", "multilingual"]支持语言
max_tokens10240最大上下文长度(token 数)
model_formatpytorch仅支持 PyTorch 格式,不支持 GGUF 等量化格式
model_src.huggingfacejinaai/jina-reranker-m0,revisionmainHugging Face 模型源
model_src.modelscopejinaai/jina-reranker-m0,revisionmasterModelScope 模型源
quantizations["none"]不提供量化版本

与同样内置的jina-reranker-v2jina-reranker-v3等文本重排模型不同,jina-reranker-m0的独特之处在于其vision能力:它不仅能对文本段落打分,还能直接对图像文档进行相关性排序,这是本文后续要重点展开的部分。

二、一行命令启动模型

按照模型卡文档,启动jina-reranker-m0只需执行:

xinference launch --model-name jina-reranker-m0 --model-type rerank

命令中各参数的语义为:

  • --model-name:指定要启动的内置模型名称,这里为jina-reranker-m0
  • --model-type:指定模型类型,重排模型统一使用rerank

实际使用中,还可以叠加以下常用参数(与 xinference/deploy/cmdline.py 中launch子命令的参数体系一致):

  • --model-uid:自定义模型 UID;若不指定,Xinference 会自动生成。后续通过 API 调用时,请求体中的model字段需要填写该 UID;
  • --model-engine:重排模型默认引擎为sentence_transformers(详见下文实现解析),除非是 GGUF 格式才回退到llama.cpp;当前模型仅支持pytorch格式,因此直接使用默认引擎即可;
  • --download-hub:指定模型下载源,可选huggingfacemodelscopeopenmind_hubcsghub,仓库默认按可用性选择;
  • --quantization:该模型规格仅声明none,无需也无法指定量化位。

启动成功后,jina-reranker-m0便作为一个标准的 Rerank 服务注册到 Xinference,可经由/v1/rerank端点被调用。

三、Rerank API 调用方式

Rerank 模型在 Xinference 中通过 Rerank 端点对文档列表按与查询(query)的语义相关度从高到低排序。官方能力文档 doc/source/models/model_abilities/rerank.rst 提供了三种调用方式:cURL、Xinference Python Client 与 JSON 输出示例。

3.1 通过 cURL 调用

curl -X 'POST' \ 'http://<XINFERENCE_HOST>:<XINFERENCE_PORT>/v1/rerank' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "model": "<MODEL_UID>", "query": "A man is eating pasta.", "documents": [ "A man is eating food.", "A man is eating a piece of bread.", "The girl is carrying a baby.", "A man is riding a horse.", "A woman is playing violin." ] }'

请求体中,model为启动时生成或指定的模型 UID,query为查询文本,documents为待排序的候选文档列表。

3.2 通过 Xinference Python Client 调用

from xinference.client import Client client = Client("http://<XINFERENCE_HOST>:<XINFERENCE_PORT>") model = client.get_model(<MODEL_UID>) query = "A man is eating pasta." corpus = [ "A man is eating food.", "A man is eating a piece of bread.", "The girl is carrying a baby.", "A man is riding a horse.", "A woman is playing violin." ] print(model.rerank(corpus, query))

3.3 响应结构

返回结果为按相关度降序排列的文档索引列表,示例:

{ "id": "480dca92-8910-11ee-b76a-c2c8e4cad3f5", "results": [{ "index": 0, "relevance_score": 0.9999247789382935, "document": "A man is eating food." }, { "index": 1, "relevance_score": 0.2564932405948639, "document": "A man is eating a piece of bread." }, { "index": 3, "relevance_score": 0.00003955026841140352, "document": "A man is riding a horse." }, { "index": 2, "relevance_score": 0.00003742107219295576, "document": "The girl is carrying a baby." }, { "index": 4, "relevance_score": 0.00003739788007806055, "document": "A woman is playing violin." }] }

其中results[].index指向原始documents列表中的位置,relevance_score为语义相关度分数。从服务端实现看,排序逻辑在 xinference/model/rerank/sentence_transformers/core.py 中完成:模型先对每个(query, document)组合计算相似度分数,再用np.argsort取降序排列,并依据top_n截断、依据return_documents决定是否回传原文、依据return_len决定是否统计 token 消耗。

四、多模态重排:直接对图像打分

这是jina-reranker-m0相对其他文本重排模型的核心差异点。能力文档 doc/source/models/model_abilities/rerank.rst 中专门设有 "Multimodal reranking with jina-reranker-m0" 一节,说明如下要点:

  • jina-reranker-m0支持文本与图像的混合重排,最大上下文长度为10,240 tokens(与model_spec.json中的max_tokens完全一致);
  • 纯文本文档使用上文的标准 Rerank API;
  • 对图像文档(URL 或本地路径)进行重排时,通过 Python Client 传入doc_type="image"
model.rerank( [ "https://example.com/document-1.png", "https://example.com/document-2.png", ], "Which document describes a small language model?", doc_type="image", )
  • 若查询本身也是图像,则额外传入query_type="image"
model.rerank( ["https://example.com/document-1.png"], "https://example.com/query-image.png", doc_type="image", query_type="image", )

这一能力使 RAG(检索增强生成)流水线在召回阶段可以直接处理截图、扫描件、产品图等非文本内容,而不必先做 OCR 转文本。

五、源码级实现解析

5.1 引擎选择:默认 sentence_transformers

在 xinference/model/rerank/core.py 中,create_rerank_model_instance对引擎选择的逻辑是:除 GGUF 规格只能运行在llama.cpp上外,其余重排模型默认使用sentence_transformers引擎。jina-reranker-m0仅有pytorch格式,因此始终走 sentence_transformers 引擎路径。

5.2 加载路径与 trust_remote_code 要求

在 xinference/model/rerank/sentence_transformers/core.py 中,对jina-reranker-m0有专门的分支处理:

  1. 要求安装transformers>=4.47.3,否则抛出带安装指引的ImportError
  2. 由于该模型仓库携带自定义建模代码(custom modeling code),加载前必须先通过allow_trust_remote_code校验;若不满足,会抛出明确错误并提示设置环境变量XINFERENCE_TRUST_REMOTE_CODE=1以放行远端代码执行;
  3. 使用AutoModel.from_pretrained(..., trust_remote_code=True)加载并置于.eval()模式,加载参数包括device_map(默认auto)与torch_dtype(启用 FP16 时使用torch.float16);
  4. 若开启了 Flash Attention,会向模型传入attn_implementation="flash_attention_2"

可见,jina-reranker-m0的本地化加载绕开了 sentence-transformers 的 CrossEncoder 封装,直接以 Hugging Face Transformers 方式加载,这与其视觉输入处理方式直接相关。

5.3 打分路径

在 xinference/model/rerank/sentence_transformers/core.py 中,打分时对jina-reranker-m0再次走专用分支:调用模型自带的compute_score方法,并以model_spec.json中的max_tokens(10,240)作为默认max_length,同时过滤掉已由预处理阶段拼接的instruction参数。打分结果会被统一规范化为序列,再进入上文的排序与响应组装流程。

5.4 依赖与格式约束

在 xinference/model/rerank/sentence_transformers/core.py 的match_json校验中:

  • 非虚拟环境模式下,要求本机已安装transformersPillow(后者是图像输入处理的依赖);
  • 明确校验model_spec.model_format必须为pytorch,否则返回错误信息"jina-reranker-m0 supports pytorch format only"

同时,model_spec.json中该模型的virtualenv依赖声明为:sentence_transformers 依赖、Pillowsystem_torchvisionsystem_torch(仅当启用虚拟环境隔离时按需安装),这与core.py的检查逻辑互为印证。

5.5 测试佐证

仓库测试 xinference/model/rerank/sentence_transformers/tests/test_sentence_transformers.py 中将jina-reranker-m0映射为["vision"]能力,进一步印证了其多模态(视觉重排)定位。

六、注意事项

  • 远端代码执行:加载jina-reranker-m0会执行模型仓库随附的建模代码,需要显式设置XINFERENCE_TRUST_REMOTE_CODE=1(或在满足allow_trust_remote_code的条件下运行),否则加载会失败;
  • 仅支持 PyTorch 格式:该模型不支持 GGUF 或量化版本,指定其他--model-format--quantization不会被接受;
  • 图像输入形态doc_type="image"接受图像 URL 或本地路径,两种形态均无需预先 OCR;
  • 上下文长度:单次打分的最长上下文为 10,240 tokens,超长文档在预处理阶段会被截断,实际使用中建议对长文档做切块后分别重排;
  • 模型源:默认从 Hugging Face(revisionmain)或 ModelScope(revisionmaster)拉取,国内环境可通过--download-hub modelscope指定下载源以加速。

综合来看,jina-reranker-m0是 Xinference 内置模型中少有的"开箱即用"多模态重排选项:通过 jina-reranker-m0 模型卡 中的一行启动命令即可拉起服务,再配合 Rerank 能力文档 中的doc_type="image"参数即可直接对图像内容排序,是构建多模态 RAG 检索阶段的有效组件。若需查阅其他内置重排模型(如jina-reranker-v2jina-reranker-v3qwen3-reranker系列),可浏览 内置重排模型目录 下的对应模型卡。

【免费下载链接】inferenceSwap GPT for any LLM by changing a single line of code. Xinference lets you run open-source, speech, and multimodal models on cloud, on-prem, or your laptop — all through one unified, production-ready inference API.项目地址: https://gitcode.com/GitHub_Trending/in/inference

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

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

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

立即咨询