L'objectif de l'API Query est de récupérer des objets de données à partir d'une collection à l'aide d'un filtre. Cela revient à interroger une table de base de données et à utiliser une clause SQL WHERE. Vous pouvez également utiliser l'agrégation pour obtenir le nombre d'objets de données correspondant à un filtre.
Langage d'expression des filtres
En plus de la fonctionnalité de recherche KNN/ANN, Vector Search 2.0 offre des capacités de requête polyvalentes à l'aide d'un langage de requête personnalisé. Le langage de requête est expliqué dans le tableau suivant.
| Filtre | Description | Types compatibles | Exemple |
|---|---|---|---|
| $eq | Fait correspondre les objets de données dont les valeurs de champ sont égales à une valeur spécifiée. | Nombre, chaîne, booléen | {"genre": {"$eq": "documentary"}} |
| $ne | Fait correspondre les objets de données dont les valeurs de champ sont différentes d'une valeur spécifiée. | Nombre, chaîne, booléen | {"genre": {"$ne": "drama"}} |
| $gt | Fait correspondre les objets de données dont les valeurs de champ sont supérieures à une valeur spécifiée. | Nombre | {"year": {"$gt": 2019}} |
| $gte | Correspond aux objets de données dont les valeurs de champ sont supérieures ou égales à une valeur spécifiée. | Nombre | {"year": {"$gte": 2020}} |
| $lt | Fait correspondre les objets de données dont les valeurs de champ sont inférieures à une valeur spécifiée. | Nombre | {"year": {"$lt": 2020}} |
| $lte | Correspond aux objets de données dont les valeurs de champ sont inférieures ou égales à une valeur spécifiée. | Nombre | {"year": {"$lte": 2020}} |
| $in | Fait correspondre les objets de données dont les valeurs de champ figurent dans un tableau spécifié. | Chaîne | {"genre": {"$in": ["comedy", "documentary"]}} |
| $nin | Fait correspondre les objets de données dont les valeurs de champ ne figurent pas dans un tableau spécifié. | Chaîne | {"genre": {"$nin": ["comedy", "documentary"]}} |
| $et | Associe les clauses de requête avec un ET logique. | - | {"$and": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]} |
| $ou | Joint les clauses de requête avec un OU logique. | - | {"$or": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]} |
| $all | Sélectionne les documents dont la valeur de tableau d'un champ contient toutes les valeurs spécifiées. | - | {"colors": {"$all": ["red", "blue"]}} |
Interroger les collections
L'exemple suivant montre comment utiliser un filtre pour interroger des objets de données dans la collection 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": "*" \
} \
}'
L'exemple suivant montre comment compter tous les objets de données dans la collection 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" \
}'
Étape suivante
- Découvrez comment rechercher des objets de données.