AlloyDB Omni ScaNN 색인 참조

문서 버전을 선택합니다.

이 페이지에서는 AlloyDB Omni의 확장 가능한 최근접 이웃 (ScaNN) 색인에 사용할 수 있는 조정 파라미터에 대한 자세한 참조를 제공합니다.

벡터 검색을 처음부터 끝까지 구현하는 방법에 관한 단계별 튜토리얼은 벡터 검색 실행 방법에 관한 가이드를 참조하세요.

조정 파라미터

다음 색인 및 쿼리 매개변수는 재현율과 초당 쿼리 수 (QPS)의 적절한 균형을 찾는 데 사용됩니다.

조정 파라미터 설명 옵션 유형
mode ScaNN 색인을 자동으로 조정된 색인 또는 수동으로 조정된 색인으로 정의합니다. 사용 가능한 옵션은 다음과 같습니다.
  • AUTO: 자동으로 조정된 색인
  • MANUAL: 수동으로 조정된 색인

자세한 내용은 ScaNN 색인 만들기를 참조하세요.

색인 생성

(선택사항)

max_num_levels K-평균 클러스터링 트리의 최대 중심 수준 수입니다. 이 값을 설정하는 방법에 관한 안내는 ScaNN 색인 조정을 참조하세요.

사용 가능한 값은 다음과 같습니다.

  • 1: 2단계 ScaNN 색인
  • 2: 3단계 ScaNN 색인
  • 3: 4단계 ScaNN 색인 (미리보기)

max_num_levels을(를) 3으로 설정하는 경우 scann.max_allowed_num_levels3으로 설정해야 합니다. 자세한 내용은 ScaNN 색인 조정 권장사항을 참조하세요.

색인 생성

(선택사항)

num_leaves 이 색인에 적용할 파티션 수입니다. 최댓값은 30000000입니다. 이 값을 선택하는 방법에 관한 자세한 내용은 ScaNN 색인 조정ScaNN 색인 조정 권장사항을 참조하세요.

색인 생성

(수동으로 조정된 색인에 필요)

quantizer K-평균 트리에서 사용할 양자화기의 유형입니다. 기본값은 SQ8로 설정되어 있으며, 이를 통해 재현율 손실을 최소화하면서(일반적으로 1~2% 미만) 쿼리 성능을 개선할 수 있습니다.

재현율이 99% 이상이어야 하는 경우 FLAT으로 설정하세요.
색인 만들기
(선택사항)
scann.enable_pca 가능한 경우 임베딩 크기를 자동으로 줄이는 데 사용되는 차원 축소 기법인 주요 구성요소 분석(PCA)을 사용 설정합니다. 이 옵션은 기본적으로 사용 설정되어 있습니다.

재현율이 저하되는 경우 false로 설정하세요.
색인 생성
(선택사항)
auto_maintenance 데이터 세트가 증가할 때 AlloyDB Omni에서 중심점을 분석 및 업데이트하고 큰 이상치 파티션을 분할할 수 있도록 ScaNN 색인을 자동으로 유지보수합니다. 이렇게 하면 QPS와 검색 결과가 자동으로 개선됩니다. 자세한 내용은 색인 자동 유지보수를 참조하세요.

색인 생성

(선택사항)

벡터 색인이 검색하는 파티션 수를 자동으로 관리합니다. 자세한 내용은 파티션 검색 비율을 참조하세요.

검색할 파티션의 절대 수입니다. 이를 통해 쿼리 재현율과 QPS 간의 균형을 맞출 수 있습니다. 기본값은 의 1% 입니다num_leaves.

값이 높을수록 쿼리 재현율이 향상되지만 QPS는 낮아집니다. 반대로 값이 낮을수록 쿼리 재현율은 낮아지지만 QPS는 높아집니다.

쿼리 런타임

(선택사항)

scann.pre_reordering_num_neighbors

초기 검색에서 후보 집합을 식별한 후 재정렬 단계에서 고려할 후보 이웃의 수를 지정합니다. 이 파라미터를 쿼리에서 반환할 이웃 수보다 큰 값으로 설정합니다. 값이 높을수록 재현율이 향상되지만 QPS는 낮아집니다.

기본값은 0이며, 이는 재정렬을 사용 중지합니다. 색인 생성 중에 PCA가 사용 설정된 경우 기본값은 50 x K입니다. 여기서 K는 쿼리에 지정된 LIMIT입니다.

쿼리 런타임

(선택사항)

scann.num_search_threads 멀티 스레드 검색의 검색 스레드 수입니다. 이렇게 하면 지연 시간에 민감한 애플리케이션에서 ScaNN ANN 검색에 둘 이상의 스레드를 사용하여 단일 쿼리 지연 시간을 줄일 수 있습니다. 데이터베이스가 이미 CPU에 바인딩된 경우라면 이 설정으로 단일 쿼리 지연 시간이 개선되지 않습니다. 기본값은 2입니다. 쿼리 런타임
(선택사항)

scann.satisfy_limit (미리보기)

relaxed_order로 설정하면 데이터베이스 플래그가 재현율 부족 문제를 해결합니다. 쿼리의 관찰된 재현율이 타겟 재현율보다 낮을 때 재현율 부족이 발생할 수 있으며, 이는 필터를 사용할 때 발생할 가능성이 더 큽니다. 이 설정을 사용하면 벡터 스캔이 충분한 수의 결과가 발견될 때까지 num_leaves_to_search 한도를 넘어 계속 검색할 수 있으므로 타겟 재현율을 달성하는 데 도움이 됩니다. 쿼리 런타임
(선택사항)
이 데이터베이스 플래그는 scann.satisfy_limit를 사용 설정한 상태로 실행하는 쿼리에 대해 방문할 수 있는 총 리프의 비율에 상한을 설정합니다. 이는 사용 가능한 유일한 상한 GUC이며 자동 및 수동 검색 모드 모두에 적용됩니다. 이렇게 하면 검색이 오버슈팅되는 것을 방지하여 성능이 크게 저하될 수 있습니다. 이는 scann.satisfy_limit가 사용 설정된 경우에 적용됩니다.
이 파라미터를 0에서 100 사이의 값으로 설정할 수 있습니다. 기본값은 15%입니다. 이 기본값은 검색에서 리프의 15% 이상을 검사해야 하는 경우 필터가 근사 최근접 이웃 (ANN) 검색이 이점을 제공하지 않을 만큼 선택적일 가능성이 높으므로 사전 필터링 k-최근접 이웃 (KNN)이 더 적합한 선택이라는 논리에 기반합니다.
쿼리 런타임
(선택사항)

다음 단계