エンドポイント
埋め込み
POST /embeddings でテキストをベクトルに変換し、セマンティック検索やクラスタリング、重複排除、RAG に使う方法です。リクエスト形式、レスポンス、モデルの選び方、料金、エラーを説明します。OpenAI SDK の embeddings.create がそのまま動作します。
プレイグラウンドで試すテキストをベクトルに変換し、セマンティック検索、クラスタリング、重複排除、検索拡張生成(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[] | はい | 埋め込み対象のテキスト。配列を渡すと、1 回のリクエストで複数の入力を埋め込めます。 |
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 回のリクエストで送ると高速で、レート制限上は 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 | 毎分のリクエスト数を超えた。 |
全一覧はエラーを参照してください。