Embeddings
POST https://api.agentapi.ru/v1/ai/embeddings
Векторные представления текста — для семантического поиска, RAG и кластеризации. Совместим с OpenAI Embeddings API.
Параметры
| Параметр | Тип | Описание |
|---|---|---|
input | string | string[] | Обязательный. Текст или массив текстов |
model | string | Обязательный. Модель с поддержкой embeddings, например openai/text-embedding-3-small |
encoding_format | string | float (по умолчанию) или base64 |
dimensions | number | Размерность вектора, если модель это поддерживает |
input_type | string | Подсказка типа входа: query или document |
user | string | Идентификатор конечного пользователя |
provider | object | Предпочтения роутинга |
В отличие от остальных эндпоинтов, здесь строгая валидация: неизвестные поля вызывают
400. Поддерживаются оба написания —encoding_formatиencodingFormat,input_typeиinputType.
Пример запроса
curl https://api.agentapi.ru/v1/ai/embeddings \
-H "x-api-key: agentapi-ВАШ_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/text-embedding-3-small",
"input": "Байкал — самое глубокое озеро в мире"
}'
from openai import OpenAI
client = OpenAI(
api_key="agentapi-ВАШ_КЛЮЧ",
base_url="https://api.agentapi.ru/v1/ai",
)
result = client.embeddings.create(
model="openai/text-embedding-3-small",
input=["Первый документ", "Второй документ"],
)
for item in result.data:
print(item.index, len(item.embedding))
Ответ
{
"id": "emb-1753601440-Lp7",
"object": "list",
"model": "openai/text-embedding-3-small",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": [-0.0142, 0.0318, -0.0071, 0.0455, "…ещё 1532 значения"]
}
],
"usage": {
"prompt_tokens": 11,
"total_tokens": 11
}
}
При массиве на входе элементы data идут в том же порядке, а index соответствует
позиции во входном массиве.
Пакетная обработка
Передавайте массив вместо отдельных запросов — это быстрее и дешевле по накладным расходам:
{
"model": "openai/text-embedding-3-small",
"input": [
"Первый документ",
"Второй документ",
"Третий документ"
]
}
Уменьшение размерности
Некоторые модели позволяют сократить вектор — меньше памяти в векторной базе при небольшой потере качества:
{
"model": "openai/text-embedding-3-small",
"input": "Текст",
"dimensions": 512
}
Rate limit
Этот эндпоинт исключён из общего ограничения запросов в минуту — пакетная индексация не упирается в лимит. Ограничением остаётся баланс аккаунта.
Коды ошибок
| Код | Причина |
|---|---|
| 400 | Отсутствует model/input, неизвестное поле, или нулевой баланс |
| 401 | Проблема с ключом |
| 502 | Ошибка провайдера, либо модель не поддерживает embeddings |
Модели с поддержкой embeddings не отображаются в общем списке
GET /models — он их отфильтровывает. Названия берите из документации
провайдера.