Rechercher des données d'entrepôt de vidéos en streaming à l'aide de la ligne de commande

Une fois que vous avez créé un entrepôt Vision, l'avez ajouté à une application et déployé l'application, vous pouvez rechercher les données stockées dans l'entrepôt de vidéos en streaming.

Rechercher dans les métadonnées de vidéos en streaming

Pour rechercher des données (assets) dans votre entrepôt (corpus), renseignez SearchAssetsRequest avec le contenu que vous souhaitez trouver. Ce contenu se présente sous différents formats:

  1. criteria : contenu textuel, numérique ou de date fourni par l'utilisateur.
  2. facet_selections : contenu textuel renvoyé par le serveur et sélectionné par l'utilisateur.
  3. content_time_ranges : plages de dates dans lesquelles tous les contenus renvoyés doivent se trouver.

Dans l'exemple suivant, imaginons un entrepôt contenant des images de caméras de sécurité de différents types de magasins à travers le pays. Pour récupérer tous les composants des années 2018 ou 2020 tagués avec l'annotation "state": "California" ou l'annotation "state":"Pennsylvania", envoyez la requête suivante:

REST

Pour rechercher des composants, envoyez une requête POST à l'aide de la méthode projects.locations.corpora.searchAssets.

Dans cet exemple de corps, le champ criteria utilise des valeurs textArray pour fournir deux txt_values: "Californie" et "Pennsylvanie". Vous pouvez également fournir des critères de recherche pour d'autres types de données. Vous ne pouvez spécifier qu'un seul type de critères de recherche dans chaque requête.

Autres options de critères de recherche

Plages d'entiers (inclusives)

    "int_range_array" : {
      "int_ranges": { "start": "5", "end": "10" }
      "int_ranges": { "start": "20", "end": "30" }
    }
    

Plages de nombres à virgule flottante (inclusives)

    "float_range_array" : {
      "float_ranges": { "start": "2.6", "end": "14.3" }
      "float_ranges": { "start": "205.3", "end": "205.8" }
    }
    

Géolocalisations (coordonnées et rayon)

    "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"
      }
    }
    

Valeurs booléennes

    "bool_value" : {
      "value": "true"
    }
    

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

Méthode HTTP et URL :

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets

Corps JSON de la requête :

{
  "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"
    }
  }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Vous devriez recevoir une réponse JSON de ce type :

Pour récupérer la page de résultats suivante, transmettez les paramètres de requête d'origine suivis du next_page_token renvoyé.

Le tableau facet_results affiche le contenu correspondant à la requête d'origine. La réponse ci-dessus indique qu'une des caméras de sécurité est installée dans un magasin d'articles de sport, tandis que l'autre est installée dans un supermarché.

Pour limiter cette requête à la seule vidéo de l'épicerie, renvoyez la même requête avec une sélection de facettes.

Corps JSON de la requête avec sélection de facettes:

{
  "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"
  }
}

Étant donné que la facette Épicerie est sélectionnée, toute réponse contiendra l'annotation "store-type":"Grocery".

Renvoyer les métadonnées des composants de clip lors d'une recherche

L'API Vertex AI Vision permet également aux utilisateurs de spécifier des métadonnées d'extrait supplémentaires à renvoyer avec le résultat de recherche, à l'aide de result_annotation_keys.

REST

Dans cet exemple, la clé d'annotation "camera-location" fournie par l'utilisateur est spécifiée dans le corps de la requête, et la valeur de la clé ("Sunnyvale") est fournie dans la réponse.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

Méthode HTTP et URL :

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets

Corps JSON de la requête :

