업데이트: 2026-06-06
기본 사용법
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)}")
배치 임베딩
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-* 시리즈는 출력 차원을 사용자 지정하는 것을 지원합니다:
response = client.embeddings.create(
model="text-embedding-3-large",
input="테스트 텍스트",
dimensions=256 # 256차원으로 축소
)
print(f"차원: {len(response.data[0].embedding)}") # 256
유사도 계산
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}")
차원을 축소하면 저장 및 계산 비용을 줄일 수 있지만 일부 정밀도가 손실됩니다. 실제 시나리오에 맞춰 테스트한 후 적절한 차원을 선택하는 것을 권장합니다.