マルチモーダル埋め込みモデルは、テキスト、画像、または動画をベクターに変換します。動画分類、画像分類、クロスモーダル検索などのタスクに適しています。
コア機能
クロスモーダル検索: テキストから画像、画像から動画、画像から画像への検索など、クロスモーダルなセマンティック検索を実行します。
セマンティック類似度の計算: 統一されたベクター空間で、異なるモダリティのコンテンツ間のセマンティック類似度を測定します。
コンテンツの分類とクラスタリング: セマンティックベクター埋め込みに基づいて、インテリジェントなグルーピング、タギング、クラスタリング分析を実行します。
主要な属性: テキスト、画像、動画などのすべてのモダリティから生成されたベクター埋め込みは、同じセマンティック空間にあります。余弦類似度を計算することで、クロスモーダルなマッチングと比較を直接実行できます。モデルの選択と使用方法の詳細については、「テキストとマルチモーダル埋め込み」をご参照ください。
このモデルサービスは、中国 (北京) リージョンでのみ利用可能です。中国 (北京) リージョンの API キー を使用する必要があります。
概要
汎用マルチモーダル埋め込み API を呼び出す際には、以下の入力タイプとフォーマットの制限が適用されます。
API は、単一のテキストセグメント、単一の画像、または単一の動画ファイルをサポートします。また、テキストと画像など、異なるタイプの組み合わせも可能です。呼び出しごとに許可される組み合わせは 1 つだけで、ファイルは表にある長さとサイズの要件を満たす必要があります。
前提条件
API キーを取得し、API キーを環境変数として設定する必要があります。SDK を使用して呼び出しを行う場合は、DashScope SDK をインストールする必要もあります。
HTTP
POST https://dashscope.aliyuncs.com/api/v1/services/embeddings/multimodal-embedding/multimodal-embedding
リクエスト | マルチモーダル埋め込み |
ヘッダー | |
Content-Type リクエストのコンテンツタイプ。これは `application/json` または `text/event-stream` に設定できます。`text/event-stream` の値は、Server-Sent Events (SSE) 応答を有効にします。 Content-Type リクエストのコンテンツタイプ。このパラメーターを | |
Authorization リクエストの身分認証情報。この API は、身分認証に Model Studio API キーを使用します。例: Bearer sk-xxxx。 | |
リクエストボディ | |
model 概要 の表にあるモデルの名前。 | |
input 入力コンテンツ。 | |
parameters object (任意) |
応答 | 成功した応答エラー応答 |
output タスクの出力。 | |
request_id 一意のリクエスト ID。この ID を使用して問題を追跡し、トラブルシューティングできます。 | |
code 失敗したリクエストのエラーコード。リクエストが成功した場合、このパラメーターは返されません。詳細については、「エラーメッセージ」をご参照ください。 | |
message 失敗したリクエストの詳細情報。リクエストが成功した場合、このパラメーターは返されません。詳細については、「エラーメッセージ」をご参照ください。 | |
usage 出力に関する統計。 |
SDK の使用
SDK 呼び出しのリクエストボディの構造は、ネイティブ HTTP 呼び出しの構造とは異なります。SDK の input パラメーターは、HTTP 呼び出しの input.contents パラメーターに対応します。
サンプルコード
画像埋め込みの生成
画像 URL の使用
import dashscope
import json
from http import HTTPStatus
# 実際には、URL をご自身の画像 URL に置き換えてください。
image = "https://dashscope.oss-cn-beijing.aliyuncs.com/images/256_1.png"
input = [{'image': image}]
# モデル API を呼び出します。
resp = dashscope.MultiModalEmbedding.call(
model="tongyi-embedding-vision-plus",
input=input
)
if resp.status_code == HTTPStatus.OK:
result = {
"status_code": resp.status_code,
"request_id": getattr(resp, "request_id", ""),
"code": getattr(resp, "code", ""),
"message": getattr(resp, "message", ""),
"output": resp.output,
"usage": resp.usage
}
print(json.dumps(result, ensure_ascii=False, indent=4))ローカル画像の使用
次のサンプルコードは、ローカル画像を Base64 フォーマットに変換し、モデルを呼び出して埋め込みを生成する方法を示しています。
import dashscope
import base64
import json
from http import HTTPStatus
# 画像を読み取り、Base64 に変換します。実際には、xxx.png をご自身の画像ファイル名またはパスに置き換えてください。
image_path = "xxx.png"
with open(image_path, "rb") as image_file:
# ファイルを読み取り、Base64 に変換します。
base64_image = base64.b64encode(image_file.read()).decode('utf-8')
# 画像フォーマットを設定します。
image_format = "png" # jpg や bmp など、実際のフォーマットに基づいてこれを変更してください。
image_data = f"data:image/{image_format};base64,{base64_image}"
# 入力データ。
input = [{'image': image_data}]
# モデル API を呼び出します。
resp = dashscope.MultiModalEmbedding.call(
model="tongyi-embedding-vision-plus",
input=input
)
if resp.status_code == HTTPStatus.OK:
result = {
"status_code": resp.status_code,
"request_id": getattr(resp, "request_id", ""),
"code": getattr(resp, "code", ""),
"message": getattr(resp, "message", ""),
"output": resp.output,
"usage": resp.usage
}
print(json.dumps(result, ensure_ascii=False, indent=4))動画埋め込みの生成
マルチモーダル埋め込みモデルは、入力として動画ファイルの URL のみをサポートします。ローカルの動画ファイルはサポートされていません。
import dashscope
import json
from http import HTTPStatus
# 実際には、URL をご自身の動画 URL に置き換えてください。
video = "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250107/lbcemt/new+video.mp4"
input = [{'video': video}]
# モデル API を呼び出します。
resp = dashscope.MultiModalEmbedding.call(
model="tongyi-embedding-vision-plus",
input=input
)
if resp.status_code == HTTPStatus.OK:
result = {
"status_code": resp.status_code,
"request_id": getattr(resp, "request_id", ""),
"code": getattr(resp, "code", ""),
"message": getattr(resp, "message", ""),
"output": resp.output,
"usage": resp.usage
}
print(json.dumps(result, ensure_ascii=False, indent=4))テキスト埋め込みの生成
import dashscope
import json
from http import HTTPStatus
text = "General multimodal embedding model example"
input = [{'text': text}]
# モデル API を呼び出します。
resp = dashscope.MultiModalEmbedding.call(
model="tongyi-embedding-vision-plus",
input=input
)
if resp.status_code == HTTPStatus.OK:
result = {
"status_code": resp.status_code,
"request_id": getattr(resp, "request_id", ""),
"code": getattr(resp, "code", ""),
"message": getattr(resp, "message", ""),
"output": resp.output,
"usage": resp.usage
}
print(json.dumps(result, ensure_ascii=False, indent=4))応答のサンプル
{
"status_code": 200,
"request_id": "b5623e99-ea0c-9509-9b25-20bcc99d03e9",
"code": "",
"message": "",
"output": {
"embeddings": [
{
"index": 0,
"embedding": [
-0.020782470703125,
-0.01399993896484375,
-0.0229949951171875,
...
],
"type": "text"
}
]
},
"usage": {
"input_tokens": 12,
"image_tokens": 0
}
}エラーコード
呼び出しが失敗した場合は、トラブルシューティングについて「エラーメッセージ」をご参照ください。