マルチモーダル埋め込み API は、テキスト、イメージ、またはその両方の組み合わせを密ベクトル表現に変換します。生成された埋め込みベクターは、クロスモーダル取得(テキスト→イメージ、イメージ→テキスト)および類似検索に使用できます。
本サービスは Qwen2-VL マルチモーダル大規模言語モデル(MLLM)を基に学習されており、単一モーダル入力およびマルチモーダル入力の両方をサポートします。
利用可能なモデル
| モデル | サービス ID | 寸法 | 対応言語 | 説明 |
|---|---|---|---|---|
| M2-Encoder-Multimodal Vector Model | ops-m2-encoder | 768 | 中国語・英語バイリンガル | BM-6B を基に、60 億件の画像・テキストペア(中国語 30 億件、英語 30 億件)で学習済み。テキストとイメージ間のクロスモーダル取得およびイメージ分類をサポートします。 |
| M2-Encoder-Large-Multimodal Vector Model | ops-m2-encoder-large | 1024 | 中国語・英語バイリンガル | パラメーター数 10 億の大型モデルです。ops-m2-encoder と比較して、マルチモーダルタスクにおける表現力および性能が向上しています。 |
| GME Multimodal Vector-Qwen2-VL-2B | ops-gme-qwen2-vl-2b-instruct | 1536 | ― | Qwen2-VL MLLM を基に学習済み。単一モーダルおよびマルチモーダルの入力組み合わせをサポートし、テキスト、イメージ、およびそれらの複合データ型を処理できます。 |
ops-m2-encoder および ops-m2-encoder-large では、1 つのドキュメント内にテキストとイメージを同時に指定できません。
レート制限
クエリ/秒(QPS)の制限は、Alibaba Cloud アカウント単位で適用され、当該アカウント配下のすべての RAM ユーザーを含みます。
| モデル | QPS |
|---|---|
ops-m2-encoder | 10 |
より高い QPS 制限をご希望の場合は、チケットを送信してください。
前提条件
開始する前に、以下の準備を行ってください。
AI Search Open Platform の API キーおよびサービスエンドポイントを用意します。詳細については、「サービスエンドポイントの取得」をご参照ください。
API リファレンス
エンドポイント
POST {host}/v3/openapi/workspaces/{workspace_name}/multi-modal-embedding/{service_id}パスパラメーターを実際の値に置き換えます。
| パラメーター | 説明 | 例 |
|---|---|---|
host | サービスエンドポイント。インターネットおよび VPC アクセスをサポートします。 | http://ops-cn-hangzhou.opensearch.aliyuncs.com |
workspace_name | ワークスペース名。 | default |
service_id | 埋め込みモデルの ID。 | ops-m2-encoder |
リクエスト
リクエストボディは 8 MB を超えてはなりません。
ヘッダー
| パラメーター | 型 | 必須 | 説明 | 例 |
|---|---|---|---|---|
| Content-Type | String | はい | リクエストのコンテンツタイプ。 | application/json |
| Authorization | String | はい | 認証用の API キー。 | Bearer OS-d1**2a |
ボディ
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
input | List<ContentObject> | はい | 入力のリスト。1 回のリクエストあたり最大 32 個まで指定可能。 |
ContentObject のフィールド:
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
text | String | いいえ | 埋め込み対象のテキスト。 |
image | String | いいえ | 埋め込み対象のイメージ。URL または Base64 エンコード済みデータを指定できます。 |
ops-m2-encoder および ops-m2-encoder-large の場合、各 ContentObject には text フィールドまたは image フィールドのいずれかを含める必要があります。両方のフィールドを指定した場合、イメージは無視されます。
ops-gme-qwen2-vl-2b-instruct の場合、ContentObject に text および image の両方のフィールドを指定でき、マルチモーダルな統合埋め込みを実行できます。
イメージ入力のフォーマット:
URL — アクセス可能な URL を指定する必要があります。
{ "image": "http://example.com/photo.jpg" }Base64 —
data:image/{format};base64,{base64_image}の形式を使用します。{format}には実際のイメージ形式(例:jpeg、png)を、{base64_image}にはエンコード済みデータを指定します。{ "image": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAoHCB..." }
応答
正常終了時の応答には、以下のフィールドが含まれます。
| フィールド | 型 | 説明 |
|---|---|---|
request_id | String | 一意のリクエスト識別子。 |
latency | Int | 処理時間(ミリ秒単位)。 |
usage.image | Int | 処理されたイメージ数。 |
usage.token_count | Int | 処理されたトークン数。 |
result.embeddings | List | 埋め込み結果の配列。各要素は 1 つの入力に対応します。 |
result.embeddings[].index | Int | 入力がリクエスト配列内で占める位置(0 基準)。 |
result.embeddings[].embedding | List<Double> | 埋め込みベクター。 |
エラー応答 には、エラー内容を示す code および message フィールドが含まれます。
| フィールド | 型 | 説明 |
|---|---|---|
request_id | String | 一意のリクエスト識別子。 |
latency | Int | 0 エラー応答の場合。 |
code | String | エラーコード。 |
message | String | エラーの説明。 |
エラーコードの一覧については、「ステータスコード」をご参照ください。
サンプル
イメージ埋め込みの生成
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <your-api-key>" \
"http://<your-endpoint>/v3/openapi/workspaces/default/multi-modal-embedding/ops-m2-encoder" \
-d '{
"input": [
{
"image": "http://example.com/photo.jpg"
}
]
}'以下のプレースホルダーを実際の値に置き換えます。
| プレースホルダー | 説明 | 例 |
|---|---|---|
<your-api-key> | 認証用の API キー | OS-d1xxxxx2a |
<your-endpoint> | サービスエンドポイント | ops-cn-hangzhou.opensearch.aliyuncs.com |
正常終了時の応答サンプル
{
"request_id": "B4AB89C8-B135-****-A6F8-2BAB801A2CE4",
"latency": 38,
"usage": {
"image": 1,
"token_count": 28
},
"result": {
"embeddings": [
{
"index": 0,
"embedding": [
-0.033447265625,
0.10577392578125,
-0.0015211105346679688,
-0.044189453125,
"...",
0.004688262939453125,
-4.5239925384521484E-5
]
}
]
}
}エラー応答サンプル
{
"request_id": "651B3087-8A07-****-B931-9C4E7B60F52D",
"latency": 0,
"code": "InvalidParameter",
"message": "JSON parse error: Cannot deserialize value of type `InputType` from String \"xxx\""
}