
在 Xinference 中部署 jina-embeddings-v3一条命令启动 1024 维多语言 Embedding 服务【免费下载链接】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/inferencejina-embeddings-v3 是 Jina AI 推出的多功能文本嵌入模型支持中英双语语义向量生成输出维度 1024、上下文窗口 8192 token。在 Xinference 中它被内置为 sentence-transformers 后端的 PyTorch 模型你只需一条xinference launch命令即可将其以统一的生产级推理 API 暴露出来。读完本文你将掌握该模型的完整规格、启动参数、OpenAI 兼容调用方式以及 Xinference 底层如何通过task参数映射实现检索/匹配等任务专用嵌入的源码级原理。模型规格总览Xinference 将 jina-embeddings-v3 注册为内置 Embedding 模型其完整注册信息同时维护在两处模型规格文件 xinference/model/embedding/model_spec.json 与文档页 doc/source/models/builtin/embedding/jina-embeddings-v3.rst。核心规格如下项目值模型名称Model Namejina-embeddings-v3支持语言Languageszh中文、en英文模型能力Abilitiesembed文本嵌入输出维度Dimensions1024最大上下文Max Tokens8192模型 IDModel IDjinaai/jina-embeddings-v3模型来源Model HubsHugging Face 与 ModelScope 双源模型格式Model Formatpytorch可用量化Quantizationsnone不量化在model_spec.json中该模型以version: 2的结构注册dimensions、max_tokens、language与文档完全一致并由model_specs[0].model_src同时声明了huggingface与modelscope两个下载源Model ID 均为jinaai/jina-embeddings-v3量化类型仅none。这意味着无论你的网络环境更偏好哪个模型源都可以在启动时显式指定Xinference 会从对应源拉取权重。一条命令启动模型根据官方文档启动 jina-embeddings-v3 的命令非常简单xinference launch --model-name jina-embeddings-v3 --model-type embedding其中--model-type embedding指明该任务是文本嵌入类型Xinference 会将请求路由到 embedding 推理通道未指定--model-format时Xinference 会根据内置规格自动选择pytorch格式未指定--quantization时因该模型仅注册了none量化将按全精度加载。启动成功后Xinference 会返回一个model_uid后续所有客户端调用都通过该 UID 定位模型。你可以用xinference list查看已加载的模型列表及其 UID。运行时环境内置虚拟环境的依赖锁定从 model_spec.json 的virtualenv.packages字段可以看出该模型运行时会自动构建一个独立的虚拟环境依赖被精确锁定避免与系统其他 Python 包相互污染sentence_transformers推理后端负责模型加载与编码einops张量重排工具库accelerate0.28.0多设备加速transformers4.52.0严格锁定版本flash-attn2.8.3.post1Flash Attention 加速注意力计算系统级torch与torchvision条件性引入由#engine# sentence_transformers决定。这意味着首次启动时需要联网下载依赖并构建虚拟环境之后的启动会复用已构建的环境加载速度显著提升。有关虚拟环境的更多细节可参考 doc/source/models/virtualenv.rst。客户端调用OpenAI 兼容 Embedding API模型启动后即可通过 Xinference 统一的 RESTful API 进行调用。以model_uid为jina-embeddings-v3为例curl -X POST http://localhost:9997/v1/embeddings \ -H Content-Type: application/json \ -d { model: jina-embeddings-v3, input: [Xinference 是一个生产级推理框架, Xinference is a production-ready inference framework] }响应中每个输入文本对应一个长度为 1024 的向量。Xinference 在 xinference/model/embedding/sentence_transformers/core.py 中默认设置normalize_embeddingsTrue即返回的向量已做 L2 归一化你可以直接使用内积dot product代替余弦相似度做相似度排序获得更高的检索吞吐。Python 客户端同样简洁from xinference.client import Client client Client(http://localhost:9997) model client.get_model(jina-embeddings-v3) vectors model.create_embedding( [Xinference 是一个生产级推理框架, Xinference is a production-ready inference framework] )任务感知嵌入task参数的源码级解析jina-embeddings-v3 的价值在于它支持任务感知task-aware嵌入——同一个模型可以根据下游任务切换提示词模板从而在检索、文本匹配等场景获得更优效果。Xinference 在请求参数中支持传入task字段并在 xinference/model/embedding/sentence_transformers/core.py 中定义了 v3 的任务到 prompt 名称的映射表JINA_V3_TASK_TO_PROMPT_NAME { retrieval.passage: retrieval.passage, retrieval.query: retrieval.query, retrieval: retrieval.passage, passage: retrieval.passage, query: retrieval.query, document: document, }映射的核心逻辑由_resolve_jina_task()完成core.py。对于 v3 模型它返回(prompt_name, None)即把解析出的 prompt 名称注入SentenceTransformer.encode()的prompt_name参数由标准 SentenceTransformer prompt 机制选择对应的提示词模板模型卡中以点分符号命名如retrieval.passage、retrieval.query若传入未知任务名则抛出ValueError: Invalid task: ...并列出全部合法取值。在编码阶段core.py请求中的task会被弹出并解析解析出的prompt_name经_build_encode_kwargs()合并进编码参数core.pydef _build_encode_kwargs(kwargs, prompt_nameNone): encode_kwargs dict(convert_to_numpyFalse, **kwargs) if prompt_name is not None: encode_kwargs[prompt_name] prompt_name return encode_kwargs因此做 RAG 检索时正确的做法是对文档passage和查询query分别使用不同的 task以激活各自的提示词模板doc_vectors model.create_embedding( [这是要被检索的文档内容], taskretrieval.passage ) query_vectors model.create_embedding( [这是用户查询], taskretrieval.query )这套映射行为在 xinference/model/embedding/sentence_transformers/tests/test_jina_task_mapping.py 中有完整覆盖包括点分任务名自映射、retrieval/passage别名统一到retrieval.passage、query别名统一到retrieval.query、document独立映射、非法任务抛错、模型名大小写不敏感、非 Jina 模型不受影响等用例可作为你使用该功能时的行为参考。使用注意事项任务参数非必需不带task的调用同样有效模型会使用默认提示词模板生成通用语义向量维度与截断模型输出固定为 1024 维且对超过 8192 token 的输入会按模型自身max_tokens上限截断处理参见 xinference/model/embedding/core.py 中truncate_prompt_tokens的相关逻辑返回稀疏向量不支持如需return_sparse稀疏嵌入能力该能力属于flag后端sentence-transformers 后端不支持core.py 会直接抛出明确错误资源占用模型以 PyTorch 全精度加载并启用 Flash Attention建议在有 GPU 的节点上运行以获得更优的推理性能。结语jina-embeddings-v3 凭借 1024 维输出、8192 token 上下文与中英双语能力是一个适合作为 RAG 检索底座的多功能嵌入模型而 Xinference 通过内置模型规格、自动虚拟环境、OpenAI 兼容 API 以及任务感知的task参数映射把它的部署成本压缩到了一条xinference launch命令。理解底层task→prompt_name的映射机制将帮助你在检索等真实场景中把模型能力用到极致。【免费下载链接】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),仅供参考