Cómo buscar datos del almacén de videos de transmisión continua con la línea de comandos

Después de crear un almacén de Vision, agregarlo a una app y, luego, implementarla, puedes buscar los datos almacenados en el almacén de videos de transmisión.

Cómo buscar metadatos de videos de transmisión

Para buscar los datos (assets) en tu almacén (corpus), completa el campo SearchAssetsRequest con el contenido que deseas encontrar. Este contenido se presenta en varios formatos diferentes:

  1. criteria: Es el contenido de texto, número o fecha que proporciona el usuario.
  2. facet_selections: Es el contenido de texto que devuelve el servidor y que selecciona el usuario.
  3. content_time_ranges: Son los períodos en los que debe incluirse todo el contenido devuelto.

En el siguiente ejemplo, considera un almacén que contiene grabaciones de cámaras de seguridad de diferentes tipos de tiendas en todo el país. Para recuperar todos los recursos de los años 2018 o 2020 etiquetados con la anotación "state": "California" o la anotación "state":"Pennsylvania", envía la siguiente solicitud:

REST

Para buscar recursos, envía una solicitud POST con el método projects.locations.corpora.searchAssets.

En este cuerpo de muestra, el campo criteria usa valores de 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

Rangos de números enteros (inclusivos)

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

Rangos de flotación (inclusivos)

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

Ubicaciones geográficas (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 cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • REGIONALIZED_ENDPOINT: El extremo puede incluir un prefijo que coincida con el LOCATION_ID, como europe-west4-. Obtén más información sobre los extremos 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: Es 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 que se muestra a continuación:

Para recuperar la siguiente página de resultados, pasa los parámetros de la solicitud original anexados con el next_page_token devuelto.

El array facet_results muestra el contenido que coincidió con la búsqueda original. La respuesta anterior indica que una de las cámaras de seguridad está ubicada en una tienda de artículos deportivos, mientras que la otra está ubicada en una tienda de comestibles.

Para restringir esta búsqueda y mostrar solo el video de la tienda de comestibles, devuelve 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"
  }
}

Dado que se seleccionó la faceta Grocery, cualquier respuesta contendrá la anotación "store-type":"Grocery".

Devuelve los metadatos de los recursos de clip cuando se realiza una búsqueda

La API de Vertex AI Vision también permite a los usuarios especificar metadatos de clips adicionales para que se muestren con el resultado de la búsqueda, a través de result_annotation_keys.

REST

En este ejemplo, la clave de anotación proporcionada por 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 cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • REGIONALIZED_ENDPOINT: El extremo puede incluir un prefijo que coincida con el LOCATION_ID, como europe-west4-. Obtén más información sobre los extremos 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: Es 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 que se muestra a continuación:

Usa criterios para devolver los metadatos de los activos en la búsqueda

En los criterios de búsqueda, puedes especificar si se deben devolver las anotaciones coincidentes para cada elemento del resultado de la búsqueda. Esta función es compatible con tipos de esquemas de datos limitados: INTEGER, FLOAT, BOOLEAN, STRING (solo EXACT_SEARCH) y la anotación debe ser a nivel de la partición.

Supongamos que creas 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 para "image-classification" se incorporan al corpus a través de la incorporación de videos en transmisión o una solicitud de CreateAnnotation.

Después de que se hayan procesado las anotaciones, puedes buscar "image-classification" y obtener resultados de videos y sus anotaciones correspondientes:

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • REGIONALIZED_ENDPOINT: El extremo puede incluir un prefijo que coincida con el LOCATION_ID, como europe-west4-. Obtén más información sobre los extremos 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: Es 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 que se muestra a continuación:

La búsqueda global proporciona un lugar para que los usuarios ingresen consultas de búsqueda, en lugar de especificar criterios individuales. Puedes realizar búsquedas con criterios de tipo cadena que estén configurados como aptos para la búsqueda en su esquema de datos. Se recuperan los resultados coincidentes y se te devuelven.

Para usar esta función, establece el campo search_query en SearchAssetsRequest:

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • REGIONALIZED_ENDPOINT: El extremo puede incluir un prefijo que coincida con el LOCATION_ID, como europe-west4-. Obtén más información sobre los extremos 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: Es 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 que se muestra a continuación:

Aplica la especificación de ordenamiento a los metadatos de los activos devueltos en la búsqueda

Puedes usar la función de ordenamiento para ordenar los resultados de la búsqueda según el annotation proporcionado por el usuario. Esto puede ser útil para ordenar los resultados con tipos de esquemas de datos que se pueden ordenar, como los tipos numéricos y de cadena.

Para usar esta función, especifica schema_key_sorting_strategy, que requiere al menos una clave de esquema de datos y un orden ascendente o descendente:

