text-embeddings-inference documentation

Краткий обзор

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Краткий обзор

Настройка

Самый простой способ начать работу с 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
Update on GitHub