text-embeddings-inference documentation
Краткий обзор
Краткий обзор
Настройка
Самый простой способ начать работу с TEI — использовать один из официальных Docker-контейнеров (см. Поддерживаемые модели и оборудование, чтобы выбрать подходящий контейнер).
Следовательно, необходимо установить Docker, следуя инструкциям по установке.
TEI поддерживает вывод как на GPU, так и на CPU. Если вы планируете использовать GPU, убедитесь, что ваше оборудование поддерживается, сверившись с этой таблицей. Далее установите NVIDIA Container Toolkit. Драйверы NVIDIA на вашем устройстве должны быть совместимы с версией CUDA 12.2 или выше.
Развертывание
Далее пора развернуть вашу модель. Допустим, вы хотите использовать Qwen/Qwen3-Embedding-0.6B. Вот как это можно сделать:
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
Также рекомендуем передавать в контейнер Docker том (
volume=$PWD/data), чтобы не скачивать веса при каждом запуске.
Вывод
Вывод можно выполнить тремя способами: с помощью cURL или через Python-SDK InferenceClient или OpenAI.
cURL
Чтобы отправить запрос POST в конечную точку TEI с помощью cURL, выполните следующую команду:
curl 127.0.0.1:8080/embed \
-X POST \
-d '{"inputs":"What is Deep Learning?"}' \
-H 'Content-Type: application/json'Python
Чтобы выполнить инференс с помощью Python, вы можете использовать Python SDK huggingface_hub (рекомендуется) или Python SDK openai.
huggingface_hub
Вы можете установить его через pip с помощью команды pip install --upgrade --quiet huggingface_hub, а затем выполнить:
from huggingface_hub import InferenceClient
client = InferenceClient()
embedding = client.feature_extraction("What is deep learning?",
model="http://localhost:8080/embed")
print(len(embedding[0]))OpenAI
Чтобы отправлять запросы в OpenAI Embeddings API, доступный в Text Embeddings Inference (TEI) с помощью OpenAI Python SDK, установите его командой pip install --upgrade openai, а затем выполните следующий фрагмент кода:
import os
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8080/v1", api_key= "-")
response = client.embeddings.create(
model="text-embeddings-inference",
input="What is Deep Learning?",
)
print(response.data[0].embedding)В качестве альтернативы вы также можете отправить запрос с помощью cURL следующим образом:
curl http://localhost:8080/v1/embeddings \
-H "Content-Type: application/json" \
-d '{
"input": "What is Deep Learning?",
"model": "text-embeddings-inference",
"encoding_format": "float"
}'Re-rankers и классификация последовательностей
TEI также поддерживает модели re-ranker и классические модели классификации последовательностей.
Реранкеры
Rerankers, также называемые cross-encoders, — это модели классификации последовательностей с одним классом, которые оценивают степень сходства между запросом и текстом. Ознакомьтесь с этой статьёй команды LlamaIndex, чтобы понять, как использовать модели re-rankers в вашем RAG-пайплайне для улучшения результатов на последующих этапах.
Допустим, вы хотите использовать BAAI/bge-reranker-large. Сначала вы можете развернуть его следующим образом:
model=BAAI/bge-reranker-large 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
После развёртывания модели вы можете использовать эндпоинт rerank для оценки степени сходства между запросом и списком текстов. С помощью cURL это можно сделать следующим образом:
curl 127.0.0.1:8080/rerank \
-X POST \
-d '{"query":"What is Deep Learning?", "texts": ["Deep Learning is not...", "Deep learning is..."], "raw_scores": false}' \
-H 'Content-Type: application/json'Модели классификации последовательностей
Вы также можете использовать классические модели классификации последовательностей, например SamLowe/roberta-base-go_emotions:
model=SamLowe/roberta-base-go_emotions 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
После развёртывания модели вы можете использовать эндпоинт predict, чтобы получить эмоции, наиболее связанные с входными данными:
curl 127.0.0.1:8080/predict \
-X POST \
-d '{"inputs":"I like you."}' \
-H 'Content-Type: application/json'Для многоклассовых предсказаний с raw_scores: false нефинитные оценки модели (NaN или бесконечность) приводят к ошибке инференса вместо вероятностей softmax.
Пакетная обработка
Вы можете отправлять несколько входных данных в одном батче. Например, для эмбеддингов:
curl 127.0.0.1:8080/embed \
-X POST \
-d '{"inputs":["Today is a nice day", "I like you"]}' \
-H 'Content-Type: application/json'А для классификации последовательностей:
curl 127.0.0.1:8080/predict \
-X POST \
-d '{"inputs":[["I like you."], ["I hate pineapples"]]}' \
-H 'Content-Type: application/json'Развёртывание в изолированной среде
Чтобы развернуть Text Embeddings Inference в изолированной среде, сначала скачайте веса, а затем смонтируйте их внутри контейнера с помощью тома.
Например:
# (Optional) create a `models` directory
mkdir models
cd models
# Make sure you have git-lfs installed (https://git-lfs.com)
git lfs install
git clone https://huggingface.co/Alibaba-NLP/gte-base-en-v1.5
# Set the models directory as the volume path
volume=$PWD
# Mount the models directory inside the container with a volume and set the model ID
docker run --gpus all -p 8080:80 -v $volume:/data --pull always ghcr.io/huggingface/text-embeddings-inference:cuda-1.9 --model-id /data/gte-base-en-v1.5