ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Xinference Rerank API 实战指南:从文本检索重排到多模态排序

Xinference Rerank API 实战指南:从文本检索重排到多模态排序 Xinference Rerank API 实战指南从文本检索重排到多模态排序【免费下载链接】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 模型能力为核心讲解如何通过统一的/v1/rerank端点对文档列表按语义相关性排序涵盖 cURL 与 Python 客户端的完整调用方式、请求/响应参数说明、内置模型与引擎选型以及基于jina-reranker-m0的多模态文本 图片重排方案。读完本文你将掌握在检索增强生成RAG与语义搜索流水线中无缝接入 Xinference 重排服务的完整实战技能并理解其从 HTTP 路由到推理引擎的底层调用链。Rerank 是什么在信息检索与 RAG 场景中第一阶段检索召回通常依靠向量相似度或关键词命中返回一批候选文档但候选集往往混入大量语义相关度不高的噪声。Rerank重排的作用是给定一个 query 和一份文档列表将文档按与 query 的语义相关度从高到低重新排序从而把最相关的文档排在前面显著提升下游生成或问答的质量。在 Xinference 中Rerank 模型通过统一的 Rerank 端点对外提供服务发送query与documents列表服务端返回按相关度降序排列的结果每个结果包含原始下标与relevance_score相关度分数。Rerank 端点遵循 OpenAI 兼容风格路径为POST /v1/rerank。内置 Rerank 模型与推理引擎在动手调用之前先了解仓库中内置了哪些 Rerank 模型。内置模型清单定义在 xinference/model/rerank/model_spec.json共 17 个模型家族可以归纳为以下几类类别模型名特点经典 BGE/BCE 系列bge-reranker-base、bge-reranker-large、bge-reranker-v2-m3、bce-reranker-base_v1双语句对交叉编码max_tokens为 512支持中英双语LLM 化重排bge-reranker-v2-gemma、bge-reranker-v2-minicpm-layerwise、minicpm-reranker基于 Gemma / MiniCPM 的层间重排Jina 系列jina-reranker-v2、jina-reranker-v3、jina-reranker-v3.5jina-reranker-v3.5使用原生 listwise 打分 APIQwen3 系列Qwen3-Reranker-0.6B、Qwen3-Reranker-4B、Qwen3-Reranker-8B、R3-rerank-0.6b基于 Qwen3 的 yes/no 打分式重排多模态系列jina-reranker-m0、Qwen3-VL-Reranker-2B、Qwen3-VL-Reranker-8B支持文本 图片等模态输入每个模型家族在 JSON 中都声明了 Hugging Face 与 ModelScope 双模型源、量化版本与虚拟环境依赖例如jina-reranker-m0声明了max_tokens: 10240与model_ability: [vision]见 model_spec.json这正是本文后面介绍多模态重排的基础。在推理引擎层面从 xinference/model/rerank/init.py 可以看到当前注册了三个引擎sentence_transformers、vllm、llama.cpp。引擎的选型规则在 xinference/model/rerank/core.py 中明确默认引擎为sentence_transformers即SentenceTransformerRerankModel兼容所有 pytorch 格式模型当模型格式为ggufv2时只能由llama.cpp引擎运行vllm引擎用于在 vLLM 上以高性能方式服务bge、gte、text2vec、m3e、Qwen3前缀的模型见 xinference/model/rerank/vllm/core.py且Qwen3-VL-Reranker系列要求 vLLM ≥ 0.14.0。启动一个 Rerank 模型调用 Rerank API 前需要先启动一个 Rerank 模型并拿到它的model_uid。可以通过命令行xinference launch完成# 以默认引擎sentence_transformers启动 bge-reranker-large xinference launch --model-name bge-reranker-large --model-type rerank --model-uid my-reranker # 指定 vllm 引擎启动 Qwen3-Reranker-4B xinference launch --model-name Qwen3-Reranker-4B --model-type rerank --model-engine vllm --model-uid qwen3-reranker命令行参数定义在 xinference/deploy/cmdline.py 中核心参数包括--model-name / -n模型名必填必须是内置注册名或已注册的自定义模型名--model-type / -t模型类型这里固定传rerank--model-engine / -en推理引擎可选sentence_transformers、vllm、llama.cpp缺省时按模型格式自动推导--model-uid / -u模型唯一标识后续所有 Rerank 请求都用它寻址--model-format / -f模型格式pytorch、ggufv2等一般无需手动指定--quantization / -q量化配置例如q8_0缺省时由系统按 model_spec 匹配--n-gpu、--gpu-idxGPU 分配参数默认auto--trust-remote-code是否允许执行模型仓库自带的 modeling 代码加载jina-reranker-m0、Qwen3-VL-Reranker等模型时需要开启。也可通过 Python 客户端启动并获取句柄from xinference.client import Client client Client(http://localhost:9997) model_uid client.launch_model( model_namebge-reranker-large, model_typererank, ) model client.get_model(model_uid)快速上手三种调用方式启动模型后即可调用 Rerank API。以下示例沿用文档中的经典语义排序场景以A man is eating pasta.为 query对 5 条候选文档按相关性排序。方式一cURLcurl -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. ] }其中XINFERENCE_HOST:XINFERENCE_PORT为 Xinference 服务地址默认localhost:9997MODEL_UID为启动模型时指定的 UID。若服务开启了鉴权还需额外添加Authorization: Bearer API_KEY请求头。方式二Xinference Python 客户端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))方式三响应结构两种调用方式返回的 JSON 结构一致results数组中的元素已按relevance_score从高到低排序{ 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. }] }可以看到语义最接近的A man is eating food.获得了接近 1.0 的分数并被排在最前而与吃意面无关的文档分数趋近于 0。index字段保留的是文档在原始documents数组中的下标方便你在应用层回填原始文档。请求参数详解Rerank 请求体由 xinference/api/schemas/requests.py 中的RerankRequest模型定义参数类型必填说明modelstr是要调用的 Rerank 模型 UIDquerystr 或 dict是查询文本多模态场景下可为包含图片等字段的字典documentslist[str] 或 list[dict]是待重排的文档列表元素同样支持文本或多模态字典top_nint否只返回分数最高的前 N 条结果默认返回全部return_documentsbool否是否在结果中回带文档原文默认falsereturn_lenbool否是否在meta.tokens中返回输入/输出 token 数默认falsemax_chunks_per_docint否单个文档允许切分的最大 chunk 数kwargsstr(JSON)否透传给底层引擎的额外参数如instruction、doc_type、query_typeHTTP 层面对这些参数的解析与转发实现在 xinference/api/restful_api.py服务端读取请求体后调用模型的rerank方法并把top_n、max_chunks_per_doc、return_documents、return_len及kwargs一并传入结果以 JSON 形式返回。需要特别说明两点top_n与return_documents结合 xinference/model/rerank/sentence_transformers/core.py 的实现可知服务端先对全部文档打分再做np.argsort逆序截断。top_n用于控制返回条数return_documents控制结果中是否携带document.text字段关闭时该项为null可显著减小响应体积。kwargs透传它是连接标准 API 与引擎特有能力的通道。例如多模态图片重排要用的doc_typeimage、query_typeimage以及部分模型支持的instruction指令前缀都通过该字段传递。多模态重排jina-reranker-m0jina-reranker-m0是仓库内置的多模态重排模型见 model_spec.json支持文本与图片混合重排最大上下文长度为10,240 tokens。文本文档的调用方式与上面的标准 API 完全一致要重排图片 URL 或本地图片路径只需通过kwargs传入doc_typeimagemodel.rerank( [ https://example.com/document-1.png, https://example.com/document-2.png, ], Which document describes a small language model?, doc_typeimage, )如果查询本身也是图片则同时传入query_typeimagemodel.rerank( [ https://example.com/document-1.png, https://example.com/document-2.png, ], https://example.com/query-image.png, doc_typeimage, query_typeimage, )在底层实现上加载jina-reranker-m0时xinference/model/rerank/sentence_transformers/core.py会校验transformers依赖并强制要求开启trust_remote_code即设置环境变量XINFERENCE_TRUST_REMOTE_CODE1或启动时传--trust-remote-code因为该模型依赖模型仓库自带的定制代码打分阶段则调用模型自身的compute_score完成多模态打分。如果未启用虚拟环境还需额外安装transformers与Pillow。源码级原理一次重排请求的完整调用链为了帮助你深入理解并排查问题这里把一次model.rerank(...)的完整调用链梳理如下均以仓库源码为据路由注册xinference/api/routers/rerank.py 将POST /v1/rerank绑定到RESTfulAPI.rerank若服务开启了鉴权该路由受models:readscope 保护。请求解析与校验xinference/api/restful_api.py 将 payload 解析为RerankRequest校验模型访问权限后通过require_model取得已加载的模型实例并把documents、query及可选参数转发给model.rerank(...)。引擎分发model.rerank是 xinference/model/rerank/core.py 中定义的抽象方法实际由所选引擎实现sentence_transformers / vllm / llama.cpp。sentence_transformers 引擎在打分前会调用 xinference/model/rerank/utils.py 的preprocess_sentence自动为minicpm-reranker等模型拼接Query: 指令前缀也会尊重用户在kwargs中显式传入的instruction。打分与排序引擎对(query, document)对逐条打分随后在 xinference/model/rerank/sentence_transformers/core.py 中按分数降序排列、按top_n截断并组装Rerank响应id、results、meta。响应结构定义于 xinference/types.py其中meta字段用于与 Cohere API 兼容api_version、billed_units、warnings默认置空。token 统计与缓存回收当return_lenTrue时sentence_transformers 引擎会通过 tokenizer 统计输入 token 数并写入meta.tokens每次调用累计计数器每满RERANK_EMPTY_CACHE_COUNT环境变量XINFERENCE_RERANK_EMPTY_CACHE_COUNT控制默认 10 次就执行一次gc.collect()与显存回收防止长期服务时显存持续膨胀。此外sentence_transformers 引擎还通过 xinference/model/rerank/sentence_transformers/core.py 的批量处理逻辑支持并发请求的合并打分多个请求按 kwargs 哈希分组同组文档合并成一次前向推理最后再按原始调用顺序拆包返回——这意味着在并发调用场景下底层会尽量复用 batch 计算以提升吞吐。测试用例如何验证 Rerank 行为仓库为 Rerank 功能提供了完善的测试覆盖其中 xinference/model/rerank/tests/test_rerank.py 的test_restful_api验证了以下关键行为可作为你自测 API 的对照清单默认调用results[0].index 0且document.text与最相关文档一致top_n3时只返回 3 条结果return_lenTrue时meta.tokens.input_tokens meta.tokens.output_tokens不传return_len时meta.tokens为null超长文档原文 50 倍拼接可正常截断重排传入非法kwargs会抛出RuntimeError。除 RESTful API 测试外xinference/model/rerank/tests 目录还覆盖了本地模型 URI 加载test_from_local_uri、自定义模型注册test_register_custom_rerank、未知类型自动检测test_auto_detect_type等场景并针对各引擎分别提供了 sentence_transformers、vllm 与 llama_cpp 的专项测试。进阶使用建议自定义模型注册除内置模型外可通过 xinference/model/rerank/custom.py 中的register_rerank注册自定义 Rerank 模型并指定model_uri指向本地目录其缓存与加载逻辑由 xinference/model/rerank/cache_manager.py 负责模型文件会被软链到 Xinference 的缓存目录。指令前缀对于依赖指令格式的模型如bge-reranker-v2-minicpm-layerwise类通过kwargs传入instruction可显著改善排序效果未显式传入时系统会为minicpm-reranker自动补上Query: 前缀。限制说明max_chunks_per_doc参数当前在 sentence_transformers 引擎中尚未支持传入会抛出明确错误见 xinference/model/rerank/sentence_transformers/core.py请勿在默认引擎上依赖该参数。服务部署Rerank API 与 LLM、Embedding 等其他能力共用同一个 Xinference 服务端口与鉴权体系可在同一进程内混合部署多种类型模型通过统一网关对外提供一致的推理体验。【免费下载链接】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),仅供参考
返回列表