엔드포인트
임베딩
POST /embeddings로 텍스트를 벡터로 바꿔 의미 검색, 클러스터링, RAG에 활용하는 방법을 설명합니다. 요청 파라미터, 응답 형식, 모델 선택 기준, 가격, 사용 팁, 오류를 다룹니다. 모델별 가격을 비교해 고를 수 있습니다.
플레이그라운드에서 사용해 보기텍스트를 벡터로 변환해 의미 검색, 클러스터링, 중복 제거, 검색 증강 생성(RAG)에 사용하세요. 이 엔드포인트는 OpenAI의 POST /embeddings와 형식이 같으므로 client.embeddings.create(...)가 그대로 동작합니다.
POST https://api14.com/api/v1/embeddings
요청
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
model | string | 예 | 임베딩 모델 ID. 예: openai/text-embedding-3-small. |
input | string 또는 string[] | 예 | 임베딩할 텍스트. 배열을 전달하면 한 요청으로 여러 입력을 임베딩합니다. |
dimensions | integer | 아니요 | 출력 벡터 크기. 축소를 지원하는 모델(예: text-embedding-3-*)용입니다. |
encoding_format | string | 아니요 | float(기본값) 또는 base64. |
user | string | 아니요 | 업스트림으로 전달되는 자체 최종 사용자 ID. |
provider | object | 아니요 | 제공자 라우팅 선호 설정. 제공자 라우팅을 참고하세요. |
예제
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api14.com/api/v1",
apiKey: process.env.API14_API_KEY,
});
const result = await client.embeddings.create({
"model": "openai/text-embedding-3-small",
"input": [
"The quick brown fox",
"Lorem ipsum"
]
});
console.log(result.data.map((d) => d.embedding.length));
응답
{
"object": "list",
"data": [
{ "object": "embedding", "index": 0, "embedding": [0.0023, -0.0091, 0.0154, "..."] }
],
"model": "openai/text-embedding-3-small",
"usage": { "prompt_tokens": 8, "total_tokens": 8, "cost": 0.00000016 }
}
data[i].index는 input 배열에서 해당 입력의 위치와 일치합니다.
모델 선택
API 키 없이 임베딩 모델과 가격 목록을 조회할 수 있습니다.
curl https://api14.com/api/v1/embeddings/models
# or, with categories and our prices:
curl "https://api14.com/api/v1/models?category=embeddings"
서로 다른 모델의 벡터는 비교할 수 없습니다. 모든 벡터와 함께 모델 ID를 저장하고, 모델을 바꾸면 코퍼스를 다시 임베딩하세요.
가격
임베딩은 모델에 표시된 가격("$ / 1M tokens")으로 입력 토큰당 과금됩니다. 각 요청의 비용은 usage.cost(USD)로 반환되고 잔액에서 차감됩니다. 요금 및 결제를 참고하세요.
팁
- 입력을 배치로 묶으세요. 문자열 100개를 한 요청으로 보내면 더 빠르고 속도 제한에서도 요청 1건으로 계산됩니다.
- 각 입력은 모델의 컨텍스트 길이 이내로 유지하세요. 더 긴 텍스트는 업스트림에서 거부됩니다.
- 벡터를 정규화(대부분의 모델은 이미 단위 길이로 반환)하고 코사인 유사도를 사용하세요.
오류
| 상태 | 코드 | 발생 조건 |
|---|---|---|
| 400 | model_required / invalid_json | model이 없거나 본문이 JSON 객체가 아닙니다. |
| 401 | invalid_api_key | 키가 없거나 유효하지 않습니다. |
| 402 | insufficient_balance | USD 잔액이 $0입니다. |
| 403 | model_not_allowed | 키의 모델 허용 목록에 이 모델이 없습니다. |
| 404 | model_not_found | 알 수 없거나 비활성화된 모델 ID입니다. |
| 429 | rate_limited | 분당 요청 수를 초과했습니다. |
전체 목록: 오류.