Pesquisar dados do data warehouse de streaming de vídeo usando a linha de comando

Depois de criar um Vision Warehouse, adicioná-lo a um app e implantar o app, você pode pesquisar os dados armazenados no data warehouse de vídeo por streaming.

Pesquisar metadados de vídeos de streaming

Para pesquisar os dados (assets) no seu data warehouse (corpus), preencha o SearchAssetsRequest com o conteúdo que você quer encontrar. Esse conteúdo vem em alguns formatos diferentes:

  1. criteria: conteúdo de texto, número ou data fornecido pelo usuário.
  2. facet_selections: conteúdo de texto retornado pelo servidor e selecionado pelo usuário.
  3. content_time_ranges: períodos em que todo o conteúdo retornado precisa se enquadrar.

No exemplo a seguir, considere um armazém que contém imagens de câmeras de segurança de diferentes tipos de lojas em todo o país. Para recuperar todos os recursos de 2018 ou 2020 marcados com a anotação "state": "California" ou "state":"Pennsylvania", envie a seguinte solicitação:

REST

Para pesquisar recursos, envie uma solicitação POST usando o método projects.locations.corpora.searchAssets.

Neste corpo de exemplo, o campo criteria usa valores textArray para fornecer dois txt_values: "California" e "Pennsylvania". Você também pode fornecer critérios de pesquisa para outros tipos de dados. Só é possível especificar um tipo de critério de pesquisa em cada solicitação.

Outras opções de critérios de pesquisa

Intervalos de números inteiros (inclusivos)

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

Intervalos de ponto flutuante (inclusivos)

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

Geolocalizações (coordenada e raio)

    "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 os dados da solicitação abaixo, faça as substituições a seguir:

  • REGIONALIZED_ENDPOINT: o endpoint pode incluir um prefixo correspondente ao LOCATION_ID, como europe-west4-. Saiba mais sobre os endpoints regionalizados.
  • PROJECT_NUMBER: o número do projeto do Google Cloud.
  • LOCATION_ID: a região em que você está usando a Vertex AI Vision. Por exemplo: us-central1, europe-west4. Consulte as regiões disponíveis.
  • CORPUS_ID: o ID do corpus de destino.

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "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 a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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

Você receberá uma resposta JSON semelhante a esta:

Para recuperar a próxima página de resultados, transmita os parâmetros de solicitação originais acrescentados ao next_page_token retornado.

A matriz facet_results mostra o conteúdo que correspondeu à consulta original. A resposta acima indica que uma das câmeras de segurança está localizada em uma loja de artigos esportivos, enquanto a outra está em um supermercado.

Para restringir essa consulta e mostrar apenas as imagens do supermercado, transmita a mesma solicitação com uma seleção de facetas.

Corpo JSON da solicitação com seleção 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 a faceta Mercado está selecionada, qualquer resposta vai conter a anotação "store-type":"Grocery".

Retornar metadados de recursos de clipes ao pesquisar

A API Vertex AI Vision também permite que os usuários especifiquem metadados extras de clipes para retornar com o resultado da pesquisa, usando result_annotation_keys.

REST

Neste exemplo, a chave de anotação fornecida pelo usuário "camera-location" é especificada no corpo da solicitação, e o valor da chave ("Sunnyvale") é fornecido na resposta.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • REGIONALIZED_ENDPOINT: o endpoint pode incluir um prefixo correspondente ao LOCATION_ID, como europe-west4-. Saiba mais sobre os endpoints regionalizados.
  • PROJECT_NUMBER: o número do projeto do Google Cloud.
  • LOCATION_ID: a região em que você está usando a Vertex AI Vision. Por exemplo: us-central1, europe-west4. Consulte as regiões disponíveis.
  • CORPUS_ID: o ID do corpus de destino.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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

Você receberá uma resposta JSON semelhante a esta:

Usar critérios para retornar metadados de recursos na pesquisa

