컬렉션 색인

애플리케이션을 프로덕션 규모와 성능에 맞게 준비하려면 컬렉션 색인을 만들어야 합니다. 색인이 없으면 ANN 검색이 전체 데이터를 직접 스캔하기 때문에 느립니다. 색인을 만들면 색인이 생성된 벡터 필드에 대한 검색 속도가 매우 빨라집니다.

거리 측정항목 선택

정확하고 관련성 높은 유사도 검색 결과를 얻으려면 색인에 적합한 거리 측정항목을 선택하는 것이 매우 중요합니다. 최적의 선택은 주로 벡터 임베딩의 특성과 데이터의 성질에 따라 달라집니다. 가장 중요한 원칙은 임베딩 모델이 학습될 때 사용된 거리 측정항목을 그대로 사용하는 것입니다. 임베딩 모델은 특정 거리 계산 방식에서 유사도가 가장 잘 표현되는 벡터 표현을 생성하도록 최적화되어 있습니다. 다른 측정항목을 사용하면 검색 결과가 부정확하거나 성능이 떨어질 수 있습니다.

  • 임베딩 모델의 문서 확인: 의도한 거리 측정항목을 확인하는 가장 신뢰할 수 있는 방법입니다.

  • 사용 사례 고려: 의미적으로 유사한 텍스트나 이미지를 찾는 경우에는 코사인 유사도가 가장 적합한 경우가 많습니다. 벡터의 크기로 표현되는 "강도" 또는 "세기"가 중요한 경우에는 L2 거리를 고려하세요.

  • 벡터 분석: 정규화된 벡터인지 확인합니다. 정규화된 벡터라면 코사인 유사도와 내적 중 어느 것을 사용해도 비슷한 순위 결과를 기대할 수 있습니다.

이러한 요소들을 신중하게 고려하면 색인에 가장 적합한 거리 측정항목을 선택할 수 있으며, 보다 정확하고 의미 있는 유사도 검색 결과를 얻을 수 있습니다.

ANN 색인 만들기

특정 임베딩 필드에 대해 ANN 색인을 만들 수 있습니다. 기본적으로 모든 문자열, 숫자, 불리언 데이터 객체 필드는 색인으로 전달되어 인라인 필터링이 가능해집니다.

컴퓨팅 비용을 최적화하려면 필터링 가능한 필드(filter_fields)와 페이로드로만 저장할 필드(store_fields)를 명확히 지정할 수 있습니다.

다음 예시에서는 movies 컬렉션에 plot_index라는 색인을 만드는 방법을 보여줍니다.

curl -X POST \ 'https://vectorsearch.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/collections/movies/indexes?indexId=plot_index' \
  -H 'Bearer $(gcloud auth print-access-token)' \
  -H 'Content-Type: application/json' \
  -d '{ \
      "index_field": "plot_embedding", \
      "filter_fields": [ \
        "year", \
        "genre" \
      ], \
      "store_fields": [ \
        "title" \
      ] \
    }'

이 예시에서 요청은 yeargenre를 색인에 필터 필드로 전달되는 필터링 가능한 필드로 지정하고, title은 필터링되지 않는 페이로드 필드로 지정합니다.

색인 가져오기

다음은 movies 컬렉션에 저장된 기존 색인 plot_index를 가져오는 방법을 보여줍니다.

curl -X GET \
  'https://vectorsearch.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/collections/movies/indexes/plot_index' \
  -H 'Bearer $(gcloud auth print-access-token)' \
  -H 'Content-Type: application/json'

색인 나열

다음 예시는 movies 컬렉션에 있는 모든 색인을 나열하는 방법을 보여줍니다.

curl -X GET  \
  'https://vectorsearch.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/collections/movies/indexes' \
  -H 'Bearer $(gcloud auth print-access-token)' \
  -H 'Content-Type: application/json'

색인 삭제

다음 예시에서는 movies 컬렉션에서 기존 색인 plot_index를 삭제하는 방법을 보여줍니다.

curl -X DELETE  \
'https://vectorsearch.googleapis.com/v1beta/projects/PROJECT_ID/locations/LOCATION/collections/movies/indexes/plot_index'  \
   -H 'Bearer $(gcloud auth print-access-token)' \
   -H 'Content-Type: application/json'

다음 단계

  • 데이터 객체를 쿼리하는 방법을 알아봅니다.
  • 시맨틱 검색 또는 하이브리드 검색을 사용하여 데이터 객체를 검색하는 방법을 알아봅니다.