REST

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • REGIONALIZED_ENDPOINT: El extremo puede incluir un prefijo que coincida con el LOCATION_ID, como europe-west4-. Obtén más información sobre los extremos 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: Es 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 exitoso (2xx) y una respuesta vacía.

Crea configuraciones de búsqueda

Vision Warehouse permite a los usuarios personalizar su experiencia de búsqueda a través de la configuración de búsqueda. La Configuración de la Búsqueda usa datos de video, como las anotaciones proporcionadas por el usuario y las estadísticas generadas por los modelos de comprensión de video de Google Cloud , para brindar opciones de búsqueda adicionales al usuario. Por ejemplo, si deseas segmentar clips con vehículos de colores específicos a partir de los datos de videos de automóviles en tu almacén, puedes usar una configuración de búsqueda específica para tu consulta.

Puedes usar un SearchConfig para establecer opciones de configuración más detalladas.

En el siguiente ejemplo, se muestra cómo crear un recurso SearchConfig.

Lineamientos generales

Para todos los casos de uso, tu solicitud debe cumplir con las siguientes condiciones para ejecutarse correctamente:

  1. Request.search_configuration.name no debe existir.
  2. El array mapped_fields no debe estar vacío y debe asignarse a las claves de anotación existentes proporcionadas por el usuario.
  3. Todos los mapped_fields deben ser del mismo tipo.
  4. Todos los mapped_fields deben compartir la misma configuración de concordancia exacta o inteligente.
  5. Todos los mapped_fields deben compartir el mismo nivel de detalle.

Existen varios casos de uso para crear un SearchConfig, cada uno con lineamientos distintos que debes seguir.

Crea 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 más claves de anotación proporcionadas por el usuario. En este caso, debes cumplir con los lineamientos generales cuando compiles tu solicitud.

REST

Debes especificar tu nuevo ID de SearchConfig al final de la URL de la solicitud, no como un campo en la solicitud.

En este ejemplo, las claves de anotación proporcionadas por el usuario son "player", "coach" y "cheerleader".

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • REGIONALIZED_ENDPOINT: El extremo puede incluir un prefijo que coincida con el LOCATION_ID, como europe-west4-. Obtén más información sobre los extremos 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: Es el ID del corpus de destino.
  • SEARCHCONFIG: Es el nombre de tu SearchConfig objetivo.
    • El SearchConfig en este ejemplo es person.

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 que se muestra a continuación:

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

Crea una configuración de búsqueda con una asignación de facetas 1:1

Para crear una faceta para una sola clave de anotación proporcionada por el usuario, debes asegurarte de que Request.search_configuration.facet_property.mapped_fields contenga un solo elemento. El valor de este elemento debe ser el nombre de una clave de anotación proporcionada 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

Debes especificar tu nuevo ID de SearchConfig al final de la URL de la solicitud, no como un campo en la solicitud.

En este ejemplo, la solicitud se realiza correctamente porque el search_config_id (Location) en la URL de solicitud hace referencia a una clave de anotación existente proporcionada por el usuario, y mapped_fields contiene exactamente un elemento con un valor igual a search_config_id (Location).

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • REGIONALIZED_ENDPOINT: El extremo puede incluir un prefijo que coincida con el LOCATION_ID, como europe-west4-. Obtén más información sobre los extremos 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: Es el ID del corpus de destino.
  • SEARCHCONFIG: Es el nombre de tu SearchConfig objetivo.
    • El SearchConfig en este ejemplo es Location.

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 fallan porque no cumplen con los requisitos necesarios.

Solicitudes con errores

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

Crea una configuración de búsqueda con una asignación de facetas personalizada de 1:1 o más

Los clientes que deseen crear una asignación entre un valor de faceta personalizado y una o más claves de anotación proporcionadas por el usuario deben asegurarse de lo siguiente:

  1. Request.search_configuration debe contener un SearchCriteriaProperty de modo que Request.search_configuration.search_criteria_property.mapped_fields contenga los mismos elementos que Request.search_configuration.facet_property.mapped_fields.

REST

Debes especificar tu nuevo ID de SearchConfig al final de la URL de la solicitud, no como un campo en 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 cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • REGIONALIZED_ENDPOINT: El extremo puede incluir un prefijo que coincida con el LOCATION_ID, como europe-west4-. Obtén más información sobre los extremos 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: Es el ID del corpus de destino.
  • SEARCHCONFIG: Es el nombre de tu SearchConfig objetivo.
    • El SearchConfig en este ejemplo es Location.

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 fallan porque no cumplen con los requisitos necesarios.

Solicitudes con errores

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

Crea una configuración de búsqueda con facetas basadas en rangos

Las facetas de rango son similares a las facetas normales, pero cada bucket de faceta abarca un intervalo continuo. Una configuración adicional (range_facet_config) le brinda al sistema información sobre estos rangos de bucket de facetas.

