콘텐츠로 이동

임베딩 (embed) — 텍스트 벡터화

/v1/embed/는 danny22의 로컬 임베딩 서비스(BAAI/bge-m3, 다국어)를 OpenAI 호환 형식으로 노출합니다. 문장·문서를 고정 길이 벡터로 바꿔 의미 검색·유사도·군집·RAG 등에 사용할 수 있습니다.

  • 모델: bge-m3 (다국어, 1024차원)
  • 프로토콜: OpenAI 호환 POST /v1/embeddings
  • 경로: /v1/embed/ 접두사 아래에 그대로 노출됩니다.
POST https://api.danny22.com/v1/embed/v1/embeddings

모든 요청은 인증이 필요합니다(Authorization: Bearer <token>).

Terminal window
curl -s https://api.danny22.com/v1/embed/v1/models \
-H "Authorization: Bearer $API_KEY"
Terminal window
curl -s https://api.danny22.com/v1/embed/v1/embeddings \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "bge-m3",
"input": "제주 한 달 살기 좋은 동네 추천"
}'

응답(요약)

{
"object": "list",
"data": [
{ "object": "embedding", "index": 0, "embedding": [0.0123, -0.0456, "…(1024개)"] }
],
"model": "bge-m3",
"usage": { "prompt_tokens": 12, "total_tokens": 12 }
}

input에 문자열 배열을 주면 한 요청으로 여러 텍스트를 임베딩합니다. 응답 data[]index 순서로 정렬됩니다.

Terminal window
curl -s https://api.danny22.com/v1/embed/v1/embeddings \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "bge-m3",
"input": ["첫 번째 문장", "두 번째 문장", "세 번째 문장"]
}'

OpenAI 호환이므로 공식 SDK의 베이스 URLhttps://api.danny22.com/v1/embed/v1로, API 키를 danny22 API 키로 설정하면 그대로 동작합니다.

from openai import OpenAI
client = OpenAI(
base_url="https://api.danny22.com/v1/embed/v1",
api_key="ak_xxxxxxxx.yyyyyyyyyyyyyyyy",
)
resp = client.embeddings.create(model="bge-m3", input="의미 검색용 질의")
vec = resp.data[0].embedding # 길이 1024
  • 코사인 유사도로 벡터 간 의미 근접도를 계산합니다(정규화 후 내적 = 코사인).
  • 다국어 모델이므로 한국어·영어를 같은 공간에서 비교할 수 있습니다.
  • 대량 코퍼스는 한 번 임베딩해 저장해 두고, 질의만 런타임에 임베딩해 비교하는 구성이 일반적입니다(빌드타임 코퍼스 + 런타임 질의).

에러 코드는 에러, 인증은 인증을 참고하세요.