データ オブジェクトのコレクションのクエリ

Query API の目的は、フィルタを使用してコレクションからデータ オブジェクトを取得することです。これは、データベース テーブルをクエリして SQL WHERE 句を使用するのと同様です。集計を使用して、フィルタに一致するデータ オブジェクトの数を取得することもできます。

フィルタ式の言語

Vector Search 2.0 は、KNN/ANN 検索機能に加えて、カスタム クエリ言語を使用した汎用性の高いクエリ機能を提供します。クエリ言語については、次の表をご覧ください。

フィルタ 説明 サポートされるタイプ
$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 で結合します。 - {"$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" \
  }'

次のステップ