ScaNN 벡터 쿼리 성능 개요

문서 버전을 선택합니다.

이 페이지에서는 AlloyDB AI의 확장 가능한 최근접 이웃 (ScaNN) 색인을 사용하여 벡터 쿼리 성능을 개선하는 방법을 개념적으로 개략적으로 설명합니다. 자세한 내용은 색인 생성 및 벡터 쿼리를 참고하세요.

ScaNN 색인은 색인이 양자화 (또는 해싱) 함수와 함께 검색 트리를 학습하는 트리-양자화 기반 색인을 사용합니다. 쿼리를 실행하면 검색 트리가 검색 공간을 가지치기하는 데 사용되고 양자화는 색인 크기를 압축하는 데 사용됩니다. 이 가지치기를 통해 쿼리 벡터와 데이터베이스 벡터 간의 유사성(즉, 거리) 점수 매기기가 빨라집니다.

최근접 이웃 쿼리로 높은 초당 쿼리 수 (QPS)와 높은 재현율을 모두 달성하려면 데이터와 쿼리에 가장 적합한 방식으로 ScaNN 색인의 트리를 파티셔닝해야 합니다.

고차원 삽입 모델은 훨씬 낮은 차원에서 많은 정보를 유지할 수 있습니다. 예를 들어 삽입의 차원 중 20% 만으로 정보의 90% 를 유지할 수 있습니다. 이러한 데이터 세트의 속도를 높이기 위해 AlloyDB AI ScaNN 색인은 색인이 생성된 벡터에 주성분 분석(PCA)을 사용하여 차원 축소를 자동으로 실행하므로 벡터 검색의 CPU 및 메모리 사용량이 더욱 줄어듭니다. 자세한 내용은 scann.enable_pca를 참조하세요.

차원 축소로 인해 색인에서 약간의 재현율 손실이 발생하므로 AlloyDB AI ScaNN 색인은 먼저 색인에서 PCA 처리된 벡터 후보를 더 많이 사용하여 순위 지정 단계를 실행하여 재현율 손실을 보상합니다. 그런 다음 ScaNN은 PCA 처리된 벡터 후보의 순위를 원래 벡터에 따라 다시 지정합니다. 자세한 내용은 scann.pre_reordering_num_neighbors를 참조하세요.

다음 단계