다음 색인 매개변수와 데이터베이스 플래그는 재현율과 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_leaves를 ROWS/100로 설정합니다. 벡터가 1,000만 개라면 num_leaves를 100,000으로 설정합니다.
3단계 색인: 이 값을 1와 1048576 사이의 값으로 설정합니다.
정확한 값을 선택하는 것이 확실하지 않다면 power(ROWS, 2/3)를 시작점으로 사용하세요. 여기서 ROWS은 벡터 행의 수입니다. 각 파티션이 보유하는 벡터 수는 ROWS/power(ROWS, 2/3) = power(ROWS, 1/3).
에 의해 계산됩니다. 벡터 행이 1억 개 이상인 데이터 세트에서 3단계 트리 색인을 만들 수 있으므로 각 파티션은 (power(100M, 1/3)) 벡터, 즉 465 벡터 이상을 보유합니다. 최적의 벡터 검색 품질을 위해서는 각 파티션의 벡터 수를 최소화하는 것이 좋습니다. 권장 파티션 크기는 파티션당 벡터 100개 정도이므로 num_leaves를 ROWS/100로 설정합니다. 벡터가 1억 개 있는 경우 num_leaves을 100만으로 설정합니다.
색인 생성 (필수)
quantizer
K-means 트리에 사용할 양자화기의 유형입니다. 기본값은 SQ8로 설정되어 있으며, 이를 통해 재현율 손실을 최소화하면서 (일반적으로 1~2% 미만) 쿼리 성능을 개선할 수 있습니다.
재현율이 99% 이상이어야 하는 경우 FLAT로 설정하세요.
색인 생성 (선택사항)
scann.enable_pca
가능한 경우 임베딩 크기를 자동으로 줄이는 데 사용되는 차원 축소 기법인 주성분 분석 (PCA)을 사용 설정합니다. 이 옵션은 기본적으로 사용 설정되어 있습니다.
이 데이터베이스 플래그를 사용하면 [검색할 리프 또는 파티션 수를 자동으로 관리](/alloydb/omni/16.3.0/docs/ai/maintain-vector-indexes#manage-leave-to-search-split-partitions)할 수 있습니다. 이 값을 현재 파티션 수로 설정합니다. 예를 들어 현재 파티션 수의 1% 를 검색하려면 이 값을 1로 설정합니다.
이 매개변수를 0~100 사이의 값으로 설정할 수 있습니다. 기본값은 0이며, 이 매개변수를 사용 중지하고 `scann.num_leaves_to_search` 를 사용하여 검색할 리프 수를 계산합니다. 이 매개변수는 기본적으로 사용 중지되어 있습니다.
쿼리 런타임 (선택사항)
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입니다.
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["이해하기 어려움","hardToUnderstand","thumb-down"],["잘못된 정보 또는 샘플 코드","incorrectInformationOrSampleCode","thumb-down"],["필요한 정보/샘플이 없음","missingTheInformationSamplesINeed","thumb-down"],["번역 문제","translationIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-09-04(UTC)"],[[["\u003cp\u003eThis document provides reference information for tuning parameters related to the ScaNN Index, focusing on optimizing recall and queries per second (QPS).\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003emax_num_levels\u003c/code\u003e parameter determines the K-means clustering tree's depth, with values of 1 or 2 corresponding to two-level or three-level tree indexes, respectively, and is influenced by the total number of vector rows.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003enum_leaves\u003c/code\u003e parameter, which dictates the number of index partitions, impacts performance, and its optimal value is calculated based on the number of vector rows, with different formulas for two-level and three-level indexes.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003equantizer\u003c/code\u003e parameter selects the quantization method, defaulting to \u003ccode\u003eSQ8\u003c/code\u003e for balanced performance, but can be set to \u003ccode\u003eFLAT\u003c/code\u003e when higher recall rates are needed.\u003c/p\u003e\n"],["\u003cp\u003eDatabase flags like \u003ccode\u003escann.num_leaves_to_search\u003c/code\u003e and \u003ccode\u003escann.pre_reordering_num_neighbors\u003c/code\u003e allow trading off recall and QPS, while \u003ccode\u003escann.num_search_threads\u003c/code\u003e can help reduce single query latency in CPU-bound scenarios by using multiple threads.\u003c/p\u003e\n"]]],[],null,["# ScaNN index reference\n\nSelect a documentation version: 16.3.0keyboard_arrow_down\n\n- [Current (16.8.0)](/alloydb/omni/current/docs/reference/scann-index-reference)\n- [16.8.0](/alloydb/omni/16.8.0/docs/reference/scann-index-reference)\n- [16.3.0](/alloydb/omni/16.3.0/docs/reference/scann-index-reference)\n- [15.12.0](/alloydb/omni/15.12.0/docs/reference/scann-index-reference)\n- [15.7.1](/alloydb/omni/15.7.1/docs/reference/scann-index-reference)\n- [15.7.0](/alloydb/omni/15.7.0/docs/reference/scann-index-reference)\n\n\u003cbr /\u003e\n\nThis page provides reference material for the ScaNN index.\n\n\u003cbr /\u003e\n\nTuning parameters\n-----------------\n\nThe following index parameters and database flags are used together to find the right balance of recall and QPS.\n\nOption type Index creation Query runtime \n\nWhat's next\n-----------\n\n- [Get started with vector embeddings using AlloyDB AI](https://codelabs.developers.google.com/alloydb-ai-embedding#0)."]]