Cómo consultar colecciones para objetos de datos

El propósito de la API de Query es recuperar objetos de datos de una colección con un filtro. Esto es similar a consultar una tabla de base de datos y usar una cláusula WHERE de SQL. También puedes usar la agregación para obtener un recuento de los objetos de datos que coinciden con un filtro.

Lenguaje de expresiones de filtro

Además de la funcionalidad de búsqueda de KNN/ANN, la Búsqueda de vectores 2.0 proporciona capacidades de consulta versátiles con un lenguaje de consulta personalizado. El lenguaje de consulta se explica en la siguiente tabla.

Filtro Descripción Tipos compatibles Ejemplo
$eq Coincide con los objetos de datos con valores de campo que son iguales a un valor especificado. Número, cadena, booleano {"genre": {"$eq": "documentary"}}
$ne Coincide con los objetos de datos con valores de campo que no son iguales a un valor especificado. Número, cadena, booleano {"genre": {"$ne": "drama"}}
$gt Coincide con los objetos de datos con valores de campo que son mayores que un valor especificado. Número {"year": {"$gt": 2019}}
$gte Coincide con los objetos de datos que tienen valores de campo mayores o iguales que un valor especificado. Número {"year": {"$gte": 2020}}
$lt Coincide con los objetos de datos con valores de campo que son inferiores a un valor especificado. Número {"year": {"$lt": 2020}}
$lte Coincide con los objetos de datos que tienen valores de campo menores o iguales a un valor especificado. Número {"year": {"$lte": 2020}}
$in Coincide con los objetos de datos con valores de campo que están en un array especificado. String {"genre": {"$in": ["comedy", "documentary"]}}
$nin Coincide con los objetos de datos con valores de campo que no están en un array especificado. String {"genre": {"$nin": ["comedy", "documentary"]}}
$and Une las cláusulas de la consulta con un AND lógico. - {"$and": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]}
$or Une cláusulas de consulta con un OR lógico. - {"$or": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]}
$all Selecciona los documentos en los que el valor del array de un campo contiene todos los valores especificados. - {"colors": {"$all": ["red", "blue"]}}

Cómo 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 en 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" \
  }'

Próximos pasos