Interroger des collections pour obtenir des objets de données

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