El objetivo de la API Query es recuperar objetos de datos de una colección mediante un filtro. Es similar a consultar una tabla de una base de datos y usar una cláusula SQL WHERE. También puede usar la agregación para obtener un recuento de los objetos de datos que coincidan con un filtro.
Lenguaje de expresiones de filtro
Además de la función de búsqueda de vecinos más cercanos (KNN) y vecinos más cercanos aproximados (ANN), Vector Search 2.0 ofrece funciones de consulta versátiles mediante un lenguaje de consulta personalizado. El lenguaje de consulta se explica en la siguiente tabla.
| Filtro | Descripción | Tipos admitidos | Ejemplo |
|---|---|---|---|
| $eq | Busca objetos de datos con valores de campo que sean iguales a un valor especificado. | Número, cadena o booleano | {"genre": {"$eq": "documentary"}} |
| $ne | Busca objetos de datos con valores de campo que no sean iguales a un valor especificado. | Número, cadena o booleano | {"genre": {"$ne": "drama"}} |
| $gt | Busca objetos de datos con valores de campo mayores que un valor especificado. | Número | {"year": {"$gt": 2019}} |
| $gte | Busca objetos de datos cuyos valores de campo sean mayores o iguales que un valor especificado. | Número | {"year": {"$gte": 2020}} |
| $lt | Busca objetos de datos con valores de campo inferiores a un valor especificado. | Número | {"year": {"$lt": 2020}} |
| $lte | Busca objetos de datos cuyos valores de campo sean menores o iguales que un valor especificado. | Número | {"year": {"$lte": 2020}} |
| $in | Busca objetos de datos con valores de campo que estén en un array especificado. | Cadena | {"genre": {"$in": ["comedy", "documentary"]}} |
| $nin | Busca objetos de datos con valores de campo que no estén en una matriz especificada. | Cadena | {"genre": {"$nin": ["comedy", "documentary"]}} |
| y | Une las cláusulas de consulta con el operador lógico Y. | - | {"$and": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]} |
| $o | Une cláusulas de consulta con el operador lógico OR. | - | {"$or": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]} |
| $all | Selecciona los documentos en los que el valor de matriz de un campo contiene todos los valores especificados. | - | {"colors": {"$all": ["red", "blue"]}} |
Consultar colecciones
En el siguiente ejemplo se muestra cómo usar un filtro para consultar objetos de datos en la colección 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": "*" \
} \
}'
En el siguiente ejemplo se muestra cómo contar todos los objetos de datos de la colección 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" \
}'
Siguientes pasos
- Consulta cómo buscar objetos de datos.