埋め込み API と Qwen3 Embedding 8B を追加しました
埋め込み API /v1/embeddings の提供を開始し、最初のモデルとして qwen3-embedding-8b を追加しました。テキストをベクトルに変換する API で、検索・分類・クラスタリング・RAG のインデックス作成に使えます。単価は入力 ¥10(1M tok・税込表示)です。
埋め込みは応答がベクトルのためトークンを出力しません。そのため課金は入力トークンのみで、出力単価はありません。カタログで最も安いテキスト生成モデル GLM-5.3-Flash(入力 ¥30 / 出力 ¥100)と比べても、低い単価で利用できます。
特徴
100 以上の言語に対応
Alibaba の Qwen チームが公開した Qwen3 Embedding シリーズの最大モデルです。Qwen3-8B-Base をベースにした 36 層のモデルで、プログラミング言語を含む 100 以上の言語に対応します。重みは Hugging Face で Apache 2.0 ライセンスのもと公開されています。
32,000 トークンのコンテキスト
1 リクエストあたり 32,000 トークンまでの入力を受け付けます。長いドキュメントをチャンクに分割せずにそのままベクトル化できる範囲が広く、RAG のインデックス作成で扱いやすい長さです。
次元数を 32〜4,096 で選べる
既定は 4,096 次元です。Matryoshka Representation Learning に対応しており、dimensions に 32〜4,096 の整数を指定すると、その次元に切り詰めたベクトルが返ります。次元を下げるとベクトル DB のストレージと検索コストが下がります。異なる次元のベクトルは比較できないため、1 つのインデックス内では同じ値を使ってください。
ベンチマーク(Qwen 公表値)
Qwen はモデルカードと技術レポートでスコアを公表しています。下記は MTEB Multilingual(131 タスク)の平均スコアで、比較対象の数値は Qwen がその時点の MTEB リーダーボードから引用したものです。
| モデル | MTEB Multilingual | MTEB English | MTEB Code |
|---|---|---|---|
| Qwen3 Embedding 8B | 70.58 | 75.22 | 80.68 |
| gemini-embedding-exp-03-07 | 68.37 | 73.30 | 74.66 |
| multilingual-e5-large-instruct | 63.22 | 65.53 | 65.00 |
| gte-Qwen2-7B-instruct | 62.51 | 70.72 | 56.41 |
| Cohere embed multilingual v3.0 | 61.12 | 66.01 | 51.94 |
| text-embedding-3-large | 58.93 | 66.43 | 58.95 |
Multilingual・English・Code のいずれも、表に挙げた 4 モデルを上回っています。Code の差は特に大きく、コード検索用途を想定した指標では 80.68 と、次点の gemini-embedding-exp-03-07(74.66)を 6 ポイント上回りました。一方 Multilingual の内訳では、Instruction Retrieval が 10.06 で Qwen3 Embedding 4B の 11.56 に届かず、Multilabel Classification も 28.66 で gemini-embedding-exp-03-07 の 29.16 を下回っています。サイズが大きいほど全指標で優れるわけではありません。
スコアはいずれも Qwen 自身による測定で、第三者の独立評価ではありません。比較対象の数値は Qwen が MTEB リーダーボードから引用した 2025 年 6 月時点のスナップショットです。また Multilingual は 131 タスク、English(v2)は 41 タスク、Code は 12 の検索タスクの平均で、ベンチマークごとに対象タスクが異なります。
使い方
model に qwen3-embedding-8b を指定します。
curl https://hai-api.hcloud.ltd/v1/embeddings \
-H "Authorization: Bearer hai_..." \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-embedding-8b",
"input": "テキストをベクトルにする"
}'
OpenAI SDK の embeddings.create がそのまま使えます。
from openai import OpenAI
client = OpenAI(
base_url="https://hai-api.hcloud.ltd/v1",
api_key="hai_...",
)
resp = client.embeddings.create(
model="qwen3-embedding-8b",
input=["テキストをベクトルにする", "複数まとめて送れます"],
)
print(len(resp.data[0].embedding)) # 4096
input は文字列と文字列配列のどちらも受け付けます。配列で送った場合、data には入力と同じ順序で結果が返ります。
注意点
- テキスト生成の
GET /v1/modelsには含まれません。 埋め込みは別サーフェスのため、対応モデルはGET /v1/embeddings/modelsで確認してください。/v1/chat/completionsにqwen3-embedding-8bを指定するとエラーになります - 定額プラン(HAI Go / HAI Go Plus)の対象外です。 クレジットからの従量課金でご利用いただけます
- ストリーミングには対応していません。
stream: trueを指定すると 400 エラーになります - レスポンスの
usage.completion_tokensは常に 0 です。課金対象はprompt_tokensのみです dimensionsに 4,096 を超える値を指定すると 400 エラーになります。切り詰めは 32〜4,096 の範囲でご利用くださいencoding_formatにbase64を指定できます(既定はfloat)- 検索用途では、クエリ側に「Instruct: …」形式の指示文を付けると精度が上がるとされています。Qwen はモデルカードで、指示文を付けない場合に検索性能が 1〜5% 程度低下すること、および多言語の場合でも指示文は英語で書くことを推奨しています