TEI 嵌入服务:用 Hugging Face Text Embeddings Inference 部署向量化与重排接口
Text Embeddings Inference(TEI)是 Hugging Face 用 Rust 实现的嵌入/重排推理服务,支持 GPU 和 CPU、动态批处理、分词和长文本截断。它把 embedding 模型包装成 HTTP 服务,提供 /embed、/rerank、/info 等端点,适合给 RAG、语义搜索和推荐系统做在线向量化。
TEI 不是完整的 RAG 应用,也不做文档切分、向量库写入和检索编排;这些由 LangChain、LlamaIndex、RAGFlow 或业务服务负责。部署时要关注模型架构支持、最大输入长度、批处理 token 上限和 GPU 显存。
# Docker 启动 TEI(GPU)
docker run --gpus all -p 8080:80 \
-v /models:/data \
ghcr.io/huggingface/text-embeddings-inference:latest \
--model-id BAAI/bge-m3 --max-batch-tokens 16384
# 生成 embedding
curl http://localhost:8080/embed \
-H 'Content-Type: application/json' \
-d '{"inputs":["如何排查磁盘满","Kubernetes Pod 一直重启"]}'
# 重排:给候选文档打分
curl http://localhost:8080/rerank \
-H 'Content-Type: application/json' \
-d '{"query":"磁盘满怎么排查","texts":["df -h 看分区","Pod 日志排查"]}'
# 查看模型信息与最大输入长度
curl http://localhost:8080/info
部分版本提供 OpenAI 兼容的 /v1/embeddings 端点,接入 OpenAI SDK 前先用 /info 和实际请求确认字段、维度和错误格式。
/info 看 max_input_length,或在客户端先切分。max-batch-tokens 设置不当:太小浪费吞吐,太大导致显存溢出或请求排队;按模型大小、序列长度和并发压测。/rerank 返回的排序和分数要与业务阈值匹配;不要把重排分数直接当概率。合上页面,先回答,再展开对照。
/embed 和 /rerank 的输入输出有什么不同?/info 查看 max_input_length,并在客户端切分或调小单条长度。/embed 输入文本数组,输出向量;/rerank 输入 query 和候选文本,输出相关性分数与排序。
小程序版
微信扫码,随时查命令