Query API 的用途是使用篩選器從集合擷取資料物件。這與查詢資料庫資料表並使用 SQL WHERE 子句類似。您也可以使用匯總功能,取得符合篩選條件的資料物件計數。
篩選運算式語言
除了 KNN/ANN 搜尋功能,Vector Search 2.0 也提供多種查詢功能,可使用自訂查詢語言。下表說明查詢語言。
| 篩選器 | 說明 | 支援的類型 | 範例 |
|---|---|---|---|
| $eq | 比對欄位值等於指定值的資料物件。 | 數字、字串、布林值 | {"genre": {"$eq": "documentary"}} |
| $ne | 比對欄位值不等於指定值的資料物件。 | 數字、字串、布林值 | {"genre": {"$ne": "drama"}} |
| $gt | 比對欄位值大於指定值的資料物件。 | 數字 | {"year": {"$gt": 2019}} |
| $gte | 比對欄位值大於或等於指定值的資料物件。 | 數字 | {"year": {"$gte": 2020}} |
| $lt | 比指定值小的欄位值。 | 數字 | {"year": {"$lt": 2020}} |
| $lte | 比指定值小於或等於的資料物件。 | 數字 | {"year": {"$lte": 2020}} |
| $in | 比對資料物件與位於指定陣列中的欄位值。 | 字串 | {"genre": {"$in": ["comedy", "documentary"]}} |
| $nin | 比對欄位值不在指定陣列中的資料物件。 | 字串 | {"genre": {"$nin": ["comedy", "documentary"]}} |
| $和 | 以邏輯 AND 聯結查詢子句。 | - | {"$and": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]} |
| $or | 以邏輯 OR 聯結查詢子句。 | - | {"$or": [{"genre": {"$eq": "drama"}}, {"year": {"$gte": 2020}}]} |
| $all | 選取欄位陣列值包含所有指定值的文件。 | - | {"colors": {"$all": ["red", "blue"]}} |
查詢集合
以下範例說明如何使用篩選器,在集合 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": "*" \
} \
}'
以下範例示範如何計算「集合」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" \
}'
後續步驟
- 瞭解如何搜尋資料物件。