임베딩 (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>).
모델 목록
섹션 제목: “모델 목록”curl -s https://api.danny22.com/v1/embed/v1/models \ -H "Authorization: Bearer $API_KEY"단건 임베딩
섹션 제목: “단건 임베딩”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 순서로 정렬됩니다.
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
섹션 제목: “OpenAI SDK”OpenAI 호환이므로 공식 SDK의 베이스 URL을 https://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활용 노트
섹션 제목: “활용 노트”- 코사인 유사도로 벡터 간 의미 근접도를 계산합니다(정규화 후 내적 = 코사인).
- 다국어 모델이므로 한국어·영어를 같은 공간에서 비교할 수 있습니다.
- 대량 코퍼스는 한 번 임베딩해 저장해 두고, 질의만 런타임에 임베딩해 비교하는 구성이 일반적입니다(빌드타임 코퍼스 + 런타임 질의).