ScaNN 색인 참조

문서 버전을 선택합니다.

이 페이지에서는 ScaNN 색인에 대한 참조 자료를 제공합니다.

조정 파라미터

다음 색인 매개변수와 데이터베이스 플래그는 재현율과 QPS의 적절한 균형을 찾기 위해 함께 사용됩니다.

조정 매개변수 설명 옵션 유형
max_num_levels K-평균 군집화 트리의 중심 수준의 최대 수입니다.
  • 2단계 트리 색인: 2단계 트리 (1개 중심 레벨 + 하단 리프 레벨)의 경우 기본적으로 1로 설정됩니다.
  • 3단계 트리 색인: 3단계 트리 (2개의 중심 레벨 + 하단 리프 레벨)의 경우 기본적으로 2로 설정됩니다.
  • 벡터 행 수가 1억 개를 초과하면 값을 2로 설정합니다.
  • 벡터 행 수가 1,000만 행 미만이면 값을 1로 설정합니다.
  • 벡터 행 수가 1,000만~1억 행인 경우 색인 빌드 시간을 최적화하려면 1 (2로 설정)로 설정하고 검색 재현율을 최적화하려면 2 (1로 설정)로 설정합니다.
색인 생성
(선택사항)
num_leaves 이 색인에 적용할 파티션 수입니다. 색인을 만들 때 적용하는 파티션 수는 색인 성능에 영향을 미칩니다. 정해진 수의 벡터에 대한 파티션을 늘리면 더 세분화된 색인이 생성되어 재현율과 쿼리 성능이 향상됩니다. 하지만 이렇게 하면 색인 생성 시간이 길어집니다.

3단계 트리는 2단계 트리보다 빠르게 빌드되므로 3단계 트리 색인을 생성할 때 num_leaves_value를 늘려 성능을 개선할 수 있습니다.
  • 2단계 색인: 이 값을 1~1048576 사이의 값으로 설정합니다.

    빠른 색인 빌드와 우수한 검색 성능의 균형을 맞추는 색인의 경우 sqrt(ROWS)을 시작점으로 사용합니다. 여기서 ROWS은 벡터 행 수입니다. 각 파티션이 보유하는 벡터 수는
    ROWS/sqrt(ROWS) = sqrt(ROWS)로 계산됩니다.

    2단계 트리 색인은 벡터 행이 1,000만 개 미만인 데이터 세트에서 만들 수 있으므로 각 파티션은 (sqrt(10M)) 벡터 미만인 3200 벡터를 보유합니다. 최적의 벡터 검색 품질을 위해서는 각 파티션의 벡터 수를 최소화하는 것이 좋습니다. 권장 파티션 크기는 파티션당 벡터 100개 정도이므로 num_leavesROWS/100로 설정합니다. 벡터가 1,000만 개라면 num_leaves를 100,000으로 설정합니다.
  • 3단계 색인: 이 값을 11048576 사이의 값으로 설정합니다.

    정확한 값을 선택하는 것이 확실하지 않다면 power(ROWS, 2/3)를 시작점으로 사용하세요. 여기서 ROWS은 벡터 행의 수입니다. 각 파티션이 보유하는 벡터 수는
    ROWS/power(ROWS, 2/3) = power(ROWS, 1/3).

    에 의해 계산됩니다. 벡터 행이 1억 개 이상인 데이터 세트에서 3단계 트리 색인을 만들 수 있으므로 각 파티션은
    (power(100M, 1/3)) 벡터, 즉 465 벡터 이상을 보유합니다. 최적의 벡터 검색 품질을 위해서는 각 파티션의 벡터 수를 최소화하는 것이 좋습니다. 권장 파티션 크기는 파티션당 벡터 100개 정도이므로 num_leavesROWS/100로 설정합니다. 벡터가 1억 개 있는 경우 num_leaves을 100만으로 설정합니다.
색인 생성
(필수)
quantizer K-means 트리에 사용할 양자화기의 유형입니다. 기본값은 SQ8로 설정되어 있으며, 이를 통해 재현율 손실을 최소화하면서 (일반적으로 1~2% 미만) 쿼리 성능을 개선할 수 있습니다.

재현율이 99% 이상이어야 하는 경우 FLAT로 설정하세요.
색인 생성
(선택사항)
scann.enable_inline_filtering 벡터 유사성 검색 작업 내에서 데이터를 쿼리하고 필터를 직접 적용하는 인라인 필터링 지원을 사용 설정합니다. 이러한 벡터 유사성 쿼리는 동일한 데이터베이스 테이블의 필터를 사용하고 최근접 이웃 식별을 위한 거리를 계산하는 동안 필터 평가를 완료합니다. 이 옵션은 기본적으로 사용 중지되어 있습니다.

인라인 필터링을 사용 설정하려면 이 매개변수를 true로 설정하세요. 성능이 저하되는 경우 false로 설정합니다.

이 옵션은 미리보기에서 사용할 수 있습니다.
쿼리 런타임
(선택사항)
scann.enable_pca 가능한 경우 임베딩 크기를 자동으로 줄이는 데 사용되는 차원 축소 기법인 주성분 분석 (PCA)을 사용 설정합니다. 이 옵션은 기본적으로 사용 설정되어 있습니다.

재현율이 저하되는 경우 false로 설정하세요.
색인 생성
(선택사항)
scann.num_leaves_to_search 이 데이터베이스 플래그는 검색할 리프 또는 파티션의 절대 수를 제어하므로 재현율과 QPS 간에 균형을 맞출 수 있습니다. 기본값은 num_leaves에 설정된 값의 1% 입니다.

값이 높을수록 재현율은 높아지지만 QPS는 낮아집니다. 마찬가지로 값이 낮을수록 재현율은 낮아지지만 QPS는 높아집니다.
쿼리 런타임
(선택사항)
scann.pre_reordering_num_neighbors 데이터베이스 플래그는 설정된 경우 초기 검색에서 후보 집합을 식별한 후 순서 변경 단계에서 고려할 후보 이웃의 수를 지정합니다. 이 매개변수를 쿼리에서 반환할 이웃 수보다 큰 값으로 설정합니다.

값이 높을수록 재현율이 높아지지만 QPS는 낮아집니다. 재정렬을 사용 중지하려면 이 값을 0로 설정합니다. 색인 생성 중에 PCA가 사용 설정되지 않은 경우 기본값은 0입니다. 그렇지 않으면 기본값은 50 x K입니다. 여기서 K는 쿼리에 지정된 LIMIT입니다.
쿼리 런타임
(선택사항)
scann.num_search_threads 다중 스레드 검색의 검색자 스레드 수입니다. 이렇게 하면 지연 시간에 민감한 애플리케이션에서 ScaNN ANN 검색에 2개 이상의 스레드를 사용하여 단일 쿼리 지연 시간을 줄일 수 있습니다. 데이터베이스가 이미 CPU에 바인딩된 경우 이 설정은 단일 쿼리 지연 시간을 개선하지 않습니다. 기본값은 2입니다. 쿼리 런타임
(선택사항)

다음 단계