Las facetas de rango están disponibles para lo siguiente:

  1. Números enteros
  2. Fechas

Existen tres tipos de facetas de rango:

  1. Rango fijo: Cada bucket tiene el mismo tamaño.
  2. Intervalo personalizado: Tamaños de bucket programables. Por ejemplo, logarítmica.
  3. Período: Granularidades de bucket fijas de DAY, MONTH y YEAR. Esto solo se aplica a las facetas de período.

Se aplican las mismas condiciones que para las facetas singulares, con cierta validación adicional en relación con la especificación del rango.

Especificación de bucket de rango fijo

En el siguiente ejemplo, se crea una especificación de faceta de rango fijo para el campo inventory-count, lo que genera los buckets discretizaciones: [-inf, 0), [0, 10), [10, 20), [20, 30), [30, inf].

REST

Debes especificar tu nuevo ID de SearchConfig al final de la URL de la solicitud, no como un campo en la solicitud.

Esta solicitud usa FixedRangeBucketSpec para crear varios buckets con la misma granularidad.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • REGIONALIZED_ENDPOINT: El extremo puede incluir un prefijo que coincida con el LOCATION_ID, como europe-west4-. Obtén más información sobre los extremos 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: Es el ID del corpus de destino.
  • SEARCHCONFIG: Es el nombre de tu SearchConfig objetivo.
    • El SearchConfig en este ejemplo es inventory-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 un bucket de rango personalizado

En el siguiente ejemplo, se crea una especificación de faceta de rango fijo para el campo video-views, lo que genera los buckets [inf, 0), [0, 10), [10, 100), [100, 1000), [1000, 10000), [10000, inf).

REST

Debes especificar tu nuevo ID de SearchConfig al final de la URL de la solicitud, no como un campo en la solicitud.

Esta solicitud usa CustomRangeBucketSpec para especificar cómo se agrupan los valores en buckets.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • REGIONALIZED_ENDPOINT: El extremo puede incluir un prefijo que coincida con el LOCATION_ID, como europe-west4-. Obtén más información sobre los extremos 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: Es el ID del corpus de destino.
  • SEARCHCONFIG: Es el nombre de tu SearchConfig objetivo.
    • El SearchConfig en este ejemplo es video-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 de bucket del intervalo de fecha y hora

En el siguiente ejemplo, se crea una especificación de rango de fechas para el campo film-date con una granularidad de DAY.

REST

Debes especificar tu nuevo ID de SearchConfig al final de la URL de la solicitud, no como un campo en la solicitud.

Esta solicitud usa DateTimeBucketSpec para especificar cómo se agrupan los valores de fecha en buckets.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • REGIONALIZED_ENDPOINT: El extremo puede incluir un prefijo que coincida con el LOCATION_ID, como europe-west4-. Obtén más información sobre los extremos 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: Es el ID del corpus de destino.
  • SEARCHCONFIG: Es el nombre de tu SearchConfig objetivo.
    • El SearchConfig en este ejemplo es film-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
 

Después de crear estos buckets de facetas, puedes usarlas para buscar en el almacén.

REST

En esta solicitud, se usan objetos facetSelections para especificar un grupo de buckets de facetas.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • REGIONALIZED_ENDPOINT: El extremo puede incluir un prefijo que coincida con el LOCATION_ID, como europe-west4-. Obtén más información sobre los extremos 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: Es 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
 

Actualiza una configuración de búsqueda

Para actualizar el SearchConfig actual, tu solicitud debe cumplir con los siguientes requisitos:

  1. Request.searchConfig.name ya debe existir.
  2. La solicitud debe contener al menos un searchCriteriaProperty o facetProperty no vacío.
  3. El array mappedFields no debe estar vacío y debe asignarse a las claves de anotación existentes proporcionadas por el usuario.
  4. Todos los mappedFields deben ser del mismo tipo.
  5. Todos los mappedFields deben compartir el mismo nivel de detalle.
  6. Todos los mappedFields deben compartir las mismas opciones de coincidencia semántica SearchConfig.

LÍNEA DE REST Y CMD

En el siguiente muestra de código, se actualiza un recurso de configuración de búsqueda de almacén con el método projects.locations.corpora.searchConfigs.patch.

Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

  • REGIONALIZED_ENDPOINT: El extremo puede incluir un prefijo que coincida con el LOCATION_ID, como europe-west4-. Obtén más información sobre los extremos regionalizados.
  • PROJECT: Tu Google Cloud ID del 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: Es el ID del corpus de destino.
  • SEARCHCONFIG_ID: Es el ID de tu SearchConfig objetivo.
  • "mappedFields": Son una o más claves de anotación existentes 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 que se muestra a continuación:

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