ScaNN 색인 만들기
자세한 내용은 ScaNN 색인 참조를 확인하세요.
2단계 트리 색인
데이터 세트에 적합한 num_leaves
및 num_leaves_to_search
의 최적 값을 찾는 데 도움이 되는 권장사항을 적용하려면 다음 단계를 따르세요.
- 다음 사례에 최적화된
ScaNN
색인을 만들려면num_leaves
파라미터를 다음 값으로 설정합니다. 여기서 rows는 색인이 생성된 테이블의 행 수입니다.- 균형 잡힌 색인 빌드 시간과 품질
num_leaves
를sqrt(rows)
로 설정합니다. - quality num_leaves를 rows/100으로 설정합니다.
- 균형 잡힌 색인 빌드 시간과 품질
- 목표 재현율 범위(예: 95%)에 도달할 때까지
scann.num_of_leaves_to_search
값을 늘려 테스트 쿼리를 실행합니다. 쿼리 분석에 대한 자세한 내용은 쿼리 분석을 참조하세요. scann.num_leaves_to_search
와num_leaves
간의 비율을 기록해 둡니다. 이는 후속 단계에서 사용됩니다. 이 비율은 목표 재현율을 달성하는 데 도움이 되는 데이터 세트의 근사치를 제공합니다.
고차원 벡터(500차원 이상)로 작업하고 재현율을 개선하려면scann.pre_reordering_num_neighbors
값을 조정해 보세요. 기본값은500 * K
로 설정됩니다. 여기서K
는 쿼리에서 설정한 한도입니다.- 쿼리가 목표 재현율을 달성한 후 QPS가 너무 낮으면 다음 단계를 따르세요.
- 다음 안내에 따라
num_leaves
및scann.num_leaves_to_search
값을 늘려 색인을 다시 만듭니다.num_leaves
를 행 수 제곱근의 더 큰 계수로 설정합니다. 예를 들어 색인의num_leaves
이 행 수의 제곱근으로 설정되어 있으면 제곱근의 두 배로 설정해 보세요. 값이 이미 두 배인 경우 제곱근의 세 배로 설정해 보세요.- 3단계에서 기록한
num_leaves
과의 비율을 유지하기 위해 필요에 따라scann.num_leaves_to_search
를 늘립니다. num_leaves
를 행 수를 100으로 나눈 값 이하로 설정합니다.
- 테스트 쿼리를 다시 실행합니다.
테스트 쿼리를 실행하는 동안
scann.num_leaves_to_search
를 줄여 실행하면서 재현율을 높게 유지하면서 QPS를 높이는 값을 찾아보세요. 색인을 다시 빌드하지 않고scann.num_leaves_to_search
값을 다양하게 시도해 보세요.
- 다음 안내에 따라
- QPS와 재현율 범위가 모두 허용되는 값에 도달할 때까지 4단계를 반복합니다.
3단계 트리 색인
2단계 트리 ScaNN
색인에 대한 권장사항과 더불어 다음 안내를 따르세요.
권장사항을 적용하여 num_leaves
및 max_num_levels
색인 파라미터의 최적 값을 찾으려면 다음 단계를 따르세요.
성능 목표에 따라 다음
num_leaves
및max_num_levels
조합으로ScaNN
색인을 만듭니다.- 색인 빌드 시간과 품질의 균형:
max_num_levels
를2
로,num_leaves
를power(rows, ⅔)
로 설정합니다. - 품질을 위한 최적화:
max_num_levels
를2
로,num_leaves
를rows/100
로 설정합니다.
- 색인 빌드 시간과 품질의 균형:
테스트 쿼리를 실행합니다. 쿼리 분석에 대한 자세한 내용은 쿼리 분석을 참조하세요.
scann.num_leaves_to_search
와num_leaves
간의 비율을 기록해 둡니다. 이는 후속 단계에서 사용됩니다. 이 비율은 목표 재현율을 달성하는 데 도움이 되는 데이터 세트에 관한 대략적인 정보를 제공합니다.
고차원 벡터(500차원 이상)로 작업하고 재현율을 개선하려면 scann.pre_reordering_num_neighbors
값을 조정해 보세요. 기본값은 500 * K
로 설정됩니다. 여기서 K
은 쿼리에서 설정한 한도입니다.
쿼리가 목표 재현율을 달성한 후 QPS가 너무 낮으면 다음 단계를 따르세요.
- 다음 안내에 따라
num_leaves
및scann.num_leaves_to_search
값을 늘려 색인을 다시 만듭니다. num_leaves
를power(rows, ⅔)
의 더 큰 계수로 설정합니다. 예를 들어 색인의num_leaves
가power(rows, ⅔)
으로 설정된 경우power(rows, ⅔)
의 두 배로 설정해 보세요. 값이 이미 두 배인 경우power(rows, ⅔)
의 세 배로 설정해 보세요.- 3단계에서 기록한
num_leaves
과의 비율을 유지하기 위해 필요에 따라scann.num_leaves_to_search
를 늘립니다. num_leaves
를rows/100
이하의 값으로 설정합니다.- 테스트 쿼리를 다시 실행합니다. 테스트 쿼리를 실행하는 동안
scann.num_leaves_to_search
를 줄여 실행하면서 재현율을 높게 유지하면서 QPS를 높이는 값을 찾아보세요. 색인을 다시 빌드하지 않고scann.num_leaves_to_search
값을 다양하게 시도해 보세요.
- 다음 안내에 따라
QPS와 재현율 범위가 모두 허용되는 값에 도달할 때까지 4단계를 반복합니다.
색인 유지보수
테이블이 자주 업데이트되거나 삽입되는 경우, 재현율 정확도를 높이기 위해 기존 ScaNN
색인을 주기적으로 다시 만드는 것이 좋습니다.
색인이 빌드된 이후 색인 측정항목을 모니터링하여 벡터 분포 또는 벡터 변형의 변경사항을 확인한 다음 그에 따라 색인을 다시 만들 수 있습니다. 측정항목에 관한 자세한 내용은 벡터 색인 측정항목을 참조하세요.