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

# 임베딩 API

> 의미 기반 검색, 클러스터링, 추천, 검색 워크플로를 위한 벡터를 생성하려면 CometAPI 임베딩 경로를 사용하세요.

앱에서 의미 기반 검색, 클러스터링, 추천 또는 검색을 위한 벡터가 필요할 때 CometAPI 임베딩을 사용하세요. 텍스트를 `/v1/embeddings`로 보내고, 반환된 벡터를 저장한 다음, 벡터 데이터베이스로 검색하세요.

## 임베딩 생성

[Models page](/ko/overview/models) 또는 [model directory](https://www.cometapi.com/models/)에서 임베딩을 지원하는 model ID를 사용하세요. 아래 예시는 OpenAI 호환 임베딩 API를 호출합니다.

<Note>
  이 예시에서는 `your-embedding-model-id` 플레이스홀더를 사용합니다. 요청을 실행하기 전에 [Models page](/ko/overview/models) 또는 [model directory](https://www.cometapi.com/models/)에서 사용 가능한 임베딩 model ID로 교체하세요.
</Note>

<Tip>
  플레이그라운드와 엔드포인트 스키마를 사용하려면 [Create embeddings](/api/text/embeddings)를 여세요.
</Tip>

<CodeGroup>
  ```python Python theme={null}
  import os
  import requests

  response = requests.post(
      "https://api.cometapi.com/v1/embeddings",
      headers={
          "Authorization": "Bearer " + os.environ["COMETAPI_KEY"],
          "Content-Type": "application/json",
      },
      json={
          "model": "your-embedding-model-id",
          "input": "CometAPI lets developers use many model providers.",
      },
      timeout=30,
  )

  response.raise_for_status()
  result = response.json()
  print(len(result["data"][0]["embedding"]))
  ```

  ```javascript Node.js theme={null}
  const response = await fetch("https://api.cometapi.com/v1/embeddings", {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.COMETAPI_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      model: "your-embedding-model-id",
      input: "CometAPI lets developers use many model providers.",
    }),
  });

  if (!response.ok) {
    throw new Error(await response.text());
  }

  const result = await response.json();
  console.log(result.data[0].embedding.length);
  ```

  ```bash cURL theme={null}
  curl https://api.cometapi.com/v1/embeddings \
    -H "Authorization: Bearer $COMETAPI_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "your-embedding-model-id",
      "input": "CometAPI lets developers use many model providers."
    }'
  ```
</CodeGroup>

## 응답 예시

성공적인 응답은 다음과 같을 수 있습니다. 응답에는 각 입력 항목에 대해 하나의 벡터가 포함되며, 아래 벡터는 가독성을 위해 축약되었습니다.

```json theme={null}
{
  "object": "list",
  "data": [
    {
      "object": "embedding",
      "index": 0,
      "embedding": [
        -0.0021,
        -0.0491,
        0.0209
      ]
    }
  ],
  "model": "your-embedding-model-id",
  "usage": {
    "prompt_tokens": 10,
    "total_tokens": 10
  }
}
```

## 배치 입력

한 번의 요청으로 여러 벡터를 원한다면 문자열 배열을 보내세요:

```bash cURL theme={null}
curl https://api.cometapi.com/v1/embeddings \
  -H "Authorization: Bearer $COMETAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "your-embedding-model-id",
    "input": [
      "Create an API key",
      "Change the base URL",
      "Retry after a rate limit"
    ]
  }'
```

## 예시 model 레코드

<Info>
  이 예시 model 카탈로그 응답은 `/api/models` 엔벌로프와 OpenAI 호환 임베딩 model 레코드 형태 하나를 보여줍니다. 일부 임베딩 레코드는 빈 `model_type`을 사용하므로, 해당 필드만 의존하지 말고 ID와 endpoint 지원 여부를 기준으로 임베딩 model을 선택하세요.
</Info>

```bash cURL theme={null}
curl https://api.cometapi.com/api/models
```

```json theme={null}
{
  "success": true,
  "page": 1,
  "page_size": 20,
  "total": 302,
  "data": [
    {
      "created": 1757904564,
      "id": "your-embedding-model-id",
      "code": "your-embedding-model-id",
      "provider": "ExampleProvider",
      "provider_code": "example",
      "name": "Example embedding model",
      "model_type": "embedding",
      "features": [
        "text-embedding"
      ],
      "endpoints": [
        "openai"
      ],
      "pricing": {
        "currency": "USD / M Tokens",
        "input": 0.1,
        "output": null,
        "per_request": null,
        "per_second": null
      }
    }
  ]
}
```

## 일반적인 오류

<AccordionGroup>
  <Accordion title="Input too long">
    임베딩하기 전에 긴 문서를 청크로 분할하세요.
  </Accordion>

  <Accordion title="Wrong model type">
    모델 디렉터리에서 임베딩을 지원하는 model을 선택하세요.
  </Accordion>

  <Accordion title="Vector dimensions mismatch">
    하나의 벡터 인덱스에서는 동일한 model과 차원을 유지하세요.
  </Accordion>

  <Accordion title="Missing API key">
    `Authorization: Bearer $COMETAPI_KEY`를 전송하세요.
  </Accordion>
</AccordionGroup>

## 오류 코드 및 재시도 전략

<AccordionGroup>
  <Accordion title="400">
    입력, model ID 또는 차원 설정을 수정하기 전까지 재시도하지 마세요.
  </Accordion>

  <Accordion title="401">
    API 키가 존재하고 유효해질 때까지 재시도하지 마세요.
  </Accordion>

  <Accordion title="404">
    재시도하기 전에 base URL, path, model ID를 확인하세요.
  </Accordion>

  <Accordion title="429">
    지수 백오프를 사용해 재시도하고 배치 크기 또는 동시성을 줄이세요.
  </Accordion>

  <Accordion title="500 or 503">
    일시적인 provider 또는 서비스 오류에는 백오프를 적용해 재시도하세요.
  </Accordion>
</AccordionGroup>

<Tip>
  구현 패턴은 [오류 코드 및 재시도 전략](/ko/guides/error-codes-and-retry-strategy) 및 [Rate limits and concurrency](/ko/guides/rate-limits-and-concurrency)를 참고하세요.
</Tip>

## 가격 및 모델 디렉터리

<CardGroup cols={3}>
  <Card title="Models page" icon="list" href="/overview/models">
    문서에서 CometAPI가 model ID를 어떻게 제공하는지 알아보세요.
  </Card>

  <Card title="Model directory" icon="puzzle-piece" href="https://www.cometapi.com/models/">
    사용 가능한 model과 기능을 살펴보세요.
  </Card>

  <Card title="Pricing" icon="tag" href="https://www.cometapi.com/pricing/">
    model을 호출하기 전에 가격을 확인하세요.
  </Card>
</CardGroup>