{
   "page_size": "2",
   "criteria": {
     "field": "state",
     "text_array": {
       "txt_values": "California",
       "txt_values": "Pennsylvania"
     }
   },
   "result_annotation_keys": "camera-location"
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Vous devriez recevoir une réponse JSON de ce type :

Utiliser des critères pour afficher les métadonnées des éléments dans la recherche

Dans les critères de recherche, vous pouvez spécifier si les annotations correspondantes doivent être renvoyées pour chaque élément de résultat de recherche. Cette fonctionnalité est compatible avec un nombre limité de types de schémas de données: INTEGER, FLOAT, BOOLEAN, STRING (EXACT_SEARCH uniquement). L'annotation doit être au niveau de la partition.

Supposons que vous créiez le schéma de données suivant dans un corpus d'entrepôt:

{
  "key": "image-classification",
  "schema_details": {
    "type":"STRING",
    "granularity":"GRANULARITY_PARTITION_LEVEL",
    "search_strategy": {
      "search_strategy_type":"EXACT_SEARCH"
    }
  }
}

Certaines annotations pour "image-classification" sont ingérées dans le corpus à l'aide de l'ingestion de vidéos en streaming ou d'une requête CreateAnnotation.

Une fois les annotations ingérées, vous pouvez rechercher "image-classification" et obtenir les résultats vidéo et leurs annotations correspondantes:

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

Méthode HTTP et URL :

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets

Corps JSON de la requête :

{
  "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"
      },
  }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Vous devriez recevoir une réponse JSON de ce type :

La recherche globale permet aux utilisateurs de saisir des requêtes de recherche au lieu de spécifier des critères individuels. Vous pouvez effectuer des recherches en fonction de critères de type chaîne définis comme pouvant être recherchés dans le schéma de données. Les résultats correspondants sont récupérés et renvoyés.

Pour utiliser cette fonctionnalité, définissez le champ search_query de SearchAssetsRequest:

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

Méthode HTTP et URL :

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets

Corps JSON de la requête :

