Consultar coleções para objetos de dados

A finalidade da API Query é obter objetos de dados de uma coleção através de um filtro. Isto é semelhante a consultar uma tabela da base de dados e usar uma cláusula SQL WHERE. Também pode usar a agregação para obter uma contagem de objetos de dados que correspondem a um filtro.

Idioma da expressão de filtro

Além da funcionalidade de pesquisa KNN/ANN, a pesquisa vetorial 2.0 oferece capacidades de consulta versáteis através de uma linguagem de consulta personalizada. A linguagem de consulta é explicada na tabela seguinte.

Filtro Descrição Tipos suportados Exemplo
$eq Faz corresponder objetos de dados com valores dos campos que são iguais a um valor especificado. Número, string, booleano {"genre": {"$eq": "documentary"}}
$ne Faz corresponder objetos de dados com valores de campos que não são iguais a um valor especificado. Número, string, booleano {"genre": {"$ne": "drama"}}
$gt Faz corresponder objetos de dados com valores dos campos que são superiores a um valor especificado. Número {"year": {"$gt": 2019}}
$gte Faz corresponder objetos de dados com valores de campos superiores ou iguais a um valor especificado. Número {"year": {"$gte": 2020}}
$lt Faz corresponder objetos de dados com valores de campos que são inferiores a um valor especificado. Número {"year": {"$lt": 2020}}
$lte Faz corresponder objetos de dados com valores de campos que são inferiores ou iguais a um valor especificado. Número {"year": {"$lte": 2020}}
$in Faz corresponder objetos de dados com valores de campos que estão em uma matriz especificada. String {"genre": {"$in": ["comedy", "documentary"]}}
$nin Faz corresponder objetos de dados com valores de campos que não estão numa matriz especificada. String {"genre": {"$nin": ["comedy", "documentary"]}}
$e Une as cláusulas de consulta com um E lógico. - {"$and": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]}
$ou Une as cláusulas de consulta com um OU lógico. - {"$or": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]}
$all Seleciona os documentos em que o valor da matriz de um campo contém todos os valores especificados. - {"colors": {"$all": ["red", "blue"]}}

Consultar coleções

O exemplo seguinte demonstra como usar um filtro para consultar objetos de dados na coleção movies.

# Query Data Objects
curl -X POST \
'https://vectorsearch.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/collections/movies/dataObjects:query' \
  -H 'Bearer $(gcloud auth print-access-token)' \
  -H 'Content-Type: application/json' \
  -d '{ \
    "page_size": 10, \
    "page_token": "", \
    "filter": { \
      "$or": [ \
        { \
          "director": { \
            "$eq": "Akira Kurosawa" \
          } \
        }, \
        { \
          "$and": [ \
            { \
              "director": { \
                "$eq": "David Fincher" \
              } \
            }, \
            { \
              "genre": { \
                "$ne": "Thriller" \
              } \
            } \
          ] \
        } \
      ] \
    }, \
    "output_fields": { \
      "data_fields": "*", \
      "vector_fields": "*", \
      "metadata_fields": "*" \
    } \
  }'

O exemplo seguinte demonstra como contar todos os objetos de dados na coleção movies.

curl -X POST \  'https://vectorsearch.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/collections/movies/dataObjects:query' \
  -H 'Bearer $(gcloud auth print-access-token)' \
  -H 'Content-Type: application/json' \
  -d '{ \
    "aggregate": "count" \
  }'

O que se segue?