Una vez que hayas creado un Vision Warehouse, lo hayas añadido a una aplicación y hayas implementado la aplicación, podrás buscar los datos almacenados en el almacén de vídeo en streaming.
Buscar metadatos de vídeos en streaming
Para buscar los datos (assets
) de tu almacén (corpus
), rellena el campo SearchAssetsRequest
con el contenido que quieras encontrar. Este contenido se ofrece en varios formatos:
criteria
: contenido de texto, número o fecha proporcionado por el usuario.facet_selections
: contenido de texto devuelto por el servidor y seleccionado por el usuario.content_time_ranges
: los periodos en los que debe incluirse todo el contenido devuelto.
En el siguiente ejemplo, supongamos que hay un almacén que contiene grabaciones de cámaras de seguridad de diferentes tipos de tiendas de todo el país. Para obtener todos los recursos de los años 2018 o 2020 etiquetados con la anotación "state": "California"
o con la anotación "state":"Pennsylvania"
, envía la siguiente solicitud:
REST
Para buscar recursos, envía una solicitud POST mediante el método projects.locations.corpora.searchAssets.
En este cuerpo de ejemplo, el campocriteria
usa valores textArray
para proporcionar
dos txt_values
: "California" y "Pennsylvania". También puedes proporcionar criterios de búsqueda para otros tipos de datos. Solo puedes especificar un tipo de criterio de búsqueda en cada solicitud.
Opciones de criterios de búsqueda adicionales
Intervalos de números enteros (incluidos)
"int_range_array" : { "int_ranges": { "start": "5", "end": "10" } "int_ranges": { "start": "20", "end": "30" } }
Intervalos de números de coma flotante (incluidos)
"float_range_array" : { "float_ranges": { "start": "2.6", "end": "14.3" } "float_ranges": { "start": "205.3", "end": "205.8" } }
Geolocalizaciones (coordenadas y radio)
"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" } }
Booleanos
"bool_value" : { "value": "true" }
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- REGIONALIZED_ENDPOINT: el endpoint puede incluir un prefijo que coincida con
LOCATION_ID
, comoeurope-west4-
. Consulta más información sobre los puntos finales regionalizados. - PROJECT_NUMBER: tu Google Cloud número de proyecto.
- LOCATION_ID: la región en la que usas Vertex AI Vision. Por ejemplo:
us-central1
,europe-west4
. Consulta las regiones disponibles. - CORPUS_ID: el ID del corpus de destino.
Método HTTP y URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets
Cuerpo JSON de la solicitud:
{ "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" } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$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
Deberías recibir una respuesta JSON similar a la siguiente:
Para obtener la siguiente página de resultados, envía los parámetros de la solicitud original
junto con el next_page_token
devuelto.
La matriz facet_results
muestra el contenido que coincide con la consulta original.
La respuesta anterior indica que una de las cámaras de seguridad está situada en una tienda de artículos deportivos, mientras que la otra está situada en una tienda de comestibles.
Para restringir esta consulta y que solo se muestren las grabaciones de la tienda de comestibles, vuelve a enviar la misma solicitud con una selección de facetas.
Cuerpo JSON de la solicitud con selección de facetas:
{ "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" } }
Como se ha seleccionado la faceta Comida, cualquier respuesta contendrá la anotación "store-type":"Grocery"
.
Devolver los metadatos de los recursos de clip al realizar búsquedas
La API Vertex AI Vision también permite a los usuarios especificar metadatos de clips adicionales que se devuelvan con el resultado de búsqueda mediante result_annotation_keys
.
REST
En este ejemplo, la clave de anotación que ha proporcionado el usuario ("camera-location"
) se especifica en el cuerpo de la solicitud y el valor de la clave ("Sunnyvale"
) se proporciona en la respuesta.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- REGIONALIZED_ENDPOINT: el endpoint puede incluir un prefijo que coincida con
LOCATION_ID
, comoeurope-west4-
. Consulta más información sobre los puntos finales regionalizados. - PROJECT_NUMBER: tu Google Cloud número de proyecto.
- LOCATION_ID: la región en la que usas Vertex AI Vision. Por ejemplo:
us-central1
,europe-west4
. Consulta las regiones disponibles. - CORPUS_ID: el ID del corpus de destino.
Método HTTP y URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets
Cuerpo JSON de la solicitud:
{ "page_size": "2", "criteria": { "field": "state", "text_array": { "txt_values": "California", "txt_values": "Pennsylvania" } }, "result_annotation_keys": "camera-location" }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$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
Deberías recibir una respuesta JSON similar a la siguiente:
Usar criterios para devolver metadatos de recursos en la búsqueda
Puede especificar en los criterios de búsqueda si quiere que se devuelvan las anotaciones coincidentes de cada elemento de resultado de búsqueda. Esta función es compatible con tipos de esquemas de datos limitados: INTEGER
, FLOAT
, BOOLEAN
y STRING
(solo EXACT_SEARCH
). Además, la anotación debe estar a nivel de partición.
Supongamos que crea el siguiente esquema de datos en un corpus de almacén:
{ "key": "image-classification", "schema_details": { "type":"STRING", "granularity":"GRANULARITY_PARTITION_LEVEL", "search_strategy": { "search_strategy_type":"EXACT_SEARCH" } } }
Algunas anotaciones de "image-classification"
se ingieren en el corpus mediante la ingesta de vídeo en streaming o una solicitud CreateAnnotation
.
Una vez que se hayan insertado las anotaciones, puedes buscar
"image-classification"
y obtener resultados de vídeo con sus correspondientes
anotaciones:
REST
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- REGIONALIZED_ENDPOINT: el endpoint puede incluir un prefijo que coincida con
LOCATION_ID
, comoeurope-west4-
. Consulta más información sobre los puntos finales regionalizados. - PROJECT_NUMBER: tu Google Cloud número de proyecto.
- LOCATION_ID: la región en la que usas Vertex AI Vision. Por ejemplo:
us-central1
,europe-west4
. Consulta las regiones disponibles. - CORPUS_ID: el ID del corpus de destino.
Método HTTP y URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets
Cuerpo JSON de la solicitud:
{ "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" }, } }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$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
Deberías recibir una respuesta JSON similar a la siguiente:
Usar la búsqueda global para devolver metadatos de recursos en la búsqueda
La búsqueda global ofrece a los usuarios un lugar donde introducir consultas de búsqueda en lugar de especificar criterios individuales. Puede buscar en función de criterios de tipo cadena definidos como aptos para búsquedas en su esquema de datos. Se recuperan los resultados coincidentes y se te devuelven.
Para usar esta función, define el campo search_query
en SearchAssetsRequest
:
REST
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- REGIONALIZED_ENDPOINT: el endpoint puede incluir un prefijo que coincida con
LOCATION_ID
, comoeurope-west4-
. Consulta más información sobre los puntos finales regionalizados. - PROJECT_NUMBER: tu Google Cloud número de proyecto.
- LOCATION_ID: la región en la que usas Vertex AI Vision. Por ejemplo:
us-central1
,europe-west4
. Consulta las regiones disponibles. - CORPUS_ID: el ID del corpus de destino.
Método HTTP y URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets
Cuerpo JSON de la solicitud:
{ "page_size": "2", "search_query': "Pennsylvania" }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$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
Deberías recibir una respuesta JSON similar a la siguiente:
Aplica una especificación de orden para ordenar los metadatos de los recursos devueltos en la búsqueda
Puedes usar la función de ordenación para ordenar los resultados de búsqueda por annotation
proporcionados por el usuario. Esto puede ser útil para ordenar los resultados con tipos de esquema de datos que se pueden ordenar, como los tipos de cadena y numéricos.
Para usar esta función, especifique schema_key_sorting_strategy
, que requiere al menos una clave de esquema de datos y un orden ascendente o descendente:
REST
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- REGIONALIZED_ENDPOINT: el endpoint puede incluir un prefijo que coincida con
LOCATION_ID
, comoeurope-west4-
. Consulta más información sobre los puntos finales regionalizados. - PROJECT_NUMBER: tu Google Cloud número de proyecto.
- LOCATION_ID: la región en la que usas Vertex AI Vision. Por ejemplo:
us-central1
,europe-west4
. Consulta las regiones disponibles. - CORPUS_ID: el ID del corpus de destino.
Método HTTP y URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets
Cuerpo JSON de la solicitud:
{ "page_size": "2", "schemaKeySortingStrategy": { "options": { "data_schema_key": "stream-display-name", "sort_decreasing": true } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$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
Deberías recibir un código de estado que indique que la operación se ha realizado correctamente (2xx) y una respuesta vacía.
Crear configuraciones de búsqueda
Vision Warehouse permite a los usuarios personalizar su experiencia de búsqueda mediante la configuración de la búsqueda. La configuración de búsqueda usa datos de vídeo, como las anotaciones proporcionadas por los usuarios y las estadísticas generadas por los modelos de Google Cloud comprensión de vídeo, para ofrecer opciones de búsqueda adicionales al usuario. Por ejemplo, si quieres segmentar clips con vehículos de un color específico a partir de datos de vídeo de coches de tu almacén, puedes usar una configuración de búsqueda específica para tu consulta.
Puedes usar un SearchConfig
para definir opciones de configuración más específicas.
En el siguiente ejemplo se muestra cómo crear un recurso SearchConfig
.
Directrices generales
Para todos los casos prácticos, tu solicitud debe cumplir las siguientes condiciones para ejecutarse correctamente:
Request.search_configuration.name
no debe existir ya.- La matriz
mapped_fields
no debe estar vacía y debe asignarse a las claves de anotación existentes proporcionadas por el usuario. - Todos los
mapped_fields
deben ser del mismo tipo. - Todos los
mapped_fields
deben compartir la misma configuración de concordancia exacta o inteligente. - Todos los
mapped_fields
deben tener la misma granularidad.
Hay varios casos prácticos para crear un SearchConfig
, cada uno con directrices distintas que debes seguir.
Crear una configuración de búsqueda con criterios de búsqueda personalizados
En esta sección se describe cómo asignar un operador personalizado a una o varias claves de anotación proporcionadas por el usuario. En ese caso, debes cumplir las directrices generales al crear tu solicitud.
REST
Debe especificar su nuevo ID de SearchConfig
al final de la URL de la solicitud, no como campo de la solicitud.
Las claves de anotación proporcionadas por el usuario en este ejemplo son "player"
, "coach"
y "cheerleader"
.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- REGIONALIZED_ENDPOINT: el endpoint puede incluir un prefijo que coincida con
LOCATION_ID
, comoeurope-west4-
. Consulta más información sobre los puntos finales regionalizados. - PROJECT_NUMBER: tu Google Cloud número de proyecto.
- LOCATION_ID: la región en la que usas Vertex AI Vision. Por ejemplo:
us-central1
,europe-west4
. Consulta las regiones disponibles. - CORPUS_ID: el ID del corpus de destino.
- SEARCHCONFIG: el nombre de tu objetivo
SearchConfig
. - El
SearchConfig
de este ejemplo esperson
.
Método HTTP y URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=person
Cuerpo JSON de la solicitud:
{ "search_criteria_property": { "mapped_fields": "player", "mapped_fields": "coach", "mapped_fields": "cheerleader", } }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$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
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/person", "searchCriteriaProperty": { "mappedFields": [ "player", "coach", "cheerleader" ] } }
Crear una configuración de búsqueda con una asignación de facetas de uno a uno
Para crear una faceta de una sola clave de anotación proporcionada por el usuario, debe asegurarse de que Request.search_configuration.facet_property.mapped_fields
contenga un solo elemento. El valor de este elemento debe ser un nombre de clave de anotación proporcionado por el usuario.
En el siguiente ejemplo se muestra cómo crear una asignación de facetas para la clave de anotación proporcionada por el usuario "Location"
.
REST
Debe especificar su nuevo ID de SearchConfig
al final de la URL de la solicitud, no como campo de la solicitud.
En este ejemplo, la solicitud se realiza correctamente porque search_config_id
(Location
)
en la URL de la solicitud hace referencia a una clave de anotación proporcionada por el usuario, y
mapped_fields
contiene exactamente un elemento con un valor igual a
search_config_id
(Location
).
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- REGIONALIZED_ENDPOINT: el endpoint puede incluir un prefijo que coincida con
LOCATION_ID
, comoeurope-west4-
. Consulta más información sobre los puntos finales regionalizados. - PROJECT_NUMBER: tu Google Cloud número de proyecto.
- LOCATION_ID: la región en la que usas Vertex AI Vision. Por ejemplo:
us-central1
,europe-west4
. Consulta las regiones disponibles. - CORPUS_ID: el ID del corpus de destino.
- SEARCHCONFIG: el nombre de tu objetivo
SearchConfig
. - El
SearchConfig
de este ejemplo esLocation
.
Método HTTP y URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location
Cuerpo JSON de la solicitud:
{ "facet_property": { "mapped_fields": "Location", "display_name": "Location", "result_size": "5", "bucket_type":"FACET_BUCKET_TYPE_VALUE" } }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$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
Las siguientes solicitudes no se han podido completar porque no cumplen los requisitos necesarios.
Solicitudes erróneas
Solicitud 1 fallida:
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" } }"
Solicitud fallida 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" } }"
Solicitud fallida 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" } }"
Crear una configuración de búsqueda con una asignación de facetas personalizada de 1:1 o más
Los clientes que quieran crear una asignación entre un valor de faceta personalizado y una o varias claves de anotación proporcionadas por el usuario deben asegurarse de que se cumplan los siguientes requisitos:
Request.search_configuration
debe contener unSearchCriteriaProperty
de forma queRequest.search_configuration.search_criteria_property.mapped_fields
contenga los mismos elementos queRequest.search_configuration.facet_property.mapped_fields
.
REST
Debe especificar su nuevo ID de SearchConfig
al final de la URL de la solicitud, no como campo de la solicitud.
En el siguiente ejemplo se muestra cómo crear una asignación de facetas para las claves de anotación proporcionadas por el usuario "City"
y "State"
.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- REGIONALIZED_ENDPOINT: el endpoint puede incluir un prefijo que coincida con
LOCATION_ID
, comoeurope-west4-
. Consulta más información sobre los puntos finales regionalizados. - PROJECT_NUMBER: tu Google Cloud número de proyecto.
- LOCATION_ID: la región en la que usas Vertex AI Vision. Por ejemplo:
us-central1
,europe-west4
. Consulta las regiones disponibles. - CORPUS_ID: el ID del corpus de destino.
- SEARCHCONFIG: el nombre de tu objetivo
SearchConfig
. - El
SearchConfig
de este ejemplo esLocation
.
Método HTTP y URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=Location
Cuerpo JSON de la solicitud:
{ "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" } }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$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
Las siguientes solicitudes no se han podido completar porque no cumplen los requisitos necesarios.
Solicitudes erróneas
Solicitud 1 fallida:
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" } }"
Solicitud fallida 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" } }"
Crear una configuración de búsqueda con facetas basadas en intervalos
Las facetas de intervalo son similares a las facetas normales, pero cada contenedor de faceta abarca un intervalo continuo. Una configuración adicional
(range_facet_config
) proporciona al sistema información sobre
estos intervalos de los contenedores de facetas.
Las facetas de intervalo están disponibles en los siguientes casos:
- Números enteros
- Fechas
Hay tres tipos de facetas de intervalo:
- Intervalo fijo: todos los segmentos tienen el mismo tamaño.
- Intervalo personalizado: tamaños de contenedor programables. Por ejemplo, logarítmica.
- Periodo: granularidades de los segmentos fijos de
DAY
,MONTH
yYEAR
. Esto solo se aplica a las facetas de intervalo de fechas.
Se aplican las mismas condiciones que en las facetas individuales, con algunas validaciones adicionales sobre la especificación del intervalo.
Especificación de contenedor de intervalo fijo
En el siguiente ejemplo se crea una especificación de facetado de intervalo fijo para el campo inventory-count
, lo que da como resultado los siguientes contenedores: [-inf, 0), [0, 10), [10, 20), [20, 30), [30, inf]
.
REST
Debe especificar su nuevo ID de SearchConfig
al final de la URL de la solicitud, no como campo de la solicitud.
Esta solicitud usa FixedRangeBucketSpec
para crear varios segmentos con la misma granularidad.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- REGIONALIZED_ENDPOINT: el endpoint puede incluir un prefijo que coincida con
LOCATION_ID
, comoeurope-west4-
. Consulta más información sobre los puntos finales regionalizados. - PROJECT_NUMBER: tu Google Cloud número de proyecto.
- LOCATION_ID: la región en la que usas Vertex AI Vision. Por ejemplo:
us-central1
,europe-west4
. Consulta las regiones disponibles. - CORPUS_ID: el ID del corpus de destino.
- SEARCHCONFIG: el nombre de tu objetivo
SearchConfig
. - El
SearchConfig
de este ejemplo esinventory-count
.
Método HTTP y URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=inventory-count
Cuerpo JSON de la solicitud:
{ "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 } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$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
Especificación de segmento de intervalo personalizado
En el siguiente ejemplo se crea una especificación de facetado de intervalo fijo para el campo video-views
, lo que da como resultado los siguientes contenedores: [inf, 0), [0, 10), [10, 100), [100, 1000), [1000, 10000), [10000, inf)
.
REST
Debe especificar su nuevo ID de SearchConfig
al final de la URL de la solicitud, no como campo de la solicitud.
Esta solicitud usa CustomRangeBucketSpec
para especificar cómo se agrupan los valores.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- REGIONALIZED_ENDPOINT: el endpoint puede incluir un prefijo que coincida con
LOCATION_ID
, comoeurope-west4-
. Consulta más información sobre los puntos finales regionalizados. - PROJECT_NUMBER: tu Google Cloud número de proyecto.
- LOCATION_ID: la región en la que usas Vertex AI Vision. Por ejemplo:
us-central1
,europe-west4
. Consulta las regiones disponibles. - CORPUS_ID: el ID del corpus de destino.
- SEARCHCONFIG: el nombre de tu objetivo
SearchConfig
. - El
SearchConfig
de este ejemplo esvideo-views
.
Método HTTP y URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=video-views
Cuerpo JSON de la solicitud:
{ "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 } } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$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
Especificación del intervalo de fecha y hora
En el siguiente ejemplo se crea una especificación de intervalo de fechas para el campo film-date
con una granularidad de DAY
.
REST
Debe especificar su nuevo ID de SearchConfig
al final de la URL de la solicitud, no como campo de la solicitud.
Esta solicitud usa DateTimeBucketSpec
para especificar cómo se agrupan los valores de fecha.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- REGIONALIZED_ENDPOINT: el endpoint puede incluir un prefijo que coincida con
LOCATION_ID
, comoeurope-west4-
. Consulta más información sobre los puntos finales regionalizados. - PROJECT_NUMBER: tu Google Cloud número de proyecto.
- LOCATION_ID: la región en la que usas Vertex AI Vision. Por ejemplo:
us-central1
,europe-west4
. Consulta las regiones disponibles. - CORPUS_ID: el ID del corpus de destino.
- SEARCHCONFIG: el nombre de tu objetivo
SearchConfig
. - El
SearchConfig
de este ejemplo esfilm-date
.
Método HTTP y URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs?search_config_id=film-date
Cuerpo JSON de la solicitud:
{ "facet_property": { "mapped_fields": "film-date", "display_name": "Film Date", "result_size": "5", "bucket_type": "FACET_BUCKET_TYPE_DATETIME", "datetime_bucket_spec": { "granularity": "DAY" } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$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
Usar selecciones de facetas para buscar
Después de crear estos contenedores de facetas, puede usarlos para buscar en el almacén.
REST
Esta solicitud usa objetos facetSelections
para especificar un grupo de contenedores de facetas.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- REGIONALIZED_ENDPOINT: el endpoint puede incluir un prefijo que coincida con
LOCATION_ID
, comoeurope-west4-
. Consulta más información sobre los puntos finales regionalizados. - PROJECT_NUMBER: tu Google Cloud número de proyecto.
- LOCATION_ID: la región en la que usas Vertex AI Vision. Por ejemplo:
us-central1
,europe-west4
. Consulta las regiones disponibles. - CORPUS_ID: el ID del corpus de destino.
Método HTTP y URL:
POST https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID:searchAssets
Cuerpo JSON de la solicitud:
{ "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 } } } } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$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
Actualizar una configuración de búsqueda
Para actualizar el SearchConfig
actual, tu solicitud debe cumplir los siguientes requisitos:
Request.searchConfig.name
ya debe existir.- La solicitud debe contener al menos un elemento
searchCriteriaProperty
ofacetProperty
que no esté vacío. - La matriz
mappedFields
no debe estar vacía y debe asignarse a las claves de anotación proporcionadas por el usuario. - Todos los
mappedFields
deben ser del mismo tipo. - Todos los
mappedFields
deben tener la misma granularidad. - Todos los
mappedFields
deben compartir las mismas opciones de coincidencia semánticaSearchConfig
.
REST Y LÍNEA DE COMANDOS
En el siguiente ejemplo de código se actualiza un recurso de configuración de búsqueda de almacén mediante el método projects.locations.corpora.searchConfigs.patch
.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- REGIONALIZED_ENDPOINT: el endpoint puede incluir un prefijo que coincida con
LOCATION_ID
, comoeurope-west4-
. Consulta más información sobre los puntos finales regionalizados. - PROJECT: tu Google Cloud ID de proyecto o número de proyecto.
- LOCATION_ID: la región en la que usas Vertex AI Vision. Por ejemplo:
us-central1
,europe-west4
. Consulta las regiones disponibles. - CORPUS_ID: el ID del corpus de destino.
- SEARCHCONFIG_ID: el ID de tu
SearchConfig
objetivo. "mappedFields"
: una o varias claves de anotación proporcionadas por el usuario.
Método HTTP y URL:
PATCH https://warehouse-visionai.googleapis.com/v1/projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/SEARCHCONFIG_ID
Cuerpo JSON de la solicitud:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/SEARCHCONFIG_ID1", "searchCriteriaProperty": { "mappedFields": "dataschema2" } }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
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
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$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
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION_ID/corpora/CORPUS_ID/searchConfigs/SEARCHCONFIG_ID1", "searchCriteriaProperty": { "mappedFields": [ "dataschema2" ] } }