É possível especificar nos critérios de pesquisa se as anotações correspondentes devem ser retornadas para cada item de resultado da pesquisa. Esse recurso é compatível com tipos limitados de esquema de dados: INTEGER, FLOAT, BOOLEAN, STRING (somente EXACT_SEARCH), e a anotação precisa estar no nível da partição.

Suponha que você crie o seguinte esquema de dados em um corpus de armazenamento:

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

Algumas anotações para "image-classification" são ingeridas no corpus usando a ingestão de vídeo por streaming ou uma solicitação CreateAnnotation.

Depois que as anotações são ingeridas, você pode pesquisar "image-classification" e receber resultados de vídeo e as anotações correspondentes:

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • REGIONALIZED_ENDPOINT: o endpoint pode incluir um prefixo correspondente ao LOCATION_ID, como europe-west4-. Saiba mais sobre os endpoints regionalizados.
  • PROJECT_NUMBER: o número do projeto do Google Cloud.
  • LOCATION_ID: a região em que você está usando a Vertex AI Vision. Por exemplo: us-central1, europe-west4. Consulte as regiões disponíveis.
  • CORPUS_ID: o ID do corpus de destino.

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "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 a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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

Você receberá uma resposta JSON semelhante a esta:

A pesquisa global oferece um lugar para os usuários inserirem consultas de pesquisa, em vez de especificar critérios individuais. Você pode pesquisar critérios do tipo string definidos como pesquisáveis no esquema de dados. Os resultados correspondentes são recuperados e retornados para você.

Para usar esse recurso, defina o campo search_query em SearchAssetsRequest:

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • REGIONALIZED_ENDPOINT: o endpoint pode incluir um prefixo correspondente ao LOCATION_ID, como europe-west4-. Saiba mais sobre os endpoints regionalizados.
  • PROJECT_NUMBER: o número do projeto do Google Cloud.
  • LOCATION_ID: a região em que você está usando a Vertex AI Vision. Por exemplo: us-central1, europe-west4. Consulte as regiões disponíveis.
  • CORPUS_ID: o ID do corpus de destino.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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

Você receberá uma resposta JSON semelhante a esta:

Aplicar especificação de classificação para ordenar os metadados de recursos retornados na pesquisa

Você pode usar o recurso de classificação para ordenar os resultados da pesquisa por annotation fornecido pelo usuário. Isso pode ser útil para classificar resultados com tipos de esquema de dados que podem ser ordenados, como tipos de string e numéricos.

Para usar esse recurso, especifique schema_key_sorting_strategy, que exige pelo menos uma chave de esquema de dados e ordem crescente/decrescente:

REST

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • REGIONALIZED_ENDPOINT: o endpoint pode incluir um prefixo correspondente ao LOCATION_ID, como europe-west4-. Saiba mais sobre os endpoints regionalizados.
  • PROJECT_NUMBER: o número do projeto do Google Cloud.
  • LOCATION_ID: a região em que você está usando a Vertex AI Vision. Por exemplo: us-central1, europe-west4. Consulte as regiões disponíveis.
  • CORPUS_ID: o ID do corpus de destino.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

}

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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

Você receberá um código de status bem-sucedido (2xx) e uma resposta vazia.

Criar configurações de pesquisa

Com a configuração de pesquisa, os usuários podem personalizar a experiência de pesquisa no Vision Warehouse. A configuração de pesquisa usa dados de vídeo, como anotações fornecidas pelo usuário e insights gerados por modelos de compreensão de vídeo Google Cloud , para oferecer mais opções de pesquisa ao usuário. Por exemplo, se você quiser segmentar clipes com veículos de cores específicas dos dados de vídeo de carro no seu data warehouse, use uma configuração de pesquisa específica para sua consulta.

É possível usar um SearchConfig para definir opções de configuração mais granulares.

O exemplo a seguir mostra como criar um recurso SearchConfig.