{
    "page_size": "2",
    "search_query': "Pennsylvania"
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Vous devriez recevoir une réponse JSON de ce type :

Appliquer une spécification de tri pour trier les métadonnées des éléments renvoyés dans la recherche

Vous pouvez utiliser la fonctionnalité de tri pour trier les résultats de recherche en fonction des annotation fournies par l'utilisateur. Cela peut être utile pour trier les résultats avec des types de schémas de données pouvant être triés, tels que les types de chaîne et de nombre.

Pour utiliser cette fonctionnalité, spécifiez schema_key_sorting_strategy, qui nécessite au moins une clé de schéma de données et un ordre croissant/décroissant:

REST

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

Méthode HTTP et URL :

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets

Corps JSON de la requête :

{
    "page_size": "2",
    "schemaKeySortingStrategy":
    { "options": 
      { 
        "data_schema_key": "stream-display-name", 
        "sort_decreasing": true
      } 
    }

}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Vous devriez recevoir un code d'état indiquant le succès de l'opération (2xx), ainsi qu'une réponse vide.

Créer des configurations de recherche

Vision Warehouse permet aux utilisateurs de personnaliser leur expérience de recherche via la configuration de la recherche. La configuration de la recherche utilise des données vidéo, telles que les annotations fournies par l'utilisateur et les insights générés par les Google Cloud modèles de compréhension vidéo, pour fournir à l'utilisateur des options de recherche supplémentaires. Par exemple, si vous souhaitez cibler des extraits avec des véhicules de couleur spécifique à partir des données vidéo sur les voitures de votre entrepôt, vous pouvez utiliser une configuration de recherche spécifique pour votre requête.

Vous pouvez utiliser un SearchConfig pour définir des options de configuration plus précises.

L'exemple suivant montre comment créer une ressource SearchConfig.

Consignes générales

Pour tous les cas d'utilisation, votre requête doit remplir les conditions suivantes pour s'exécuter correctement:

  1. Request.search_configuration.name ne doit pas déjà exister.
  2. Le tableau mapped_fields ne doit pas être vide et doit correspondre à des clés d'annotation existantes fournies par l'utilisateur.
  3. Tous les mapped_fields doivent être du même type.
  4. Tous les mapped_fields doivent partager la configuration de la correspondance exacte/intelligente.
  5. Tous les mapped_fields doivent partager la même précision.

La création d'une SearchConfig peut s'appliquer à plusieurs cas d'utilisation, chacun d'eux étant associé à des consignes distinctes que vous devez suivre.

Créer une configuration de recherche avec des critères de recherche personnalisés

Cette section explique comment mapper un opérateur personnalisé à une ou plusieurs clés d'annotation fournies par l'utilisateur. Dans ce cas, vous devez respecter les consignes générales lorsque vous créez votre requête.

REST

Vous devez spécifier votre nouvel ID SearchConfig à la fin de l'URL de la requête, et non en tant que champ de la requête.

Dans cet exemple, les clés d'annotation fournies par l'utilisateur sont "player", "coach" et "cheerleader".

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • REGIONALIZED_ENDPOINT: le point de terminaison peut inclure un préfixe correspondant à LOCATION_ID, tel que europe-west4-. En savoir plus sur les points de terminaison régionalisés
  • PROJECT_NUMBER: numéro de votre projet Google Cloud.
  • LOCATION_ID: région dans laquelle vous utilisez Vertex AI Vision. Par exemple: us-central1, europe-west4. Consultez les régions disponibles.
  • CORPUS_ID: ID de votre corpus cible.
  • SEARCHCONFIG: nom de votre SearchConfig cible.
    • Dans cet exemple, SearchConfig est person.

Méthode HTTP et URL :

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=person

Corps JSON de la requête :

{
   "search_criteria_property": {
     "mapped_fields": "player",
     "mapped_fields": "coach",
     "mapped_fields": "cheerleader",
  }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Vous devriez recevoir une réponse JSON de ce type :

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/person",
  "searchCriteriaProperty":
    {
      "mappedFields": [
        "player",
        "coach",
        "cheerleader"
      ]
    }
}

Créer une configuration de recherche avec un mappage des facettes en 1:1

Pour créer une facette pour une seule clé d'annotation donnée par l'utilisateur, vous devez vous assurer que Request.search_configuration.facet_property.mapped_fields ne contient qu'un seul élément. La valeur de cet élément doit être un nom de clé d'annotation donné par l'utilisateur.

L'exemple suivant montre comment créer une mise en correspondance de facettes pour la clé d'annotation "Location" fournie par l'utilisateur.

REST

Vous devez spécifier votre nouvel ID SearchConfig à la fin de l'URL de la requête, et non en tant que champ de la requête.

Dans cet exemple, la requête aboutit, car search_config_id (Location) dans l'URL de la requête fait référence à une clé d'annotation existante fournie par l'utilisateur, et mapped_fields contient exactement un élément dont la valeur est égale à search_config_id (Location).

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • REGIONALIZED_ENDPOINT: le point de terminaison peut inclure un préfixe correspondant à LOCATION_ID, tel que europe-west4-. En savoir plus sur les points de terminaison régionalisés
  • PROJECT_NUMBER: numéro de votre projet Google Cloud.
  • LOCATION_ID: région dans laquelle vous utilisez Vertex AI Vision. Par exemple: us-central1, europe-west4. Consultez les régions disponibles.
  • CORPUS_ID: ID de votre corpus cible.
  • SEARCHCONFIG: nom de votre SearchConfig cible.
    • Dans cet exemple, SearchConfig est Location.

Méthode HTTP et URL :

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location

Corps JSON de la requête :

{
   "facet_property": {
     "mapped_fields": "Location",
     "display_name": "Location",
     "result_size": "5",
     "bucket_type":"FACET_BUCKET_TYPE_VALUE"
  }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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
 

Les requêtes suivantes échouent, car elles ne répondent pas aux exigences requises.

Requêtes ayant échoué

Demande 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"
        }
      }"
    

Demande 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"
        }
      }"
    

Échec de la requête 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"
        }
      }"
    

Créer une configuration de recherche avec un mappage personnalisé de 1:1 ou plus

Les clients qui souhaitent créer un mappage entre une valeur de facette personnalisée et une ou plusieurs clés d'annotation fournies par l'utilisateur doivent s'assurer que:

  1. Request.search_configuration doit contenir un SearchCriteriaProperty tel que Request.search_configuration.search_criteria_property.mapped_fields contienne les mêmes éléments que Request.search_configuration.facet_property.mapped_fields.

REST

