> ## 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

텍스트 또는 미디어 입력에서 embedding 벡터를 생성합니다. 텍스트만 포함된 요청은 입력마다 하나의 벡터를 반환하며 검색, 시맨틱 검색, 클러스터링, 분류, RAG에 적합합니다. 미디어(base64 data URI로 전달하는 이미지, 오디오, 비디오)가 포함된 요청은 **모든** 입력을 **단일** 크로스모달 벡터로 융합합니다. 자산마다 하나의 벡터가 필요하면 각 자산을 별도의 요청으로 embedding하세요. OpenAI Embeddings API 형식과 호환됩니다. 이 엔드포인트는 스트리밍을 지원하지 않습니다.

## 인증

<ParamField header="Authorization" type="string" required>
  Bearer 토큰. API 키를 Authorization 헤더의 Bearer 토큰으로 사용하세요.

  Format: `Bearer <SUNRA_KEY>`
</ParamField>

## 요청

이 엔드포인트는 JSON 객체를 받습니다.

<ParamField body="model" type="string" required>
  사용할 embedding 모델의 ID입니다. 예: `google/gemini-embedding-2`. 사용 가능한 embedding 모델은 [모델 페이지](https://sunra.ai/models)를 참조하세요.
</ParamField>

<ParamField body="input" type="string | string[]" required>
  embedding할 입력으로, 단일 문자열 또는 문자열 배열입니다. 텍스트만 포함된 입력은 독립적으로 embedding되어 입력 순서대로 입력마다 하나의 벡터를 반환합니다. 미디어 입력은 base64 data URI(`data:image/png;base64,…`, `data:audio/mpeg;base64,…`, `data:video/mp4;base64,…`)로 전달하며 텍스트와 혼합할 수 있습니다. 단, 미디어가 포함된 요청은 모든 입력을 결합해 융합된 단일 벡터를 반환합니다. 제한(업스트림): 요청당 이미지 최대 6장, 비디오 최대 120초, 모든 모달리티 합산 8,192 토큰(텍스트 토큰 기준, 이미지는 장당 258 토큰, 오디오는 초당 25 토큰, 비디오는 초당 66 토큰).
</ParamField>

<ParamField body="dimensions" type="integer">
  출력 embedding의 차원 수입니다. 유연한 출력 차원(Matryoshka Representation Learning)을 지원하는 모델에서만 사용할 수 있습니다. `google/gemini-embedding-2`의 기본값은 `3072`이며 `128`부터 `3072`까지의 값을 지원합니다. 작은 값은 벡터를 잘라내지만 의미적 품질은 대부분 유지됩니다.
</ParamField>

<ParamField body="encoding_format" type="string">
  반환되는 embedding의 형식입니다. `float`(기본값) 또는 `base64`.
</ParamField>

## 응답

<ResponseField name="object" type="string">
  항상 `list`입니다.
</ResponseField>

<ResponseField name="data" type="object[]">
  embedding 객체의 목록으로, 입력마다 하나씩 입력 순서대로 정렬됩니다.

  <Expandable title="embedding 객체">
    <ResponseField name="object" type="string">
      항상 `embedding`입니다.
    </ResponseField>

    <ResponseField name="index" type="integer">
      해당 입력의 인덱스입니다.
    </ResponseField>

    <ResponseField name="embedding" type="number[]">
      embedding 벡터입니다.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="model" type="string">
  embedding 생성에 사용된 모델입니다.
</ResponseField>

<ResponseField name="usage" type="object">
  요청의 토큰 사용량입니다. embedding은 입력 토큰에 대해서만 과금되며 모달리티별로 요금이 다릅니다(가격은 모델 페이지를 참조하세요). 미디어가 포함된 요청에는 모달리티별 토큰 수가 포함됩니다.

  <Expandable title="usage 객체">
    <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">
      모든 모달리티에 걸친 총 입력 토큰 수입니다(embedding은 출력 토큰을 생성하지 않습니다).
    </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>
