Vision ウェアハウスを作成してアプリに追加し、アプリをデプロイしたら、ストリーミング動画ウェアハウスに保存されているデータを検索できます。
ストリーミング動画のメタデータを検索する
ウェアハウス(corpus
)内のデータ(assets
)を検索するには、検索するコンテンツを SearchAssetsRequest
に入力します。このコンテンツには、次のような形式があります。
criteria
- ユーザーが指定したテキスト、数値、日付のコンテンツ。facet_selections
- サーバーが返したテキスト コンテンツで、ユーザーが選択したものです。content_time_ranges
- 返されるすべてのコンテンツが含まれる日付範囲。
次の例では、全国のさまざまなタイプの店舗のセキュリティ カメラの映像を含む倉庫について考えてみましょう。アノテーション "state": "California"
またはアノテーション "state":"Pennsylvania"
がタグ付けされた 2018 年または 2020 年のすべてのアセットを取得するには、次のリクエストを送信します。
REST
アセットを検索するには、projects.locations.corpora.searchAssets メソッドを使用して POST リクエストを送信します。
このサンプルの本文では、criteria
フィールドで textArray
値を使用して、2 つの txt_values
(「California」と「Pennsylvania」)を指定しています。他のデータ型の検索条件を指定することもできます。1 つのリクエストで指定できる検索条件のタイプは 1 つのみです。その他の検索条件オプション
整数の範囲(両端を含む)
"int_range_array" : { "int_ranges": { "start": "5", "end": "10" } "int_ranges": { "start": "20", "end": "30" } }
浮動小数点数範囲(両端を含む)
"float_range_array" : { "float_ranges": { "start": "2.6", "end": "14.3" } "float_ranges": { "start": "205.3", "end": "205.8" } }
位置情報(座標と半径)
"geo_location_array": { "circle_areas": { "latitude": "37.4221", "longitude": "122.0841", "radius_meter": "500" }, "circle_areas": { "latitude": "12.46523", "longitude": "-95.2146", "radius_meter": "100" } }
ブール値
"bool_value" : { "value": "true" }
リクエストのデータを使用する前に、次のように置き換えます。
- REGIONALIZED_ENDPOINT: エンドポイントには、
LOCATION_ID
に一致する接頭辞(europe-west4-
など)が含まれている場合があります。 リージョン化されたエンドポイントの詳細をご覧ください。 - PROJECT_NUMBER: Google Cloud プロジェクト番号。
- LOCATION_ID: Vertex AI Vision を使用するリージョン。例:
us-central1
、europe-west4
。利用可能なリージョンをご覧ください。 - CORPUS_ID: ターゲット コーパスの ID。
HTTP メソッドと URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets
リクエストの本文(JSON):
{ "page_size": "2", "content_time_ranges": { "date_time_ranges": { "start": { "year":"2018", "month":"1", "day":"1", }, "end": { "year":"2019", "month":"1", "day":"1", } }, "date_time_ranges": { "start": { "year":"2020", "month":"1", "day":"1", }, "end": { "year":"2021", "month":"1", "day":"1", } } }, "criteria": { "field": "state", "text_array": { "txt_values": "California", "txt_values": "Pennsylvania" } } }
リクエストを送信するには、次のいずれかのオプションを選択します。
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/corpora/CORPUS_ID:searchAssets"
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/corpora/CORPUS_ID:searchAssets" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
結果の次のページを取得するには、返された next_page_token
を追加した元のリクエスト パラメータを渡します。
facet_results
配列には、元のクエリに一致したコンテンツが表示されます。上記のレスポンスは、1 台のセキュリティ カメラがスポーツ用品店に設置され、もう 1 台が食料品店に設置されていることを示しています。
このクエリを食料品店の映像のみに制限するには、ファセットの選択を使用して同じリクエストを返します。
ファセット選択を含む JSON 本文のリクエスト:
{ "page_size": "2", "content_time_ranges": { "date_time_ranges": { "start": { "year":"2018", "month":"1", "day":"1", }, "end": { "year":"2018", "month":"12", "day":"31", } }, "date_time_ranges": { "start": { "year":"2020", "month":"1", "day":"1", }, "end": { "year":"2020", "month":"12", "day":"31", } } }, "criteria": { "field": "state", "text_array": { "txt_values": "California", "txt_values": "Pennsylvania" } }, "facet_selections": { "facetId": "state", "displayName": "State", "buckets": { "value": { "stringValue": "California" } }, "buckets": { "value": { "stringValue": "Pennsylvania" } }, "bucketType": "FACET_BUCKET_TYPE_VALUE" }, "facet_selections": { "facetId": "store-type", "displayName": "StoreType", "buckets": { "value": { "stringValue": "Sporting Goods" } }, "buckets": { "value": { "stringValue": "Grocery" }, "selected": "true" }, "bucketType": "FACET_BUCKET_TYPE_VALUE" } }
[Grocery] ファセットが選択されているため、すべてのレスポンスにはアノテーション "store-type":"Grocery"
が含まれます。
検索時にクリップ アセットのメタデータを返す
Vertex AI Vision API では、result_annotation_keys
を使用して、検索結果とともに返される追加のクリップ メタデータを指定することもできます。
REST
この例では、ユーザー提供のアノテーション キー "camera-location"
がリクエスト本文で指定され、キーの値("Sunnyvale"
)がレスポンスで提供されます。
リクエストのデータを使用する前に、次のように置き換えます。
- REGIONALIZED_ENDPOINT: エンドポイントには、
LOCATION_ID
に一致する接頭辞(europe-west4-
など)が含まれている場合があります。 リージョン化されたエンドポイントの詳細をご覧ください。 - PROJECT_NUMBER: Google Cloud プロジェクト番号。
- LOCATION_ID: Vertex AI Vision を使用するリージョン。例:
us-central1
、europe-west4
。利用可能なリージョンをご覧ください。 - CORPUS_ID: ターゲット コーパスの ID。
HTTP メソッドと URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets
リクエストの本文(JSON):
{ "page_size": "2", "criteria": { "field": "state", "text_array": { "txt_values": "California", "txt_values": "Pennsylvania" } }, "result_annotation_keys": "camera-location" }
リクエストを送信するには、次のいずれかのオプションを選択します。
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/corpora/CORPUS_ID:searchAssets"
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/corpora/CORPUS_ID:searchAssets" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
条件を使用して検索でアセットのメタデータを返す
検索結果アイテムごとに一致するアノテーションを返すかどうかは、検索条件で指定できます。この機能は、INTEGER
、FLOAT
、BOOLEAN
、STRING
(EXACT_SEARCH
のみ)の限定されたデータスキーマ型でサポートされています。アノテーションはパーティション レベルで指定する必要があります。
ウェアハウス コーパスに次のデータスキーマを作成するとします。
{ "key": "image-classification", "schema_details": { "type":"STRING", "granularity":"GRANULARITY_PARTITION_LEVEL", "search_strategy": { "search_strategy_type":"EXACT_SEARCH" } } }
"image-classification"
の一部のアノテーションは、ストリーミング動画の取り込みまたは CreateAnnotation
リクエストを使用してコーパスに取り込まれます。
アノテーションが取り込まれたら、"image-classification"
を検索して、動画の結果とそれに対応するアノテーションを取得できます。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- REGIONALIZED_ENDPOINT: エンドポイントには、
LOCATION_ID
に一致する接頭辞(europe-west4-
など)が含まれている場合があります。 リージョン化されたエンドポイントの詳細をご覧ください。 - PROJECT_NUMBER: Google Cloud プロジェクト番号。
- LOCATION_ID: Vertex AI Vision を使用するリージョン。例:
us-central1
、europe-west4
。利用可能なリージョンをご覧ください。 - CORPUS_ID: ターゲット コーパスの ID。
HTTP メソッドと URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets
リクエストの本文(JSON):
{ "page_size": "5", "facet_selections": { "facet_id": "image-classification", "fetch_matched_annotations": "true", "bucket_type": "FACET_BUCKET_TYPE_VALUE", "buckets": { "value": { "string_value": "cat" }, "selected" : "true" }, } }
リクエストを送信するには、次のいずれかのオプションを選択します。
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/corpora/CORPUS_ID:searchAssets"
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/corpora/CORPUS_ID:searchAssets" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
ユニバーサル検索を使用して検索結果にアセット メタデータを返す
グローバル検索では、個々の条件を指定するのではなく、ユーザーが検索クエリを入力できる場所が用意されています。データスキーマで検索可能に設定された文字列タイプの条件に対して検索できます。一致する結果が取得され、返されます。
この機能を使用するには、SearchAssetsRequest
の search_query
フィールドを設定します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- REGIONALIZED_ENDPOINT: エンドポイントには、
LOCATION_ID
に一致する接頭辞(europe-west4-
など)が含まれている場合があります。 リージョン化されたエンドポイントの詳細をご覧ください。 - PROJECT_NUMBER: Google Cloud プロジェクト番号。
- LOCATION_ID: Vertex AI Vision を使用するリージョン。例:
us-central1
、europe-west4
。利用可能なリージョンをご覧ください。 - CORPUS_ID: ターゲット コーパスの ID。
HTTP メソッドと URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets
リクエストの本文(JSON):
{ "page_size": "2", "search_query': "Pennsylvania" }
リクエストを送信するには、次のいずれかのオプションを選択します。
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/corpora/CORPUS_ID:searchAssets"
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/corpora/CORPUS_ID:searchAssets" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
検索で返されたアセット メタデータを並べ替える並べ替え仕様を適用
並べ替え機能を使用すると、ユーザー提供の annotation
で検索結果を並べ替えることができます。これは、文字列型や数値型など、並べ替え可能なデータスキーマ型で結果を並べ替える場合に便利です。
この機能を使用するには、schema_key_sorting_strategy
を指定します。この場合、少なくともデータスキーマキーと昇順または降順の順序が必要です。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- REGIONALIZED_ENDPOINT: エンドポイントには、
LOCATION_ID
に一致する接頭辞(europe-west4-
など)が含まれている場合があります。 リージョン化されたエンドポイントの詳細をご覧ください。 - PROJECT_NUMBER: Google Cloud プロジェクト番号。
- LOCATION_ID: Vertex AI Vision を使用するリージョン。例:
us-central1
、europe-west4
。利用可能なリージョンをご覧ください。 - CORPUS_ID: ターゲット コーパスの ID。
HTTP メソッドと URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets
リクエストの本文(JSON):
{ "page_size": "2", "schemaKeySortingStrategy": { "options": { "data_schema_key": "stream-display-name", "sort_decreasing": true } } }
リクエストを送信するには、次のいずれかのオプションを選択します。
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/corpora/CORPUS_ID:searchAssets"
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/corpora/CORPUS_ID:searchAssets" | Select-Object -Expand Content
成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。
検索構成を作成する
Vision Warehouse では、検索構成を使用して検索エクスペリエンスをカスタマイズできます。検索構成では、ユーザー提供のアノテーションや、 Google Cloud 動画理解モデルによって生成された分析情報などの動画データを使用して、ユーザーに追加の検索オプションを提供します。たとえば、倉庫内の自動車動画データから特定の色の自動車を含むクリップをターゲットにする場合は、クエリに特定の検索構成を使用できます。
SearchConfig
を使用して、より詳細な構成オプションを設定できます。
次の例は、SearchConfig
リソースを作成する方法を示しています。
一般的なガイドライン
すべてのユースケースで、リクエストが正常に実行されるには、次の条件を満たしている必要があります。
Request.search_configuration.name
はすでに存在していない必要があります。mapped_fields
配列は空にせず、ユーザー指定の既存のアノテーションキーにマッピングする必要があります。- すべての
mapped_fields
は同じ型でなければなりません。 - すべての
mapped_fields
が完全一致またはスマート マッチの設定を共有する必要があります。 - すべての
mapped_fields
は同じ粒度を共有する必要があります。
SearchConfig
を作成するユースケースはいくつかあり、それぞれに従う必要がある独自のガイドラインがあります。
カスタム検索条件を含む検索構成を作成する
このセクションでは、カスタム演算子をユーザー指定のアノテーション キーにマッピングする方法について説明します。この場合、リクエストを作成するときに一般的なガイドラインを満たす必要があります。
REST
新しい SearchConfig
ID は、リクエストのフィールドとしてではなく、リクエスト URL の末尾に指定する必要があります。
この例では、ユーザー指定のアノテーション キーは "player"
、"coach"
、"cheerleader"
です。
リクエストのデータを使用する前に、次のように置き換えます。
- REGIONALIZED_ENDPOINT: エンドポイントには、
LOCATION_ID
に一致する接頭辞(europe-west4-
など)が含まれている場合があります。 リージョン化されたエンドポイントの詳細をご覧ください。 - PROJECT_NUMBER: Google Cloud プロジェクト番号。
- LOCATION_ID: Vertex AI Vision を使用するリージョン。例:
us-central1
、europe-west4
。利用可能なリージョンをご覧ください。 - CORPUS_ID: ターゲット コーパスの ID。
- SEARCHCONFIG: ターゲット
SearchConfig
の名前。 - この例の
SearchConfig
はperson
です。
HTTP メソッドと URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=person
リクエストの本文(JSON):
{ "search_criteria_property": { "mapped_fields": "player", "mapped_fields": "coach", "mapped_fields": "cheerleader", } }
リクエストを送信するには、次のいずれかのオプションを選択します。
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/corpora/CORPUS_ID/searchConfigs?search_config_id=person"
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/corpora/CORPUS_ID/searchConfigs?search_config_id=person" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/person", "searchCriteriaProperty": { "mappedFields": [ "player", "coach", "cheerleader" ] } }
1:1 ファセット マッピングを使用して検索構成を作成する
ユーザー指定のアノテーション キーにファセットを作成するには、Request.search_configuration.facet_property.mapped_fields
に 1 つの要素が含まれていることを確認する必要があります。この要素の値は、ユーザー指定のアノテーション キー名である必要があります。
次の例は、ユーザー指定のアノテーション キー "Location"
のファセット マッピングを作成する方法を示しています。
REST
新しい SearchConfig
ID は、リクエストのフィールドとしてではなく、リクエスト URL の末尾に指定する必要があります。
この例では、リクエスト URL の search_config_id
(Location
)がユーザー指定の既存のアノテーション キーを参照し、mapped_fields
に search_config_id
(Location
)と同じ値を持つ要素が 1 つだけ含まれているため、リクエストは成功します。
リクエストのデータを使用する前に、次のように置き換えます。
- REGIONALIZED_ENDPOINT: エンドポイントには、
LOCATION_ID
に一致する接頭辞(europe-west4-
など)が含まれている場合があります。 リージョン化されたエンドポイントの詳細をご覧ください。 - PROJECT_NUMBER: Google Cloud プロジェクト番号。
- LOCATION_ID: Vertex AI Vision を使用するリージョン。例:
us-central1
、europe-west4
。利用可能なリージョンをご覧ください。 - CORPUS_ID: ターゲット コーパスの ID。
- SEARCHCONFIG: ターゲット
SearchConfig
の名前。 - この例の
SearchConfig
はLocation
です。
HTTP メソッドと URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location
リクエストの本文(JSON):
{ "facet_property": { "mapped_fields": "Location", "display_name": "Location", "result_size": "5", "bucket_type":"FACET_BUCKET_TYPE_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/corpora/CORPUS_ID/searchConfigs?search_config_id=Location"
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/corpora/CORPUS_ID/searchConfigs?search_config_id=Location" | Select-Object -Expand Content
次のリクエストは、必要な要件を満たしていないため失敗します。
失敗したリクエストの数
失敗したリクエスト 1:
curl -X POST \ -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location \ -d "{ "facet_property": { "mapped_fields": "City", /* City is not equal to search_config_id. */ "display_name": "City", "result_size": "5", "bucket_type":"FACET_BUCKET_TYPE_VALUE" } }"
失敗したリクエスト 2:
curl -X POST \ -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=City \ -d "{ "facet_property": { "mapped_fields": "City", /* City doesn't map to an existing user-given annotation key. */ "display_name": "City", "result_size": "5", "bucket_type":"FACET_BUCKET_TYPE_VALUE" } }"
失敗したリクエスト 3:
curl -X POST \ -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location \ -d "{ "facet_property": { "mapped_fields": "Location", "mapped_fields": "City", /* mapped_fields contains more than 1 element. */ "display_name": "Location", "result_size": "5", "bucket_type":"FACET_BUCKET_TYPE_VALUE" } }"
カスタムの 1:1 以上のファセット マッピングを含む検索構成を作成する
カスタム ファセット値とユーザー指定のアノテーション キーとの間のマッピングを作成するクライアントは、次の点に注意する必要があります。
Request.search_configuration
には、Request.search_configuration.search_criteria_property.mapped_fields
にRequest.search_configuration.facet_property.mapped_fields
と同じ要素が含まれるようにSearchCriteriaProperty
を含める必要があります。
REST
新しい SearchConfig
ID は、リクエストのフィールドとしてではなく、リクエスト URL の末尾に指定する必要があります。
次の例は、ユーザー指定のアノテーション キー "City"
と "State"
のファセット マッピングを作成する方法を示しています。
リクエストのデータを使用する前に、次のように置き換えます。
- REGIONALIZED_ENDPOINT: エンドポイントには、
LOCATION_ID
に一致する接頭辞(europe-west4-
など)が含まれている場合があります。 リージョン化されたエンドポイントの詳細をご覧ください。 - PROJECT_NUMBER: Google Cloud プロジェクト番号。
- LOCATION_ID: Vertex AI Vision を使用するリージョン。例:
us-central1
、europe-west4
。利用可能なリージョンをご覧ください。 - CORPUS_ID: ターゲット コーパスの ID。
- SEARCHCONFIG: ターゲット
SearchConfig
の名前。 - この例の
SearchConfig
はLocation
です。
HTTP メソッドと URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location
リクエストの本文(JSON):
{ "search_criteria_property": { "mapped_fields": "City", "mapped_fields": "State", "mapped_fields": "Province", } "facet_property": { "mapped_fields": "City", "mapped_fields": "State", "display_name": "Province", "result_size": "5", "bucket_type":"FACET_BUCKET_TYPE_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/corpora/CORPUS_ID/searchConfigs?search_config_id=Location"
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/corpora/CORPUS_ID/searchConfigs?search_config_id=Location" | Select-Object -Expand Content
次のリクエストは、必要な要件を満たしていないため失敗します。
失敗したリクエストの数
失敗したリクエスト 1:
curl -X POST \ -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location \ -d "{ "facet_property": { /* Request is missing a SearchCriteriaProperty object.*/ "mapped_fields": "City", "mapped_fields": "State", "display_name": "Location", "result_size": "5", "bucket_type":"FACET_BUCKET_TYPE_VALUE" } }"
失敗したリクエスト 2:
curl -X POST \ -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location \ -d "{ "search_criteria_property": { "mapped_fields": "City", "mapped_fields": "State", } "facet_property": { "mapped_fields": "City", "mapped_fields": "State", "mapped_fields": "Province", /* Province is missing from search_criteria_property. */ "display_name": "Location", "result_size": "5", "bucket_type":"FACET_BUCKET_TYPE_VALUE" } }"
範囲ベースのファセットを含む検索構成を作成する
範囲ファセットは通常のファセットに似ていますが、各ファセット バケットは連続した範囲をカバーします。追加の構成(range_facet_config
)により、これらのファセット バケット範囲に関するシステム情報が提供されます。
範囲のファセットは、次の項目で使用できます。
- 整数
- 日付
範囲ファセットには次の 3 種類があります。
- 固定範囲 - 各バケットのサイズは同じです。
- カスタム範囲 - プログラム可能なバケットサイズ。(例: 対数)。
- 期間 - バケットの粒度は
DAY
、MONTH
、YEAR
に固定されています。これは期間ファセットにのみ適用されます。
単一のファセットと同じ条件が適用されますが、範囲の指定に関する追加の検証が行われます。
固定範囲バケットの指定
次の例では、フィールド inventory-count
に固定範囲のファセット仕様を作成し、結果としてバケット [-inf, 0), [0, 10), [10, 20), [20, 30), [30, inf]
が作成されます。
REST
新しい SearchConfig
ID は、リクエストのフィールドとしてではなく、リクエスト URL の末尾に指定する必要があります。
このリクエストでは、FixedRangeBucketSpec
を使用して、同じ粒度の複数のバケットを作成します。
リクエストのデータを使用する前に、次のように置き換えます。
- REGIONALIZED_ENDPOINT: エンドポイントには、
LOCATION_ID
に一致する接頭辞(europe-west4-
など)が含まれている場合があります。 リージョン化されたエンドポイントの詳細をご覧ください。 - PROJECT_NUMBER: Google Cloud プロジェクト番号。
- LOCATION_ID: Vertex AI Vision を使用するリージョン。例:
us-central1
、europe-west4
。利用可能なリージョンをご覧ください。 - CORPUS_ID: ターゲット コーパスの ID。
- SEARCHCONFIG: ターゲット
SearchConfig
の名前。 - この例の
SearchConfig
はinventory-count
です。
HTTP メソッドと URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=inventory-count
リクエストの本文(JSON):
{ "facet_property": { "mapped_fields": "inventory-count", "display_name": "Inventory Count", "result_size": "5", "bucket_type":"FACET_BUCKET_TYPE_FIXED_RANGE", "fixed_range_bucket_spec": { "bucket_start": { "integer_value": 0 }, "bucket_granularity": { "integer_value": 10 }, "bucket_count": 5 } } }
リクエストを送信するには、次のいずれかのオプションを選択します。
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/corpora/CORPUS_ID/searchConfigs?search_config_id=inventory-count"
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/corpora/CORPUS_ID/searchConfigs?search_config_id=inventory-count" | Select-Object -Expand Content
カスタム範囲バケットの仕様
次の例では、フィールド video-views
に固定範囲のファセット仕様を作成し、結果としてバケット [inf, 0), [0, 10), [10, 100), [100, 1000), [1000, 10000), [10000, inf)
が作成されます。
REST
新しい SearchConfig
ID は、リクエストのフィールドとしてではなく、リクエスト URL の末尾に指定する必要があります。
このリクエストでは、CustomRangeBucketSpec
を使用して値のバケット化方法を指定しています。
リクエストのデータを使用する前に、次のように置き換えます。
- REGIONALIZED_ENDPOINT: エンドポイントには、
LOCATION_ID
に一致する接頭辞(europe-west4-
など)が含まれている場合があります。 リージョン化されたエンドポイントの詳細をご覧ください。 - PROJECT_NUMBER: Google Cloud プロジェクト番号。
- LOCATION_ID: Vertex AI Vision を使用するリージョン。例:
us-central1
、europe-west4
。利用可能なリージョンをご覧ください。 - CORPUS_ID: ターゲット コーパスの ID。
- SEARCHCONFIG: ターゲット
SearchConfig
の名前。 - この例の
SearchConfig
はvideo-views
です。
HTTP メソッドと URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=video-views
リクエストの本文(JSON):
{ "facet_property": { "mapped_fields": "video-views", "display_name": "Video Views", "result_size": "6", "bucket_type":"FACET_BUCKET_TYPE_CUSTOM_RANGE", "custom_range_bucket_spec": { "endpoints": { "integer_value": 0 }, "endpoints": { "integer_value": 10 }, "endpoints": { "integer_value": 100 }, "endpoints": { "integer_value": 1000 }, "endpoints": { "integer_value": 10000 } } } }
リクエストを送信するには、次のいずれかのオプションを選択します。
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/corpora/CORPUS_ID/searchConfigs?search_config_id=video-views"
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/corpora/CORPUS_ID/searchConfigs?search_config_id=video-views" | Select-Object -Expand Content
日時範囲バケットの指定
次の例では、DAY
の粒度でフィールド film-date
の日付範囲仕様を作成します。
REST
新しい SearchConfig
ID は、リクエストのフィールドとしてではなく、リクエスト URL の末尾に指定する必要があります。
このリクエストでは、DateTimeBucketSpec
を使用して日付値のバケット化方法を指定しています。
リクエストのデータを使用する前に、次のように置き換えます。
- REGIONALIZED_ENDPOINT: エンドポイントには、
LOCATION_ID
に一致する接頭辞(europe-west4-
など)が含まれている場合があります。 リージョン化されたエンドポイントの詳細をご覧ください。 - PROJECT_NUMBER: Google Cloud プロジェクト番号。
- LOCATION_ID: Vertex AI Vision を使用するリージョン。例:
us-central1
、europe-west4
。利用可能なリージョンをご覧ください。 - CORPUS_ID: ターゲット コーパスの ID。
- SEARCHCONFIG: ターゲット
SearchConfig
の名前。 - この例の
SearchConfig
はfilm-date
です。
HTTP メソッドと URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=film-date
リクエストの本文(JSON):
{ "facet_property": { "mapped_fields": "film-date", "display_name": "Film Date", "result_size": "5", "bucket_type": "FACET_BUCKET_TYPE_DATETIME", "datetime_bucket_spec": { "granularity": "DAY" } } }
リクエストを送信するには、次のいずれかのオプションを選択します。
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/corpora/CORPUS_ID/searchConfigs?search_config_id=film-date"
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/corpora/CORPUS_ID/searchConfigs?search_config_id=film-date" | Select-Object -Expand Content
ファセット選択を使用して検索する
これらのファセット バケットを作成したら、それらを使用してウェアハウスを検索できます。
REST
このリクエストでは、facetSelections
オブジェクトを使用して、ファセット バケットのグループを指定します。
リクエストのデータを使用する前に、次のように置き換えます。
- REGIONALIZED_ENDPOINT: エンドポイントには、
LOCATION_ID
に一致する接頭辞(europe-west4-
など)が含まれている場合があります。 リージョン化されたエンドポイントの詳細をご覧ください。 - PROJECT_NUMBER: Google Cloud プロジェクト番号。
- LOCATION_ID: Vertex AI Vision を使用するリージョン。例:
us-central1
、europe-west4
。利用可能なリージョンをご覧ください。 - CORPUS_ID: ターゲット コーパスの ID。
HTTP メソッドと URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets
リクエストの本文(JSON):
{ "page_size": "10", "facet_selections": { "facet_id": "inventory-count", "buckets": { "range": { "end" : { "integer_value": 0 } } }, "buckets": { "range": { "start" : { "integer_value": 20 }, "end" : { "integer_value": 30 } } } }, "facet_selections": { "facet_id": "video-views", "buckets": { "range": { "start" : { "integer_value": 100 }, "end" : { "integer_value": 1000 } } } }, "facet_selections": { "facet_id": "film-date", "buckets": { "range": { "start" : { "datetime_value": { "year": 2022, "month": 9, "day": 10 } }, "end" : { "datetime_value": { "year": 2022, "month": 9, "day": 11 } } } } } }
リクエストを送信するには、次のいずれかのオプションを選択します。
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/corpora/CORPUS_ID:searchAssets"
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/corpora/CORPUS_ID:searchAssets" | Select-Object -Expand Content
検索構成を更新する
現在の SearchConfig
を更新するには、リクエストが次の要件を満たしている必要があります。
Request.searchConfig.name
はすでに存在している必要があります。- リクエストには、空でない
searchCriteriaProperty
またはfacetProperty
を少なくとも 1 つ含める必要があります。 mappedFields
配列は空にせず、ユーザー指定の既存のアノテーション キーにマッピングする必要があります。- すべての
mappedFields
は同じ型でなければなりません。 - すべての
mappedFields
は同じ粒度を共有する必要があります。 - すべての
mappedFields
は、同じセマンティックSearchConfig
マッチ オプションを共有する必要があります。
REST とコマンドライン
次のコードサンプルは、projects.locations.corpora.searchConfigs.patch
メソッドを使用して倉庫検索構成リソースを更新します。
リクエストのデータを使用する前に、次のように置き換えます。
- REGIONALIZED_ENDPOINT: エンドポイントには、
LOCATION_ID
に一致する接頭辞(europe-west4-
など)が含まれている場合があります。 リージョン化されたエンドポイントの詳細をご覧ください。 - PROJECT: 実際の Google Cloud プロジェクト ID またはプロジェクト番号。
- LOCATION_ID: Vertex AI Vision を使用するリージョン。例:
us-central1
、europe-west4
。利用可能なリージョンをご覧ください。 - CORPUS_ID: ターゲット コーパスの ID。
- SEARCHCONFIG_ID: ターゲット
SearchConfig
の ID。 "mappedFields"
: ユーザーが指定した既存のアノテーション キーを 1 つ以上指定します。
HTTP メソッドと URL:
PATCH https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/SEARCHCONFIG_ID
リクエストの本文(JSON):
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/SEARCHCONFIG_ID1", "searchCriteriaProperty": { "mappedFields": "dataschema2" } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X PATCH \
-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/corpora/CORPUS_ID/searchConfigs/SEARCHCONFIG_ID"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/SEARCHCONFIG_ID" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/SEARCHCONFIG_ID1", "searchCriteriaProperty": { "mappedFields": [ "dataschema2" ] } }