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?
- Saiba como pesquisar objetos de dados.