Diretrizes gerais

Para todos os casos de uso, sua solicitação precisa atender às seguintes condições para ser executada com sucesso:

  1. Request.search_configuration.name não pode existir.
  2. A matriz mapped_fields não pode estar vazia e precisa ser mapeada para chaves de anotação existentes fornecidas pelo usuário.
  3. Todos os mapped_fields precisam ser do mesmo tipo.
  4. Todas as mapped_fields precisam compartilhar a configuração de correspondência exata/inteligente.
  5. Todos os mapped_fields precisam compartilhar a mesma granularidade.

Há vários casos de uso para criar um SearchConfig, cada um com diretrizes distintas que precisam ser seguidas.

Criar uma configuração de pesquisa com critérios personalizados

Nesta seção, descrevemos como mapear um operador personalizado para uma ou mais chaves de anotação fornecidas pelo usuário. Nesse caso, você precisa seguir as diretrizes gerais ao criar sua solicitação.

REST

Especifique o novo ID SearchConfig no final do URL de solicitação, não como um campo na solicitação.

Neste exemplo, as chaves de anotação fornecidas pelo usuário são "player", "coach" e "cheerleader".

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • REGIONALIZED_ENDPOINT: o endpoint pode incluir um prefixo correspondente ao LOCATION_ID, como europe-west4-. Saiba mais sobre os endpoints regionalizados.
  • PROJECT_NUMBER: o número do projeto do Google Cloud.
  • LOCATION_ID: a região em que você está usando a Vertex AI Vision. Por exemplo: us-central1, europe-west4. Consulte as regiões disponíveis.
  • CORPUS_ID: o ID do corpus de destino.
  • SEARCHCONFIG: o nome da SearchConfig de destino.
    • Neste exemplo, a SearchConfig é person.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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

Você receberá uma resposta JSON semelhante a esta:

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

Criar uma configuração de pesquisa com mapeamento de facetas 1:1

Para criar uma faceta para uma única chave de anotação fornecida pelo usuário, verifique se Request.search_configuration.facet_property.mapped_fields contém um único elemento. O valor desse elemento precisa ser um nome de chave de anotação fornecido pelo usuário.

O exemplo a seguir mostra como criar um mapeamento de facetas para a chave de anotação fornecida pelo usuário "Location".

REST

Especifique o novo ID SearchConfig no final do URL de solicitação, não como um campo na solicitação.

Neste exemplo, a solicitação é bem-sucedida porque o search_config_id (Location) no URL da solicitação faz referência a uma chave de anotação fornecida pelo usuário, and mapped_fields contém exatamente um elemento com um valor igual a search_config_id (Location).

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • REGIONALIZED_ENDPOINT: o endpoint pode incluir um prefixo correspondente ao LOCATION_ID, como europe-west4-. Saiba mais sobre os endpoints regionalizados.
  • PROJECT_NUMBER: o número do projeto do Google Cloud.
  • LOCATION_ID: a região em que você está usando a Vertex AI Vision. Por exemplo: us-central1, europe-west4. Consulte as regiões disponíveis.
  • CORPUS_ID: o ID do corpus de destino.
  • SEARCHCONFIG: o nome da SearchConfig de destino.
    • Neste exemplo, a SearchConfig é Location.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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
 

As solicitações a seguir falham por não atender aos requisitos necessários.

Solicitações com falha

Solicitação 1 com falha:

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

Solicitação com falha 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"
        }
      }"
    

Solicitação com falha 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"
        }
      }"
    

Criar uma configuração de pesquisa com um mapeamento de facetas personalizado de 1:1 ou mais

Os clientes que querem criar um mapeamento entre um valor de atributo personalizado e uma ou mais chaves de anotação fornecidas pelo usuário precisam garantir que:

  1. Request.search_configuration precisa conter um SearchCriteriaProperty para que Request.search_configuration.search_criteria_property.mapped_fields contenha os mesmos elementos que Request.search_configuration.facet_property.mapped_fields.

