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