本文来源公众号“Coggle数据科学”,仅用于学术分享,侵权删,干货满满。
原文链接:小白学RAG:HuggingFace Text Embeddings Inference
文本嵌入推理 (Text Embeddings Inference, TEI) 是一个用于部署和服务开源文本嵌入及序列分类模型的工具包。TEI 为最流行的模型(如 FlagEmbedding、Ember、GTE 和 E5)提供了高性能的推理能力。

-
小型 Docker 镜像和快速启动时间:适合真正的无服务器部署。
-
基于 token 的动态批处理:提高推理效率。
-
优化的推理代码:使用 Flash Attention、Candle 和 cuBLASLt 进行推理加速。
安装与使用
model=BAAI/bge-large-en-v1.5
volume=$PWD/data # share a volume with the Docker container to avoid downloading weights every run
docker run --gpus all -p 8080:80 -v $volume:/data --pull always ghcr.io/huggingface/text-embeddings-inference:1.6 --model-id $model
curl 127.0.0.1:8080/embed \
-X POST \
-d '{"inputs":"What is Deep Learning?"}' \
-H 'Content-Type: application/json'
框架原理
异步推理
异步编程的推理(Inference)框架,主要用于处理文本嵌入(embeddings)和分类(classification)任务。代码的核心思路是通过异步任务的协同工作,实现高效的推理流程,同时利用并发控制和队列机制来优化性能和资源管理。
-
Queue(队列):用于管理推理请求,支持批量处理。
-
Semaphore(信号量):用于限制并发请求的数量,防止系统过载。
-
Notify(通知机制):用于触发批量任务的执行。
推理流程主要分为以下几个步骤:
-
分词(Tokenization):输入文本首先通过分词器进行编码,转换为模型可处理的格式。
-
请求入队:编码后的请求被封装为一个
Entry对象,并加入到队列中。 -
批量处理:当队列中有请求时,
batching_task会将多个请求组合成一个批量,并发送到推理任务。 -
后端推理:推理任务从通道中接收批量请求,并调用后端模型进行推理。
推理请求队列管理
负责将推理请求组织成批量,并根据模型的限制条件(如最大批量令牌数、最大批量请求数等)进行合理的调度。
-
添加请求(
append):将新的推理请求添加到队列中。 -
获取批量(
next_batch):从队列中获取一个满足条件的批量请求,用于后续的推理任务。
支持的模型
Text Embeddings
| MTEB Rank | Model Size | Model Type | Model ID |
|---|---|---|---|
| 1 | 7B (Very Expensive) | Mistral | Salesforce/SFR-Embedding-2_R |
| 2 | 7B (Very Expensive) | Qwen2 | Alibaba-NLP/gte-Qwen2-7B-instruct |
| 9 | 1.5B (Expensive) | Qwen2 | Alibaba-NLP/gte-Qwen2-1.5B-instruct |
| 15 | 0.4B | Alibaba GTE | Alibaba-NLP/gte-large-en-v1.5 |
| 20 | 0.3B | Bert | WhereIsAI/UAE-Large-V1 |
| 24 | 0.5B | XLM-RoBERTa | intfloat/multilingual-e5-large-instruct |
| N/A | 0.1B | NomicBert | nomic-ai/nomic-embed-text-v1 |
| N/A | 0.1B | NomicBert | nomic-ai/nomic-embed-text-v1.5 |
| N/A | 0.1B | JinaBERT | jinaai/jina-embeddings-v2-base-en |
| N/A | 0.1B | JinaBERT | jinaai/jina-embeddings-v2-base-code |
| N/A | 0.1B | MPNet | sentence-transformers/all-mpnet-base-v2 |
Sequence Classification and Re-Ranking
| Task | Model Type | Model ID |
|---|---|---|
| Re-Ranking | XLM-RoBERTa | BAAI/bge-reranker-large |
| Re-Ranking | XLM-RoBERTa | BAAI/bge-reranker-base |
| Re-Ranking | GTE | Alibaba-NLP/gte-multilingual-reranker-base |
| Sentiment Analysis | RoBERTa | SamLowe/roberta-base-go_emotions |
THE END !
文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

781

被折叠的 条评论
为什么被折叠?