REST

Especifique o novo ID SearchConfig no final do URL de solicitação, não como um campo na solicitação.

O exemplo a seguir mostra como criar um mapeamento de facetas para as chaves de anotação fornecidas pelo usuário "City" e "State".

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • REGIONALIZED_ENDPOINT: o endpoint pode incluir um prefixo correspondente ao LOCATION_ID, como europe-west4-. Saiba mais sobre os endpoints regionalizados.
  • PROJECT_NUMBER: o número do projeto do Google Cloud.
  • LOCATION_ID: a região em que você está usando a Vertex AI Vision. Por exemplo: us-central1, europe-west4. Consulte as regiões disponíveis.
  • CORPUS_ID: o ID do corpus de destino.
  • SEARCHCONFIG: o nome da SearchConfig de destino.
    • Neste exemplo, a SearchConfig é Location.

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "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 a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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
 

As solicitações a seguir falham por não atender aos requisitos necessários.

Solicitações com falha

Solicitação 1 com falha:

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

Solicitação com falha 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"
        }
      }"
    

Criar uma configuração de pesquisa com refinamentos baseados em intervalos

Os atributos de intervalo são semelhantes aos normais, mas cada bucket de atributo abrange um intervalo contínuo. Uma configuração adicional (range_facet_config) fornece ao sistema informações sobre esses intervalos de agrupamento por faceta.

Os atributos de intervalo estão disponíveis para:

  1. Números inteiros
  2. Datas

Há três tipos de refinamentos por intervalo:

  1. Intervalo fixo: cada bucket tem o mesmo tamanho.
  2. Intervalo personalizado: tamanhos de agrupamento programáveis. Por exemplo, logarítmica.
  3. Período: granularidades fixas de intervalos de DAY, MONTH e YEAR. Isso se aplica apenas a facetas de período.

As mesmas condições se aplicam como facetas únicas, com alguma validação adicional em relação à especificação do intervalo.

Especificação de bucket de período fixo

O exemplo a seguir cria uma especificação de faceta de intervalo fixo para o campo inventory-count, resultando nos agrupamentos: [-inf, 0), [0, 10), [10, 20), [20, 30), [30, inf].

REST

Especifique o novo ID SearchConfig no final do URL de solicitação, não como um campo na solicitação.

Essa solicitação usa o FixedRangeBucketSpec para criar vários intervalos com granularidades iguais.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • REGIONALIZED_ENDPOINT: o endpoint pode incluir um prefixo correspondente ao LOCATION_ID, como europe-west4-. Saiba mais sobre os endpoints regionalizados.
  • PROJECT_NUMBER: o número do projeto do Google Cloud.
  • LOCATION_ID: a região em que você está usando a Vertex AI Vision. Por exemplo: us-central1, europe-west4. Consulte as regiões disponíveis.
  • CORPUS_ID: o ID do corpus de destino.
  • SEARCHCONFIG: o nome da SearchConfig de destino.
    • Neste exemplo, a SearchConfig é inventory-count.

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "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 a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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
 

Especificação de bucket de intervalo personalizado

O exemplo a seguir cria uma especificação de faceta de intervalo fixo para o campo video-views, resultando nos agrupamentos: [inf, 0), [0, 10), [10, 100), [100, 1000), [1000, 10000), [10000, inf).

REST

Especifique o novo ID SearchConfig no final do URL de solicitação, não como um campo na solicitação.

Essa solicitação usa o CustomRangeBucketSpec para especificar como os valores são agrupados em buckets.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • REGIONALIZED_ENDPOINT: o endpoint pode incluir um prefixo correspondente ao LOCATION_ID, como europe-west4-. Saiba mais sobre os endpoints regionalizados.
  • PROJECT_NUMBER: o número do projeto do Google Cloud.
  • LOCATION_ID: a região em que você está usando a Vertex AI Vision. Por exemplo: us-central1, europe-west4. Consulte as regiões disponíveis.
  • CORPUS_ID: o ID do corpus de destino.
  • SEARCHCONFIG: o nome da SearchConfig de destino.
    • Neste exemplo, a SearchConfig é video-views.

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "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 a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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
 

