画像コーパスを作成して AnalyzeCorpus を実行し、コーパスデータにエンベディング シグナルを生成したら、インデックスとインデックス エンドポイントの作成に進みます。このインデックス エンドポイントにインデックスをデプロイすると、条件フィルタ機能を使用してセマンティック検索を実行できます。検索結果には、関連性スコアで並べ替えられた画像のリストが含まれます。
入力テキストで検索する
corpus で assets を検索するには、目的の検索を次の形式で SearchIndexEndpointRequest に入力します。
text_query: 検索するテキスト クエリ。- 省略可の
criteriaまたはexclusion_criteria: ユーザー提供のアノテーションのフィルタ条件。テキスト、数値、ブール値、日時値に適用できます。
次の例では、自然風景の画像を含むコーパスについて考えてみましょう。「sunset at beach」に関連し、アノテーション "state": "California" がタグ付けされているすべてのアセットを取得するには、次のリクエストを送信します(FIELD_NAME は state に、FIELD_VALUE は California に置き換えます)。
REST とコマンドライン
リクエストのデータを使用する前に、次のように置き換えます。
- REGIONALIZED_ENDPOINT: エンドポイントには、
LOCATION_IDに一致する接頭辞(europe-west4-など)が含まれている場合があります。 リージョン化されたエンドポイントの詳細をご覧ください。 - PROJECT_NUMBER: Google Cloud プロジェクト番号。
- LOCATION_ID: Vertex AI Vision を使用するリージョン。例:
us-central1、europe-west4。利用可能なリージョンをご覧ください。 - INDEX_ENDPOINT_ID: ターゲット インデックス エンドポイントの ID。
HTTP メソッドと URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints/INDEX_ENDPOINT_ID:searchIndexEndpoint
リクエストの本文(JSON):
{
"text_query": "sunset at beach",
"criteria": [
{
"field": "state",
"text_array": {
"txt_values": [
"California"
]
}
}
]
}
リクエストを送信するには、次のいずれかのオプションを選択します。
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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints/INDEX_ENDPOINT_ID:searchIndexEndpoint"
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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints/INDEX_ENDPOINT_ID:searchIndexEndpoint" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{
"searchResultItems": [
{
"asset": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID_1",
"relevance": "0.99"
},
{
"asset": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID_2",
"relevance": "0.98"
}
]
}
入力画像で検索する
ビーチで夕日を撮影した画像がある場合は、その画像を検索クエリとして使用して、類似の画像を取得することもできます。
REST とコマンドライン
リクエストのデータを使用する前に、次のように置き換えます。
- REGIONALIZED_ENDPOINT: エンドポイントには、
LOCATION_IDに一致する接頭辞(europe-west4-など)が含まれている場合があります。 リージョン化されたエンドポイントの詳細をご覧ください。 - PROJECT_NUMBER: Google Cloud プロジェクト番号。
- LOCATION_ID: Vertex AI Vision を使用するリージョン。例:
us-central1、europe-west4。利用可能なリージョンをご覧ください。 - INDEX_ENDPOINT_ID: ターゲット インデックス エンドポイントの ID。
HTTP メソッドと URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints/INDEX_ENDPOINT_ID:searchIndexEndpoint
リクエストの本文(JSON):
{
"image_query": {
"input_image": "IMAGE_BYTES"
},
"criteria": [
{
"field": "FIELD_NAME",
"text_array": {
"txt_values": [
"FIELD_VALUE"
]
}
}
]
}
リクエストを送信するには、次のいずれかのオプションを選択します。
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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints/INDEX_ENDPOINT_ID:searchIndexEndpoint"
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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints/INDEX_ENDPOINT_ID:searchIndexEndpoint" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{
"searchResultItems": [
{
"asset": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID_1",
"relevance": 0.99
},
{
"asset": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID_2",
"relevance": 0.98
}
]
}
既存の画像で検索する
コーパス内の既存の画像アセットを使用して、類似の画像を取得することもできます。最初の検索結果は、関連性スコアが 1.0 の同じ画像アセットになります。
REST とコマンドライン
リクエストのデータを使用する前に、次のように置き換えます。
- REGIONALIZED_ENDPOINT: エンドポイントには、
LOCATION_IDに一致する接頭辞(europe-west4-など)が含まれている場合があります。 リージョン化されたエンドポイントの詳細をご覧ください。 - PROJECT_NUMBER: Google Cloud プロジェクト番号。
- LOCATION_ID: Vertex AI Vision を使用するリージョン。例:
us-central1、europe-west4。利用可能なリージョンをご覧ください。 - INDEX_ENDPOINT_ID: ターゲット インデックス エンドポイントの ID。
- CORPUS_ID: ターゲット コーパスの ID。
- ASSET_ID: ターゲット アセットの ID。
HTTP メソッドと URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints/INDEX_ENDPOINT_ID:searchIndexEndpoint
リクエストの本文(JSON):
{
"image_query": {
"asset": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID"
}
}
リクエストを送信するには、次のいずれかのオプションを選択します。
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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints/INDEX_ENDPOINT_ID:searchIndexEndpoint"
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://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/indexEndpoints/INDEX_ENDPOINT_ID:searchIndexEndpoint" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{
"searchResultItems": [
{
"asset": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID_1",
"relevance": 1.0
},
{
"asset": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/assets/ASSET_ID_2",
"relevance": 0.99
}
]
}