ScaNN 색인은 색인이 양자화(또는 해싱) 함수와 함께 검색 트리를 학습하는 트리-양자화 기반 색인을 사용합니다. 쿼리를 실행하면 검색 트리는 검색 공간을 가지치기하는 데 사용되며, 양자화는 색인 크기를 압축하는 데 사용됩니다. 이 가지치기를 통해 쿼리 벡터와 데이터베이스 벡터 간의 유사성(즉, 거리) 스코어링 속도가 빨라집니다.
최근접 이웃 쿼리로 높은 초당 쿼리 수(QPS)와 높은 재현율을 모두 달성하려면 데이터와 쿼리에 가장 적합한 방식으로 ScaNN 색인의 트리를 파티셔닝해야 합니다.
고차원 임베딩 모델은 훨씬 낮은 차원에서 많은 정보를 유지할 수 있습니다. 예를 들어 임베딩 차원을 20%만 사용하여 90%의 정보를 유지할 수 있습니다. 이러한 데이터 세트의 속도를 높이기 위해 AlloyDB AI ScaNN 색인은 색인이 생성된 벡터에 주요 구성요소 분석(PCA)을 사용해 자동으로 차원 축소를 수행하므로 벡터 검색을 위한 CPU 및 메모리 사용량이 더욱 감소합니다. 자세한 내용은 scann.enable_pca
를 참조하세요.
차원 축소로 인해 색인에서 약간의 재현율 손실이 발생하므로 AlloyDB AI ScaNN 색인은 먼저 색인에서 PCA 처리된 더 많은 벡터 후보를 사용해 순위 지정 단계를 실행하여 재현율 손실을 최소화합니다. 그런 다음 ScaNN은 PCA 처리된 벡터 후보의 순위를 원래 벡터에 따라 다시 지정합니다.
자세한 내용은 scann.pre_reordering_num_neighbors
를 참조하세요.
다음 단계
- ScaNN 색인 조정 권장사항 알아보기
- AlloyDB AI를 사용하여 벡터 임베딩 시작하기
- AlloyDB AI ScaNN 색인에 대해 자세히 알아보기