Sammlungen nach Datenobjekten durchsuchen

Mit der Query API können Sie Datenobjekte aus einer Sammlung mithilfe eines Filters abrufen. Das ist ähnlich wie beim Abfragen einer Datenbanktabelle mit einer SQL-WHERE-Klausel. Sie können die Aggregation auch verwenden, um die Anzahl der Datenobjekte zu ermitteln, die einem Filter entsprechen.

Sprache für Filterausdrücke

Zusätzlich zur KNN-/ANN-Suchfunktion bietet Vector Search 2.0 vielseitige Abfragefunktionen mit einer benutzerdefinierten Abfragesprache. Die Abfragesprache wird in der folgenden Tabelle erläutert.

Filter Beschreibung Unterstützte Datentypen Beispiel
$eq Führt zu Übereinstimmung mit Datenobjekten mit Feldwerten, die gleich einem angegebenen Wert sind. Zahl, String, boolescher Wert {"genre": {"$eq": "documentary"}}
$ne Führt zu Übereinstimmung mit Datenobjekten mit Feldwerten, die nicht gleich einem angegebenen Wert sind. Zahl, String, boolescher Wert {"genre": {"$ne": "drama"}}
$gt Führt zu Übereinstimmung mit Datenobjekten mit Feldwerten, die größer als ein angegebener Wert sind. Zahl {"year": {"$gt": 2019}}
$gte Entspricht Datenobjekten mit Feldwerten, die größer oder gleich einem angegebenen Wert sind. Zahl {"year": {"$gte": 2020}}
$lt Führt zu Übereinstimmung mit Datenobjekten mit Feldwerten, die kleiner als ein angegebener Wert sind. Zahl {"year": {"$lt": 2020}}
$lte Entspricht Datenobjekten mit Feldwerten, die kleiner oder gleich einem angegebenen Wert sind. Zahl {"year": {"$lte": 2020}}
$in Führt zu Übereinstimmung mit Datenobjekten mit Feldwerten, die in einem angegebenen Array enthalten sind. String {"genre": {"$in": ["comedy", "documentary"]}}
$nin Führt zu Übereinstimmung mit Datenobjekten mit Feldwerten, die nicht in einem angegebenen Array enthalten sind. String {"genre": {"$nin": ["comedy", "documentary"]}}
$and Verknüpft Abfrageklauseln mit einem logischen AND. - {"$and": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]}
$oder Verknüpft Abfrageklauseln mit einem logischen OR. - {"$or": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]}
$all Wählt die Dokumente aus, in denen der Arraywert eines Felds alle angegebenen Werte enthält. - {"colors": {"$all": ["red", "blue"]}}

Sammlungen abfragen

Das folgende Beispiel zeigt, wie Sie mit einem Filter nach Data-Objekten in der Sammlung movies suchen.

# 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": "*" \
    } \
  }'

Im folgenden Beispiel wird gezeigt, wie alle Datenobjekte in der Sammlung movies gezählt werden.

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" \
  }'

Nächste Schritte