在 Xinference 中部署 gte-large 文本嵌入模型:内置规格、启动命令与嵌入调用全指南
【免费下载链接】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
gte-large 是 Xinference 内置的英文通用文本嵌入(Text Embedding)模型,输出 1024 维向量、支持最长 512 token 的输入,适用于语义检索、相似度计算、RAG 文档向量化等场景。本文以 gte-large.rst 文档为主体,结合 model_spec.json 内置模型清单与 sentence-transformers 后端实现,完整讲解该模型的规格参数、启动方式、底层推理原理以及 OpenAI 兼容的调用方法,帮助你一条命令跑通嵌入服务并集成到业务中。
gte-large 模型核心规格
Xinference 将 gte-large 作为内置(builtin)嵌入模型收录,其官方规格如下:
| 项目 | 取值 |
|---|---|
| 模型名称(Model Name) | gte-large |
| 支持语言(Languages) | en(英文) |
| 能力(Abilities) | embed(文本嵌入) |
| 向量维度(Dimensions) | 1024 |
| 最大输入长度(Max Tokens) | 512 |
| 模型 ID(Model ID) | thenlper/gte-large |
| 模型仓库(Model Hubs) | Hugging Face、ModelScope |
该规格与 xinference/model/embedding/model_spec.json 中gte-large条目的定义完全一致:dimensions为 1024、max_tokens为 512、language为["en"]。模型格式为pytorch,量化方式仅支持none(即默认全精度加载)。如果你需要更轻量的版本,同一 GTE 系列还内置了输出 768 维向量的 gte-base(同样支持 512 token),以及基于 Qwen2 架构的 gte-qwen2。
多仓库模型源与版本锁定
从模型规范可以看到,Xinference 为 gte-large 同时配置了两个模型来源,并按仓库分别锁定了具体的模型版本(model_revision):
- Hugging Face:模型 ID 为
thenlper/gte-large,锁定提交2b5163b62ed28492dc70eb19a882b71c81dbc7c8; - ModelScope:模型 ID 为
Xorbits/gte-large,锁定版本v0.0.1。
启动时 Xinference 会根据你的网络环境与配置选择可用的模型仓库自动下载,版本被固定保证可复现性,避免上游更新导致的向量行为不一致。
一条命令启动 gte-large
按照内置模型文档的说明,在已安装并启动 Xinference 服务后,执行以下命令即可拉起模型:
xinference launch --model-name gte-large --model-type embedding命令中两个参数的含义如下:
--model-name gte-large:指定模型名称,必须与内置清单中的名称完全一致;--model-type embedding:指定模型类型为嵌入模型,与文档中Abilities: embed相对应。
启动成功后,命令行会返回一个model_uid(默认与模型名相同)。如需自定义引用标识,可追加--model-uid my-gte-large参数。Xinference 启动命令还支持其他常用选项,例如:
xinference launch --model-name gte-large --model-type embedding \ --model-uid gte-large-1 --n-gpu 1其中--n-gpu用于指定使用 GPU 数量(模型为 pytorch 格式,默认在 CPU 上也能运行,但 GPU 可显著加速推理)。若希望跳过交互式确认直接下载,可配合--download-from指定来源仓库。
底层推理实现:sentence-transformers 后端
gte-large 属于 pytorch 格式的嵌入模型,在 Xinference 中由 sentence-transformers 后端负责加载与推理,核心实现位于 xinference/model/embedding/sentence_transformers/core.py 中的SentenceTransformerEmbeddingModel类。
依赖与虚拟环境
根据 model_spec.json 中virtualenv.packages的声明,加载 gte-large 依赖以下关键包(在虚拟环境模式下由 Xinference 自动准备):
sentence-transformers:核心嵌入引擎;system_torch/system_torchvision:深度学习运行时;FlagEmbedding、vllm等:为切换到其他推理引擎时预留的依赖。
后端代码对 sentence-transformers 版本有明确校验:低于 3.1.0 会直接报错并提示升级(见 core.py)。
编码流程中的关键行为
从_create_embedding的实现可以看出嵌入计算的关键细节:
- 默认归一化:调用编码时
kwargs.setdefault("normalize_embeddings", True),即返回的 1024 维向量默认做 L2 归一化,可直接用点积代替余弦相似度计算(core.py); - 长度排序分批:输入句子按长度降序排序后分批编码,提升批处理效率;
- Token 统计:通过累加 attention mask 统计实际 token 数,填充到响应中的
usage.prompt_tokens与total_tokens字段; - 截断维度支持:加载时支持通过
truncate_dim截断输出维度,为需要降维的场景提供灵活性(core.py)。
在无 GPU 或未显式指定设备时,模型会加载到 CPU;指定--device或 GPU 后自动切换到对应设备。
通过 API 获取嵌入向量
模型启动后,Xinference 提供与 OpenAI Embeddings 兼容的 HTTP 接口,路径为POST /v1/embeddings(客户端封装见 xinference/client/restful/restful_client.py 中的RESTfulEmbeddingModelHandle.create_embedding)。
方式一:直接调用 REST API
curl -X POST http://localhost:9997/v1/embeddings \ -H "Content-Type: application/json" \ -d '{ "model": "gte-large", "input": ["What is text embedding?", "Xinference embedding service"] }'请求体核心字段:
model:模型 UID(即启动时指定的model_uid);input:字符串或字符串数组,对应模型支持的输入形态;- 可选
dimensions:请求截断后的向量维度(依赖后端支持)。
响应中每个输入对应一个EmbeddingData条目(index从 0 开始),并附带object: "embedding"标记与 token 用量统计;返回向量为归一化后的 1024 维浮点数组。
方式二:使用 Python Client
Xinference 提供了同步与异步两种 RESTful 客户端。同步用法示例:
from xinference.client import Client client = Client("http://localhost:9997") model = client.get_model("gte-large") embedding = model.create_embedding( input=["What is text embedding?", "Xinference embedding service"] ) print(embedding.data[0].embedding[:5]) # 前 5 维 print(embedding.usage.total_tokens) # token 用量异步场景可使用 async_restful_client.py 中对应的AsyncClient/create_embedding,配合await编写高并发调用。返回的Embedding数据结构(data、usage等字段)定义于 xinference/types.py 附近的嵌入类型模块。
使用建议与注意事项
- 输入长度控制:gte-large 最大支持 512 token,超出部分会被截断。对长文档做 RAG 向量化时,建议先按段落或句子切分,保证语义单元完整且不超过上限;
- 语言范围:该模型面向英文优化(
language: en),中文检索场景建议改用 bge-m3、text2vec 系列等中英双语模型; - 归一化默认开启:直接用返回向量做点积即可比较相似度,无需自行归一化;
- 首次启动耗时:首次运行需要从 Hugging Face / ModelScope 下载权重(约数百 MB 的 pytorch 权重文件),之后会命中本地模型缓存;
- 模型管理:通过
xinference list查看已启动模型,xinference remove停止并释放资源;更多 CLI 用法可参考 启动指南。
完整的嵌入模型内置清单可见 embedding 模型索引,其中列出了 bge、bce、jina、m3e、text2vec、qwen3-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/inference
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考