> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sunra.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Create embeddings

Создаёт векторы эмбеддингов из текстовых или медиавходов. Запросы только с текстом возвращают по одному вектору на каждый вход; полезно для поиска информации, семантического поиска, кластеризации, классификации и RAG. Запросы, содержащие медиа (изображения, аудио или видео в виде base64 data URI), объединяют **все** входы в **один** кросс-модальный вектор — если нужен отдельный вектор для каждого ресурса, отправляйте каждый ресурс отдельным запросом. Совместим с форматом API OpenAI Embeddings. Потоковый режим на этом эндпоинте не поддерживается.

## Аутентификация

<ParamField header="Authorization" type="string" required>
  Bearer-токен. Используйте ваш API-ключ в качестве Bearer-токена в заголовке Authorization.

  Формат: `Bearer <SUNRA_KEY>`
</ParamField>

## Запрос

Этот эндпоинт принимает объект.

<ParamField body="model" type="string" required>
  Идентификатор используемой модели эмбеддингов, например `google/gemini-embedding-2`. Доступные модели эмбеддингов смотрите на [странице моделей](https://sunra.ai/models).
</ParamField>

<ParamField body="input" type="string | string[]" required>
  Входы для преобразования в эмбеддинги — одна строка или массив строк. Входы только с текстом обрабатываются независимо и возвращают по одному вектору на каждый вход в порядке входов. Медиавходы передаются как base64 data URI (`data:image/png;base64,…`, `data:audio/mpeg;base64,…`, `data:video/mp4;base64,…`) и могут смешиваться с текстом — но любой запрос, содержащий медиа, возвращает один объединённый вектор для всех входов вместе. Лимиты (upstream): не более 6 изображений на запрос, видео до 120 секунд и общий бюджет 8 192 токена на все модальности (текстовые токены; каждое изображение считается как 258 токенов, аудио — 25 токенов/секунду, видео — 66 токенов/секунду).
</ParamField>

<ParamField body="dimensions" type="integer">
  Количество измерений выходных эмбеддингов. Поддерживается только моделями с гибкой размерностью выхода (Matryoshka Representation Learning). Для `google/gemini-embedding-2` значение по умолчанию — `3072`, поддерживаются значения от `128` до `3072`. Меньшие значения усекают вектор, сохраняя большую часть семантического качества.
</ParamField>

<ParamField body="encoding_format" type="string">
  Формат возвращаемых эмбеддингов. Либо `float` (по умолчанию), либо `base64`.
</ParamField>

## Ответ

<ResponseField name="object" type="string">
  Всегда `list`.
</ResponseField>

<ResponseField name="data" type="object[]">
  Список объектов эмбеддингов, по одному на каждый вход, в порядке входов.

  <Expandable title="embedding object">
    <ResponseField name="object" type="string">
      Всегда `embedding`.
    </ResponseField>

    <ResponseField name="index" type="integer">
      Индекс соответствующего входа.
    </ResponseField>

    <ResponseField name="embedding" type="number[]">
      Вектор эмбеддинга.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="model" type="string">
  Модель, использованная для создания эмбеддингов.
</ResponseField>

<ResponseField name="usage" type="object">
  Использование токенов для запроса. Эмбеддинги тарифицируются только по входным токенам, с отдельными тарифами для каждой модальности (цены смотрите на странице модели). Для запросов с медиа указывается количество токенов по каждой модальности.

  <Expandable title="usage object">
    <ResponseField name="prompt_tokens" type="integer">
      Количество текстовых входных токенов.
    </ResponseField>

    <ResponseField name="input_image_tokens" type="integer">
      Входные токены изображений (258 на изображение). Присутствует только если запрос содержит изображения.
    </ResponseField>

    <ResponseField name="input_audio_tokens" type="integer">
      Входные токены аудио (25 в секунду). Присутствует только если запрос содержит аудио.
    </ResponseField>

    <ResponseField name="input_video_tokens" type="integer">
      Входные токены видео (66 в секунду). Присутствует только если запрос содержит видео.
    </ResponseField>

    <ResponseField name="total_tokens" type="integer">
      Общее количество входных токенов по всем модальностям (эмбеддинги не создают выходных токенов).
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://api-llm.sunra.ai/v1/embeddings \
    -H "Authorization: Bearer <SUNRA_KEY>" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "google/gemini-embedding-2",
      "input": [
        "The quick brown fox jumps over the lazy dog.",
        "Sunra is a platform for AI models."
      ],
      "dimensions": 768
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api-llm.sunra.ai/v1/embeddings",
      headers={
          "Authorization": "Bearer <SUNRA_KEY>",
          "Content-Type": "application/json"
      },
      json={
          "model": "google/gemini-embedding-2",
          "input": [
              "The quick brown fox jumps over the lazy dog.",
              "Sunra is a platform for AI models."
          ],
          "dimensions": 768
      }
  )
  print(response.json())
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://api-llm.sunra.ai/v1/embeddings", {
    method: "POST",
    headers: {
      "Authorization": "Bearer <SUNRA_KEY>",
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      model: "google/gemini-embedding-2",
      input: [
        "The quick brown fox jumps over the lazy dog.",
        "Sunra is a platform for AI models."
      ],
      dimensions: 768
    })
  });
  const data = await response.json();
  console.log(data);
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "object": "list",
    "data": [
      {
        "object": "embedding",
        "index": 0,
        "embedding": [0.011253, -0.020551, 0.049236, "..."]
      },
      {
        "object": "embedding",
        "index": 1,
        "embedding": [0.031744, 0.008122, -0.014307, "..."]
      }
    ],
    "model": "google/gemini-embedding-2",
    "usage": {
      "prompt_tokens": 18,
      "total_tokens": 18
    }
  }
  ```
</ResponseExample>
