Перейти к содержимому

POST /v1/embeddings

Получение числовых векторов через явно настроенную модель эмбеддингов.

Эмбеддинги преобразуют текст в числовые векторы для семантического поиска, поиска контекста перед генерацией ответа (RAG), кластеризации и сравнения по смыслу. Ваше приложение хранит векторы, находит подходящие материалы и при необходимости передаёт их отдельной модели генерации текста. Этот эндпоинт возвращает векторы, а не разговорный ответ.

Выбор модели

Используйте включённую модель из раздела Эмбеддинги / векторы каталога, доступную вашему API-ключу. У модели должна быть явно указана поддержка эндпоинта embeddings, рабочий маршрут к поставщику и применимый тариф на входные токены. Чат-модель или знакомое название модели сами по себе не означают поддержку эмбеддингов. Алиас разрешается до проверки эндпоинта, передачи запроса и тарификации.

embedding-model ниже — условный заполнитель. Замените его точным ID модели или включённым алиасом из вашего каталога: релиз не добавляет и не активирует модели поставщиков автоматически.

Запрос

curl https://api.model-gate.com/v1/embeddings \
  -H "Authorization: Bearer $MODEL_GATE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "embedding-model",
    "input": ["First text", "Second text"],
    "encoding_format": "float"
  }'
ПолеЗначение
modelОбязательный ID модели или включённый алиас с явно указанной поддержкой эмбеддингов.
inputНепустая строка, непустой список непустых строк, список неотрицательных целых ID токенов либо непустой список непустых списков ID токенов. Не смешивайте эти формы. ID токенов должны соответствовать токенизатору выбранного поставщика.
encoding_formatНеобязательное значение float или base64, если его поддерживает выбранный поставщик. В примере явно запрошены числовые массивы.
dimensionsНеобязательное положительное целое число; применимо только к моделям с изменяемой размерностью вектора.

Предел токенов, размер пакета и допустимую размерность определяет выбранный поставщик. Model Gate проверяет структуру запроса, не обрезает текст незаметно, не угадывает число токенов и не подменяет модель. stream: true и собственный режим async: true для этого эндпоинта не поддерживаются. Обычный запрос возвращает один JSON-ответ. Для поддерживаемых элементов эмбеддингов отдельно доступен интерфейс Files/Batch.

Ответ

Это сокращённый искусственный пример: числа в векторах и количество токенов приведены только для иллюстрации.

{
  "object": "list",
  "model": "embedding-model",
  "data": [
    {"object": "embedding", "index": 0, "embedding": [0.012, -0.044]},
    {"object": "embedding", "index": 1, "embedding": [0.031, 0.009]}
  ],
  "usage": {"prompt_tokens": 6, "total_tokens": 6}
}

Используйте index, чтобы сопоставить вектор со входом, и сохраняйте полный полученный вектор. Для индексируемых материалов и поисковых запросов используйте одну модель эмбеддингов и одинаковую размерность. При переходе на несовместимую модель или размерность перестройте индекс.

Ошибки

Отказ из-за отсутствия поддержки эндпоинта у модели возвращает HTTP 400 до запроса поставщику. Шлюз использует такую OpenAI-совместимую структуру:

{
  "error": {
    "code": "model_endpoint_not_supported",
    "message": "The selected model is not enabled for this endpoint.",
    "type": "invalid_request_error"
  }
}
Код шлюзаЧто исправить
model_endpoint_not_supportedВыберите модель с явно настроенной поддержкой этого эндпоинта. Флаг чат-эндпоинта не даёт поддержку эмбеддингов.
invalid_embeddings_inputПередайте одну из поддерживаемых непустых форм входа; не смешивайте текст и ID токенов.
invalid_dimensionsУкажите положительное целое число. Доступность корректной размерности определяет выбранный поставщик.
invalid_encoding_formatИспользуйте float или base64.
embeddings_stream_not_supportedУберите stream: true и используйте единый JSON-ответ.
async_not_supportedУберите async: true; при необходимости используйте отдельный поддерживаемый интерфейс пакетных запросов.
invalid_async_stream_combinationНе запрашивайте собственный async-режим вместе со streaming.

Эти ошибки проверки возвращают HTTP 400 с типом invalid_request_error. Исправьте запрос, не повторяя его автоматически. Сохраните X-Request-ID для диагностики. Структура и коды ошибок поставщика не обязаны совпадать с примером; ошибки аутентификации, ограничения аккаунта и безопасное представление ошибок поставщика описаны в общем справочнике ошибок.

Учёт токенов и проверка

Эмбеддинги тарифицируются по фактическим входным токенам из ответа поставщика. Координаты вектора не являются выходными токенами или токенами ответа. Если поставщик передал total_tokens, оно должно совпадать с входными токенами; отсутствие общего счётчика не заменяет явно переданное число входных токенов. Отсутствующие или противоречивые данные не вычисляются по длине текста или размерности вектора и не считаются бесплатным успешным использованием. Сохраняются тариф вашего аккаунта и действующие ограничения API-ключа, группы и доступа.

Для администратора: сохраните модель с пунктом Эмбеддинги / векторы (Embeddings / vectors) в настроенных эндпоинтах, добавьте нужный маршрут и цену входных токенов, затем явно запустите OpenAI Embeddings → Эмбеддинги / векторы в проверке возможностей. Для отдельной модели эмбеддингов оставьте текстовые эндпоинты неотмеченными. Сохранение модели не запускает проверку. Ручная проверка делает один платный запрос с двумя короткими входами, проверяет конечные числовые векторы и полный набор индексов, а отдельно — фактические входные токены поставщика. Статус Verified подтверждает этот контракт ответа, а не качество семантики или личность поставщика; выключенная модель автоматически не включается.

Ручная проверка принимает JSON-ответы до 256 КиБ и отклоняет повторяющиеся ключи JSON. Более крупный ответ считается неубедительным для этой ограниченной проверки; это не ограничение размерности векторов публичного API. Автоматический повторный запрос не выполняется.