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

# Python Embeddings

> Python으로 텍스트 임베딩 API 호출

> 업데이트: 2026-06-06

## 기본 사용법

```python theme={null}
from openai import OpenAI

client = OpenAI(api_key="sk-xxx", base_url="https://api.crazyrouter.com/v1")

response = client.embeddings.create(
    model="text-embedding-3-large",
    input="Crazyrouter는 AI 모델 게이트웨이입니다"
)

embedding = response.data[0].embedding
print(f"차원: {len(embedding)}")
```

## 배치 임베딩

```python theme={null}
texts = [
    "인공지능의 발전 역사",
    "머신러닝과 딥러닝의 차이",
    "자연어 처리의 응용 사례"
]

response = client.embeddings.create(
    model="text-embedding-3-large",
    input=texts
)

for i, item in enumerate(response.data):
    print(f"텍스트 {i}: 차원 {len(item.embedding)}")
```

## 차원 지정

`text-embedding-3-*` 시리즈는 출력 차원을 사용자 지정하는 것을 지원합니다:

```python theme={null}
response = client.embeddings.create(
    model="text-embedding-3-large",
    input="테스트 텍스트",
    dimensions=256  # 256차원으로 축소
)

print(f"차원: {len(response.data[0].embedding)}")  # 256
```

## 유사도 계산

```python theme={null}
import numpy as np

def cosine_similarity(a, b):
    return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))

response = client.embeddings.create(
    model="text-embedding-3-large",
    input=["고양이는 반려동물의 일종이다", "개도 흔한 반려동물이다", "양자역학은 물리학의 한 분야이다"]
)

vectors = [item.embedding for item in response.data]

print(f"고양이 vs 개: {cosine_similarity(vectors[0], vectors[1]):.4f}")
print(f"고양이 vs 양자역학: {cosine_similarity(vectors[0], vectors[2]):.4f}")
```

<Note>
  차원을 축소하면 저장 및 계산 비용을 줄일 수 있지만 일부 정밀도가 손실됩니다. 실제 시나리오에 맞춰 테스트한 후 적절한 차원을 선택하는 것을 권장합니다.
</Note>
