데이터 객체에 대한 컬렉션 쿼리

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

다음 단계