Embeddings
Векторное представление текста для поиска и классификации
Создаёт числовой вектор для одного текста или списка текстов
POST https://api.getapi.ru/v1/embeddings
Параметры
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
model | string | Да | Идентификатор модели эмбеддингов |
input | string или string[] | Да | Тексты для векторизации |
encoding_format | string | Нет | float или base64 |
dimensions | integer | Нет | Размер вектора, если модель поддерживает настройку |
Передайте Authorization: Bearer <key> и Content-Type: application/json
Модели и размерность
| Модель | Размерность по умолчанию | Настройка dimensions |
|---|---|---|
text-embedding-3-small | 1536 | Поддерживается |
text-embedding-3-large | 3072 | Поддерживается |
text-embedding-ada-002 | 1536 | Не поддерживается |
Актуальные идентификаторы доступны в каталоге Таблица не ограничивает состав каталога перечисленными моделями
Пример запроса
curl https://api.getapi.ru/v1/embeddings \
-H "Authorization: Bearer $GETAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "text-embedding-3-small",
"input": ["Как подключить API", "Как пополнить баланс"],
"dimensions": 256,
"encoding_format": "float"
}'Ответ
| Поле | Тип | Описание |
|---|---|---|
object | string | list |
data | array | Вектор для каждого элемента input |
data[].object | string | embedding |
data[].embedding | number[] или string | Вектор либо его base64-представление |
data[].index | integer | Индекс исходного текста |
model | string | Имя или версия модели |
usage.prompt_tokens | integer | Входные токены всех текстов |
usage.total_tokens | integer | Общий расход |
Сопоставляйте векторы с текстами по index
Для dimensions: 256 каждый числовой вектор содержит 256 элементов
Python
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["GETAPI_API_KEY"],
base_url="https://api.getapi.ru/v1",
max_retries=0,
)
response = client.embeddings.create(
model="text-embedding-3-small",
input=["Как подключить API", "Как пополнить баланс"],
dimensions=256,
encoding_format="float",
)
for item in response.data:
print(item.index, len(item.embedding))Base64
В REST-ответе encoding_format: "base64" задаёт строку с числами float32 в little-endian
После декодирования проверьте, что число байтов делится на четыре, а количество чисел соответствует выбранной размерности
Использование в поиске
Индексируйте документы и запросы одной моделью с одинаковой размерностью Сохраняйте идентификатор модели и размерность рядом с индексом При их изменении пересчитайте векторы, значения разных моделей не образуют общее пространство
Ошибки
Чат-модель на этом методе, пропущенные model или input, неподдерживаемый dimensions могут вызвать 400
Не повторяйте такой запрос без исправления