
text-embeddings-inference
用 Rust 极速跑嵌入模型,高吞吐低延迟,一键部署生产级 API
项目预览
项目数据
项目介绍
Star 增长趋势
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
数据来源:GitHub API 逐日快照 · 收录于 2026-08-09 · 当前星标 ★ 5119
技术标签
使用教程
环境要求
- 已安装 Docker,且能拉取 ghcr.io 镜像
- NVIDIA 显卡驱动需兼容 CUDA 12.2 或更高版本
- 需安装 NVIDIA Container Toolkit 才能让容器使用 GPU
- 准备一个本地目录用于挂载模型权重缓存(示例用 $PWD/data)
- 磁盘/显存空间足够放下所选嵌入模型(示例 Qwen/Qwen3-Embedding-0.6B)
安装与启动步骤
-
1安装 GPU 容器支持
要让容器调用显卡,需先在宿主机安装 NVIDIA Container Toolkit,并确认驱动兼容 CUDA 12.2+。否则启动容器会拿不到 GPU。
-
2启动 TEI 容器
用 cuda-1.9 官方镜像启动服务,把宿主机 8080 映射到容器 80,并挂载 data 目录复用模型缓存,避免每次重新下载权重。
model=Qwen/Qwen3-Embedding-0.6B volume=$PWD/data docker run --gpus all -p 8080:80 -v $volume:/data --pull always ghcr.io/huggingface/text-embeddings-inference:cuda-1.9 --model-id $model -
3调用嵌入接口
容器启动后向 /embed 发送 POST 请求,inputs 字段放待编码文本,返回即向量结果。这是验证服务是否可用的最直接方式。
curl 127.0.0.1:8080/embed \ -X POST \ -d '{"inputs":"What is Deep Learning?"}' \ -H 'Content-Type: application/json' -
4查看全部启动参数
如需调优并发、批大小、量化精度或池化方式,可用 --help 查看 text-embeddings-router 支持的全部命令行选项(服务未在本地安装时可跳过)。
text-embeddings-router --help
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
--model-id | 是 | 要部署的 Hugging Face 模型 ID,或本地保存的模型目录路径 | Qwen/Qwen3-Embedding-0.6B |
--hf-token | 否 | Hugging Face 令牌,用于访问私有或受限(gated)模型 | hf_xxxxxxxxxxxxxxxx |
--dtype | 否 | 强制模型精度,可选 float16 或 float32 | float16 |
--pooling | 否 | 覆盖模型自带池化配置,可选 cls、mean、splade、last-token | mean |
--max-batch-tokens | 否 | 单个批次可容纳的总 token 数,吞吐调优关键参数,默认 16384 | 16384 |
--max-concurrent-requests | 否 | 最大并发请求数,超过则直接拒绝以做背压,默认 512 | 512 |
如何确认成功
容器日志无报错后,执行 curl 请求 /embed 能返回嵌入向量(JSON 数组)即表示服务正常,服务默认监听容器 80 端口,映射到宿主机 8080。
常见问题
Q:启动后提示找不到 GPU 或报 CUDA 相关错误?
A:先在宿主机安装 NVIDIA Container Toolkit,并确认显卡驱动兼容 CUDA 12.2 或更高版本;同时 docker run 必须带 --gpus all 参数。
Q:端口为什么是 8080 而不是 3000?
A:镜像里服务监听容器内 80 端口,示例用 -p 8080:80 映射到宿主机 8080。路由器本地运行的默认端口才是 3000,可用 --port 修改。
Q:每次重启都重新下载模型太慢?
A:务必挂载卷 -v $volume:/data 与容器共享数据目录,权重会缓存到该目录,后续启动可直接复用。
Q:服务能承载多少请求该怎么调?
A:--max-batch-tokens 表示一个批次内可容纳的总 token 数,默认 16384,应在模型进入计算瓶颈前尽量调大;--max-concurrent-requests 控制并发上限,超限直接拒绝请求以做背压。
注意事项
- 示例命令中的 $PWD/data 需替换为你自己的宿主机目录,容器内对应挂载点为 /data。
- 访问私有或 gated 模型时传入 --hf-token 或设置 HF_TOKEN,也可把 token 放在 $HF_HOME/token 路径下自动读取。
- --default-prompt 与 --default-prompt-name 互斥,不能同时使用;后者必须是 sentence-transformers 配置 prompts 字典中的键。
- README 还提到 Apple Silicon 可通过 Homebrew 本地安装,但未给出具体命令,如需本地部署请自行查阅官方文档。
核心亮点
- 基于 Rust 实现,推理延迟极低,吞吐量远超 Python 方案
- 内置动态批处理和模型量化,显存占用降低且速度提升
- 提供 OpenAI 兼容 API,从现有服务迁移零成本
不足之处
- 仅支持文本嵌入模型,不覆盖生成式或多模态模型
- Rust 技术栈对二次开发门槛较高,社区扩展组件较少
适用场景
- 大规模文本向量化服务,如搜索引擎的语义召回
- 实时推荐系统的用户/物品 embedding 生成
- 需要高并发低延迟的 NLP 微服务,如聊天机器人意图识别
替代项目
sentence-transformers、ONNX Runtime、Triton Inference Server
上一篇:semantic-router
下一篇:axonhub
同类项目推荐
mlops-templates
开源
把机器学习模型快速、标准化地部署到 Azure 生产环境
Azure MLOps (v2) solution accelerators. Enterprise ready templates to deploy your ma···
inference
开源
一行代码部署视觉模型,让任何设备秒变 CV 指挥中心
Turn any computer or edge device into a command center for your computer vision proj···
local-studio
开源
一个面板管住本地所有大模型推理引擎
Control panel for VLLM, Sglang, llama.cpp, exllamav3
dinotty
开源
让 AI 代理在服务器上拥有持久终端,多设备随时接入
Multi-device terminal server for AI coding agents. Server-side VTE, session persiste···
busbar
开源
一个 URL 接入所有大模型,故障自动切换,部署极简。
The execution control plane for AI agents. Govern every model request, MCP tool call···
comfy-pack
开源
一键锁定打包 ComfyUI 环境,告别部署翻车
A comprehensive toolkit for reliably locking, packing and deploying environments for···
RSD
开源
用奖励模型引导投机解码,又快又好地生成文本。
[ICML 2025] Reward-guided Speculative Decoding (RSD) for efficiency and effectivenes···
dbx
开源
用声明式配置和命令行,轻松管理 Databricks 工作流和部署。
Databricks CLI eXtensions - aka dbx is a CLI tool for development and advanced Datab···
lucebox
开源
消费级显卡也能跑出更快的本地大模型推理
LLM speculative inference server for heterogeneous hardware & consumer GPUs