Vous devez spécifier votre nouvel ID SearchConfig à la fin de l'URL de la requête, et non en tant que champ de la requête.

L'exemple suivant montre comment créer un mappage de facettes pour les clés d'annotation "City" et "State" fournies par l'utilisateur.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • REGIONALIZED_ENDPOINT: le point de terminaison peut inclure un préfixe correspondant à LOCATION_ID, tel que europe-west4-. En savoir plus sur les points de terminaison régionalisés
  • PROJECT_NUMBER: numéro de votre projet Google Cloud.
  • LOCATION_ID: région dans laquelle vous utilisez Vertex AI Vision. Par exemple: us-central1, europe-west4. Consultez les régions disponibles.
  • CORPUS_ID: ID de votre corpus cible.
  • SEARCHCONFIG: nom de votre SearchConfig cible.
    • Dans cet exemple, SearchConfig est Location.

Méthode HTTP et URL :

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location

Corps JSON de la requête :

{
  "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"
  }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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
 

Les requêtes suivantes échouent, car elles ne répondent pas aux exigences requises.

Requêtes ayant échoué

Demande 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"
        }
      }"
    

Demande 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"
        }
      }"
    

Créer une configuration de recherche avec des facettes basées sur des plages

Les facettes de plage sont semblables aux facettes normales, mais chaque bucket de facette couvre une plage continue. Une configuration supplémentaire (range_facet_config) fournit au système des informations sur ces plages de buckets de facettes.

Les attributs de la plage sont disponibles pour:

  1. Entiers
  2. Dates

Il existe trois types de facettes de plage:

  1. Plage fixe : chaque bucket a la même taille.
  2. Plage personnalisée : tailles de bin programmables. (par exemple, logarithmique).
  3. Plage de dates : granularité de bucket fixe de DAY, MONTH et YEAR. Cela ne s'applique qu'aux facettes de plage de dates.

Les mêmes conditions s'appliquent en tant que facettes uniques, avec une validation supplémentaire concernant la spécification de la plage.

Spécification de bucket à plage fixe

L'exemple suivant crée une spécification de facette de plage fixe pour le champ inventory-count, et génère les buckets suivants : [-inf, 0), [0, 10), [10, 20), [20, 30), [30, inf].

REST

Vous devez spécifier votre nouvel ID SearchConfig à la fin de l'URL de la requête, et non en tant que champ de la requête.

Cette requête utilise FixedRangeBucketSpec pour créer plusieurs buckets avec une granularité égale.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • REGIONALIZED_ENDPOINT: le point de terminaison peut inclure un préfixe correspondant à LOCATION_ID, tel que europe-west4-. En savoir plus sur les points de terminaison régionalisés
  • PROJECT_NUMBER: numéro de votre projet Google Cloud.
  • LOCATION_ID: région dans laquelle vous utilisez Vertex AI Vision. Par exemple: us-central1, europe-west4. Consultez les régions disponibles.
  • CORPUS_ID: ID de votre corpus cible.
  • SEARCHCONFIG: nom de votre SearchConfig cible.
    • Dans cet exemple, SearchConfig est inventory-count.

Méthode HTTP et URL :

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=inventory-count

Corps JSON de la requête :

{
  "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
    }
  }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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
 

Spécification du bucket de plage personnalisée

L'exemple suivant crée une spécification de facette de plage fixe pour le champ video-views, et génère les buckets suivants : [inf, 0), [0, 10), [10, 100), [100, 1000), [1000, 10000), [10000, inf).

REST

Vous devez spécifier votre nouvel ID SearchConfig à la fin de l'URL de la requête, et non en tant que champ de la requête.

Cette requête utilise CustomRangeBucketSpec pour spécifier comment les valeurs sont divisées en buckets.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • REGIONALIZED_ENDPOINT: le point de terminaison peut inclure un préfixe correspondant à LOCATION_ID, tel que europe-west4-. En savoir plus sur les points de terminaison régionalisés
  • PROJECT_NUMBER: numéro de votre projet Google Cloud.
  • LOCATION_ID: région dans laquelle vous utilisez Vertex AI Vision. Par exemple: us-central1, europe-west4. Consultez les régions disponibles.
  • CORPUS_ID: ID de votre corpus cible.
  • SEARCHCONFIG: nom de votre SearchConfig cible.
    • Dans cet exemple, SearchConfig est video-views.