Especificação de bucket de intervalo de data / hora

O exemplo a seguir cria uma especificação de período para o campo film-date com granularidade DAY.

REST

Especifique o novo ID SearchConfig no final do URL de solicitação, não como um campo na solicitação.

Essa solicitação usa o DateTimeBucketSpec para especificar como os valores de data são agrupados em buckets.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • REGIONALIZED_ENDPOINT: o endpoint pode incluir um prefixo correspondente ao LOCATION_ID, como europe-west4-. Saiba mais sobre os endpoints regionalizados.
  • PROJECT_NUMBER: o número do projeto do Google Cloud.
  • LOCATION_ID: a região em que você está usando a Vertex AI Vision. Por exemplo: us-central1, europe-west4. Consulte as regiões disponíveis.
  • CORPUS_ID: o ID do corpus de destino.
  • SEARCHCONFIG: o nome da SearchConfig de destino.
    • Neste exemplo, a SearchConfig é film-date.

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
  "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 a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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
 

Depois de criar esses intervalos de facetas, você pode usá-los para pesquisar no depósito.

REST

Essa solicitação usa objetos facetSelections para especificar um grupo de intervalos de facetas.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • REGIONALIZED_ENDPOINT: o endpoint pode incluir um prefixo correspondente ao LOCATION_ID, como europe-west4-. Saiba mais sobre os endpoints regionalizados.
  • PROJECT_NUMBER: o número do projeto do Google Cloud.
  • LOCATION_ID: a região em que você está usando a Vertex AI Vision. Por exemplo: us-central1, europe-west4. Consulte as regiões disponíveis.
  • CORPUS_ID: o ID do corpus de destino.

Método HTTP e URL:

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

Corpo JSON da solicitação:

{
   "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 a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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
 

Atualizar uma configuração de pesquisa

Para atualizar o SearchConfig atual, sua solicitação precisa atender aos seguintes requisitos:

  1. O Request.searchConfig.name já precisa existir.
  2. A solicitação precisa conter pelo menos um searchCriteriaProperty ou facetProperty não vazio.
  3. A matriz mappedFields não pode estar vazia e precisa ser mapeada para chaves de anotação fornecidas pelo usuário.
  4. Todos os mappedFields precisam ser do mesmo tipo.
  5. Todos os mappedFields precisam compartilhar a mesma granularidade.
  6. Todos os mappedFields precisam compartilhar as mesmas opções de correspondência semântica SearchConfig.

REST e LINHA DE CMD

O exemplo de código a seguir atualiza um recurso de configuração de pesquisa de depósito usando o método projects.locations.corpora.searchConfigs.patch.

Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:

  • REGIONALIZED_ENDPOINT: o endpoint pode incluir um prefixo correspondente ao LOCATION_ID, como europe-west4-. Saiba mais sobre os endpoints regionalizados.
  • PROJECT: o ID ou número do projeto do Google Cloud.
  • LOCATION_ID: a região em que você está usando a Vertex AI Vision. Por exemplo: us-central1, europe-west4. Consulte as regiões disponíveis.
  • CORPUS_ID: o ID do corpus de destino.
  • SEARCHCONFIG_ID: o ID do seu SearchConfig de destino.
  • "mappedFields": uma ou mais chaves de anotação fornecidas pelo usuário.

Método HTTP e URL:

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

Corpo JSON da solicitação:

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

Para enviar a solicitação, escolha uma destas opções:

curl

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

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

Salve o corpo da solicitação em um arquivo com o nome request.json e execute o comando a seguir:

$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

Você receberá uma resposta JSON semelhante a esta:

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