Multimodal Embeddings API は、提供された入力に基づいてベクトルを生成します。この入力には、画像、テキスト、動画データの組み合わせを含めることができます。エンベディング ベクトルは、画像分類や動画コンテンツのモデレーションなどの後続のタスクに使用できます。
コンセプトに関する詳細については、マルチモーダル エンベディングをご覧ください。
サポートされているモデル:
| モデル | コード |
|---|---|
| マルチモーダル エンベディング | multimodalembedding@001 |
構文の例
マルチモーダル エンベディング API リクエストを送信する構文。
curl
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/publishers/google/models/${MODEL_ID}:predict \ -d '{ "instances": [ ... ], }'
Python
from vertexai.vision_models import MultiModalEmbeddingModel model = MultiModalEmbeddingModel.from_pretrained("multimodalembedding") model.get_embeddings(...)
パラメータ リスト
実装の詳細については、例をご覧ください。
リクエストの本文
{
"instances": [
{
"text": string,
"image": {
// Union field can be only one of the following:
"bytesBase64Encoded": string,
"gcsUri": string,
// End of list of possible types for union field.
"mimeType": string
},
"video": {
// Union field can be only one of the following:
"bytesBase64Encoded": string,
"gcsUri": string,
// End of list of possible types for union field.
"videoSegmentConfig": {
"startOffsetSec": integer,
"endOffsetSec": integer,
"intervalSec": integer
}
},
"parameters": {
"dimension": integer
}
}
]
}
| パラメータ | |
|---|---|
|
省略可: エンベディングを生成する画像。 |
|
省略可: エンベディングを生成するテキスト。 |
|
省略可: エンベディングを生成する動画セグメント。 |
|
省略可: レスポンスに含まれるエンベディングのディメンション。これはテキストと画像の入力にのみ適用されます。指定できる値は |
画像
| パラメータ | |
|---|---|
|
省略可: base64 文字列でエンコードされた画像バイト。 |
|
省略可。 エンベディングを実行する画像の Cloud Storage ロケーション。 |
|
省略可。 画像のコンテンツの MIME タイプ。サポートされている値: |
動画
| パラメータ | |
|---|---|
|
省略可: base64 文字列でエンコードされた動画バイト。 |
|
省略可: エンベディングを実行する動画の Cloud Storage のロケーション。 |
|
省略可: 動画セグメントの構成。 |
VideoSegmentConfig
| パラメータ | |
|---|---|
|
省略可: 動画セグメントの開始オフセット(秒単位)。指定しない場合、 |
|
省略可: 動画セグメントの終了オフセット(秒単位)。指定しない場合、 |
|
省略可。 エンベディングが生成される動画の間隔。 |
レスポンスの本文
{
"predictions": [
{
"textEmbedding": [
float,
// array of 128, 256, 512, or 1408 float values
float
],
"imageEmbedding": [
float,
// array of 128, 256, 512, or 1408 float values
float
],
"videoEmbeddings": [
{
"startOffsetSec": integer,
"endOffsetSec": integer,
"embedding": [
float,
// array of 1408 float values
float
]
}
]
}
],
"deployedModelId": string
}
| レスポンス要素 | 説明 |
|---|---|
imageEmbedding |
浮動小数点型の 128、256、512、または 1,408 ディメンションのリスト。 |
textEmbedding |
浮動小数点型の 128、256、512、または 1,408 ディメンションのリスト。 |
videoEmbeddings |
エンベディングが生成された動画セグメントの開始時間と終了時間(秒単位)を持つ浮動小数点型の 1,408 ディメンションのリスト。 |
例
基本的なユースケース
画像からエンベディングを生成する
次のサンプルを使用して、画像のエンベディングを生成します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION: プロジェクトのリージョン。たとえば、
us-central1、europe-west2、asia-northeast3です。使用可能なリージョンの一覧については、Vertex AI の生成 AI のロケーションをご覧ください。 - PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- TEXT: エンベディングを取得するターゲット テキスト。例:
a cat - B64_ENCODED_IMG: エンベディングを取得するターゲット画像。画像は base64 でエンコードされたバイト文字列として指定する必要があります。
HTTP メソッドと URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
リクエストの本文(JSON):
{
"instances": [
{
"text": "TEXT",
"image": {
"bytesBase64Encoded": "B64_ENCODED_IMG"
}
}
]
}
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict"
PowerShell
リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict" | Select-Object -Expand Content
{
"predictions": [
{
"textEmbedding": [
0.010477379,
-0.00399621,
0.00576670747,
[...]
-0.00823613815,
-0.0169572588,
-0.00472954148
],
"imageEmbedding": [
0.00262696808,
-0.00198890246,
0.0152047109,
-0.0103145819,
[...]
0.0324628279,
0.0284924973,
0.011650892,
-0.00452344026
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}
Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。詳細については、Python API リファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Node.js の設定手順を完了してください。詳細については、Vertex AI Node.js API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Java
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Java の設定手順を完了してください。詳細については、Vertex AI Java API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Go
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Go の設定手順を完了してください。詳細については、Vertex AI Go API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
動画からエンベディングを生成する
動画コンテンツのエンベディングを生成するには、次のサンプルを使用します。
REST
次の例では、Cloud Storage にある動画を使用します。video.bytesBase64Encoded フィールドを使用して、動画の base64 エンコード文字列表現を指定することもできます。
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION: プロジェクトのリージョン。たとえば、
us-central1、europe-west2、asia-northeast3です。使用可能なリージョンの一覧については、Vertex AI の生成 AI のロケーションをご覧ください。 - PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- VIDEO_URI: エンベディングを取得するターゲット動画の Cloud Storage URI。例:
gs://my-bucket/embeddings/supermarket-video.mp4また、動画を base64 エンコードのバイト文字列として指定することもできます。
[...] "video": { "bytesBase64Encoded": "B64_ENCODED_VIDEO" } [...] videoSegmentConfig(START_SECOND, END_SECOND, INTERVAL_SECONDS)。省略可。エンベディングが生成される特定の動画セグメント(秒単位)。例:
[...] "videoSegmentConfig": { "startOffsetSec": 10, "endOffsetSec": 60, "intervalSec": 10 } [...]この構成を使用して、10 秒から 60 秒までの動画データを指定し、[10, 20), [20, 30), [30, 40), [40, 50), [50, 60) の 10 秒の動画間隔のエンベディングを生成します。この動画間隔(
"intervalSec": 10)は、Standard 動画エンベディング モードになり、ユーザーには Standard モードの料金レートで請求されます。videoSegmentConfigを省略すると、サービスはデフォルト値の"videoSegmentConfig": { "startOffsetSec": 0, "endOffsetSec": 120, "intervalSec": 16 }を使用します。この動画間隔("intervalSec": 16)は、Essential 動画エンベディング モードになり、ユーザーには Essential モードの料金レートで請求されます。
HTTP メソッドと URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
リクエストの本文(JSON):
{
"instances": [
{
"video": {
"gcsUri": "VIDEO_URI",
"videoSegmentConfig": {
"startOffsetSec": START_SECOND,
"endOffsetSec": END_SECOND,
"intervalSec": INTERVAL_SECONDS
}
}
}
]
}
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict"
PowerShell
リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict" | Select-Object -Expand Content
レスポンス(7 秒の動画、videoSegmentConfig の指定なし):
{
"predictions": [
{
"videoEmbeddings": [
{
"endOffsetSec": 7,
"embedding": [
-0.0045467657,
0.0258095954,
0.0146885719,
0.00945400633,
[...]
-0.0023291884,
-0.00493789,
0.00975185353,
0.0168156829
],
"startOffsetSec": 0
}
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}レスポンス(59 秒の動画、動画セグメントの構成: "videoSegmentConfig": { "startOffsetSec": 0, "endOffsetSec": 60, "intervalSec": 10 }):
{
"predictions": [
{
"videoEmbeddings": [
{
"endOffsetSec": 10,
"startOffsetSec": 0,
"embedding": [
-0.00683252793,
0.0390476175,
[...]
0.00657121744,
0.013023301
]
},
{
"startOffsetSec": 10,
"endOffsetSec": 20,
"embedding": [
-0.0104404651,
0.0357737206,
[...]
0.00509833824,
0.0131902946
]
},
{
"startOffsetSec": 20,
"embedding": [
-0.0113538112,
0.0305239167,
[...]
-0.00195809244,
0.00941874553
],
"endOffsetSec": 30
},
{
"embedding": [
-0.00299320649,
0.0322436653,
[...]
-0.00993082579,
0.00968887936
],
"startOffsetSec": 30,
"endOffsetSec": 40
},
{
"endOffsetSec": 50,
"startOffsetSec": 40,
"embedding": [
-0.00591270532,
0.0368893594,
[...]
-0.00219071587,
0.0042470959
]
},
{
"embedding": [
-0.00458270218,
0.0368121453,
[...]
-0.00317760976,
0.00595594104
],
"endOffsetSec": 59,
"startOffsetSec": 50
}
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}
Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。詳細については、Python API リファレンス ドキュメントをご覧ください。
Go
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Go の設定手順を完了してください。詳細については、Vertex AI Go API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
上級者向けのユースケース
次のサンプルを使用して、動画、テキスト、画像コンテンツのエンベディングを取得します。
動画のエンベディングでは、動画セグメントとエンベディング密度を指定できます。
REST
次の例では、画像、テキスト、動画のデータを使用します。リクエストの本文で、これらのデータ型を任意に組み合わせて使用できます。
このサンプルでは Cloud Storage にある動画を使用しています。video.bytesBase64Encoded フィールドを使用して、動画の base64 エンコード文字列表現を指定することもできます。
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION: プロジェクトのリージョン。たとえば、
us-central1、europe-west2、asia-northeast3です。使用可能なリージョンの一覧については、Vertex AI の生成 AI のロケーションをご覧ください。 - PROJECT_ID: 実際の Google Cloud プロジェクト ID。
- TEXT: エンベディングを取得するターゲット テキスト。例:
a cat - IMAGE_URI: エンベディングを取得するターゲット画像の Cloud Storage URI。例:
gs://my-bucket/embeddings/supermarket-img.pngまた、画像を base64 エンコードのバイト文字列として指定することもできます。
[...] "image": { "bytesBase64Encoded": "B64_ENCODED_IMAGE" } [...] - VIDEO_URI: エンベディングを取得するターゲット動画の Cloud Storage URI。例:
gs://my-bucket/embeddings/supermarket-video.mp4また、動画を base64 エンコードのバイト文字列として指定することもできます。
[...] "video": { "bytesBase64Encoded": "B64_ENCODED_VIDEO" } [...] videoSegmentConfig(START_SECOND, END_SECOND, INTERVAL_SECONDS)。省略可。エンベディングが生成される特定の動画セグメント(秒単位)。例:
[...] "videoSegmentConfig": { "startOffsetSec": 10, "endOffsetSec": 60, "intervalSec": 10 } [...]この構成を使用して、10 秒から 60 秒までの動画データを指定し、[10, 20), [20, 30), [30, 40), [40, 50), [50, 60) の 10 秒の動画間隔のエンベディングを生成します。この動画間隔(
"intervalSec": 10)は、Standard 動画エンベディング モードになり、ユーザーには Standard モードの料金レートで請求されます。videoSegmentConfigを省略すると、サービスはデフォルト値の"videoSegmentConfig": { "startOffsetSec": 0, "endOffsetSec": 120, "intervalSec": 16 }を使用します。この動画間隔("intervalSec": 16)は、Essential 動画エンベディング モードになり、ユーザーには Essential モードの料金レートで請求されます。
HTTP メソッドと URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict
リクエストの本文(JSON):
{
"instances": [
{
"text": "TEXT",
"image": {
"gcsUri": "IMAGE_URI"
},
"video": {
"gcsUri": "VIDEO_URI",
"videoSegmentConfig": {
"startOffsetSec": START_SECOND,
"endOffsetSec": END_SECOND,
"intervalSec": INTERVAL_SECONDS
}
}
}
]
}
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict"
PowerShell
リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/multimodalembedding@001:predict" | Select-Object -Expand Content
{
"predictions": [
{
"textEmbedding": [
0.0105433334,
-0.00302835181,
0.00656806398,
0.00603460241,
[...]
0.00445805816,
0.0139605571,
-0.00170318608,
-0.00490092579
],
"videoEmbeddings": [
{
"startOffsetSec": 0,
"endOffsetSec": 7,
"embedding": [
-0.00673126569,
0.0248149596,
0.0128901172,
0.0107588246,
[...]
-0.00180952181,
-0.0054573305,
0.0117037306,
0.0169312079
]
}
],
"imageEmbedding": [
-0.00728622358,
0.031021487,
-0.00206603738,
0.0273937676,
[...]
-0.00204976718,
0.00321615417,
0.0121978866,
0.0193375275
]
}
],
"deployedModelId": "DEPLOYED_MODEL_ID"
}
Python
Vertex AI SDK for Python のインストールまたは更新の方法については、Vertex AI SDK for Python をインストールするをご覧ください。詳細については、Python API リファレンス ドキュメントをご覧ください。
Go
このサンプルを試す前に、Vertex AI クイックスタート: クライアント ライブラリの使用にある Go の設定手順を完了してください。詳細については、Vertex AI Go API のリファレンス ドキュメントをご覧ください。
Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
次のステップ
詳細なドキュメントについては、以下をご覧ください。