Méthode HTTP et URL :

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=video-views

Corps JSON de la requête :

{
  "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
       }
    }
  }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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
 

Spécification de bucket de plage de dates / heures

L'exemple suivant crée une spécification de plage de dates pour le champ film-date avec une granularité DAY.

REST

Vous devez spécifier votre nouvel ID SearchConfig à la fin de l'URL de la requête, et non en tant que champ de la requête.

Cette requête utilise DateTimeBucketSpec pour spécifier comment les valeurs de date sont réparties en buckets.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • REGIONALIZED_ENDPOINT: le point de terminaison peut inclure un préfixe correspondant à LOCATION_ID, tel que europe-west4-. En savoir plus sur les points de terminaison régionalisés
  • PROJECT_NUMBER: numéro de votre projet Google Cloud.
  • LOCATION_ID: région dans laquelle vous utilisez Vertex AI Vision. Par exemple: us-central1, europe-west4. Consultez les régions disponibles.
  • CORPUS_ID: ID de votre corpus cible.
  • SEARCHCONFIG: nom de votre SearchConfig cible.
    • Dans cet exemple, SearchConfig est film-date.

Méthode HTTP et URL :

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=film-date

Corps JSON de la requête :

{
  "facet_property": {
    "mapped_fields": "film-date",
    "display_name": "Film Date",
    "result_size": "5",
    "bucket_type": "FACET_BUCKET_TYPE_DATETIME",
    "datetime_bucket_spec": {
       "granularity": "DAY"
    }
 }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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
 

Une fois ces buckets de facettes créés, vous pouvez les utiliser pour effectuer des recherches dans l'entrepôt.

REST

Cette requête utilise des objets facetSelections pour spécifier un groupe de buckets de facettes.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

Méthode HTTP et URL :

POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets

Corps JSON de la requête :

{
   "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
           }
         }
       }
     }
   }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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
 

Modifier une configuration de recherche

Pour mettre à jour l'SearchConfig actuelle, votre demande doit remplir les conditions suivantes:

  1. Request.searchConfig.name doit déjà exister.
  2. La requête doit contenir au moins un élément searchCriteriaProperty ou facetProperty non vide.
  3. Le tableau mappedFields ne doit pas être vide et doit correspondre aux clés d'annotation existantes fournies par l'utilisateur.
  4. Tous les mappedFields doivent être du même type.
  5. Tous les mappedFields doivent partager la même précision.
  6. Tous les mappedFields doivent partager les mêmes options de correspondance sémantique SearchConfig.

API REST et ligne de commande

L'exemple de code suivant met à jour une ressource de configuration de recherche dans l'entrepôt à l'aide de la méthode projects.locations.corpora.searchConfigs.patch.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • REGIONALIZED_ENDPOINT: le point de terminaison peut inclure un préfixe correspondant à LOCATION_ID, tel que europe-west4-. En savoir plus sur les points de terminaison régionalisés
  • PROJECT: ID ou numéro de votre projet. Google Cloud
  • LOCATION_ID: région dans laquelle vous utilisez Vertex AI Vision. Par exemple: us-central1, europe-west4. Consultez les régions disponibles.
  • CORPUS_ID: ID de votre corpus cible.
  • SEARCHCONFIG_ID: ID de votre SearchConfig cible.
  • "mappedFields": une ou plusieurs clés d'annotation existantes définies par l'utilisateur.

Méthode HTTP et URL :

PATCH https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/SEARCHCONFIG_ID

Corps JSON de la requête :

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/SEARCHCONFIG_ID1",
  "searchCriteriaProperty": {
    "mappedFields": "dataschema2"
  }
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

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

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$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

Vous devriez recevoir une réponse JSON de ce type :

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/SEARCHCONFIG_ID1",
  "searchCriteriaProperty": {
    "mappedFields": [
      "dataschema2"
    ]
  }
}