Pembuatan indeks ScaNN
Untuk mengetahui informasi selengkapnya, lihat referensi Indeks ScaNN.
Indeks hierarki dua tingkat
Untuk menerapkan rekomendasi yang membantu Anda menemukan nilai optimal num_leaves dan num_leaves_to_search untuk set data Anda,
ikuti langkah-langkah yang direkomendasikan berikut:
- Untuk membuat indeks
ScaNNyang dioptimalkan untuk kasus berikut, tetapkan parameternum_leaveske nilai berikut, dengan rows adalah jumlah baris dalam tabel yang diindeks:- waktu dan kualitas pembuatan indeks yang seimbang menetapkan
num_leaveskesqrt(rows). - kualitas menetapkan num_leaves ke rows/100.
- waktu dan kualitas pembuatan indeks yang seimbang menetapkan
- Jalankan kueri pengujian, dengan meningkatkan nilai
scann.num_of_leaves_to_search, hingga Anda mencapai rentang perolehan target–misalnya, 95%. Untuk mengetahui informasi selengkapnya tentang cara menganalisis kueri, lihat Menganalisis kueri. - Catat rasio antara
scann.num_leaves_to_searchdannum_leavesyang akan digunakan pada langkah-langkah berikutnya. Rasio ini memberikan perkiraan di sekitar set data yang akan membantu Anda mencapai target perolehan.
Jika Anda bekerja dengan vektor dimensi tinggi (500 dimensi atau lebih) dan ingin meningkatkan perolehan, coba sesuaikan nilaiscann.pre_reordering_num_neighbors. Nilai default ditetapkan ke nilai500 * KdenganKadalah batas yang Anda tetapkan dalam kueri. - Jika QPS Anda terlalu rendah setelah kueri Anda mencapai perolehan target, ikuti langkah-langkah berikut:
- Buat ulang indeks, dengan meningkatkan nilai
num_leavesdanscann.num_leaves_to_searchsesuai dengan panduan berikut:- Tetapkan
num_leaveske faktor yang lebih besar dari akar kuadrat jumlah baris Anda. Misalnya, jika indeks memilikinum_leavesyang ditetapkan ke akar kuadrat jumlah baris, coba tetapkan ke dua kali akar kuadrat. Jika nilai sudah ganda, coba tetapkan ke tiga kali akar kuadrat. - Tingkatkan
scann.num_leaves_to_searchsesuai kebutuhan untuk mempertahankan rasionya dengannum_leaves, yang Anda catat di Langkah 3. - Tetapkan
num_leaveske nilai yang kurang dari atau sama dengan jumlah baris dibagi 100.
- Tetapkan
- Jalankan kueri pengujian lagi.
Saat Anda menjalankan kueri pengujian, lakukan eksperimen dengan mengurangi
scann.num_leaves_to_search, temukan nilai yang meningkatkan QPS sekaligus mempertahankan perolehan yang tinggi. Coba nilaiscann.num_leaves_to_searchyang berbeda tanpa membangun ulang indeks.
- Buat ulang indeks, dengan meningkatkan nilai
- Ulangi Langkah 4 hingga QPS dan rentang perolehan mencapai nilai yang dapat diterima.
Indeks hierarki tiga tingkat
Selain rekomendasi untuk indeks ScaNN pohon dua tingkat, gunakan panduan berikut.
Untuk menerapkan rekomendasi guna menemukan nilai optimal parameter indeks num_leaves dan max_num_levels, ikuti langkah-langkah berikut:
Buat indeks
ScaNNdengan kombinasinum_leavesdanmax_num_levelsberikut berdasarkan sasaran performa Anda:- menyeimbangkan waktu & kualitas pembuatan indeks: Tetapkan
max_num_levelssebagai2dannum_leavessebagaipower(rows, ⅔). - Mengoptimalkan kualitas: Tetapkan
max_num_levelssebagai2dannum_leavessebagairows/100.
- menyeimbangkan waktu & kualitas pembuatan indeks: Tetapkan
Jalankan kueri pengujian Anda. Untuk mengetahui informasi selengkapnya tentang menganalisis kueri, lihat Menganalisis kueri.
Catat rasio antara
scann.num_leaves_to_searchdannum_leavesyang akan digunakan pada langkah-langkah berikutnya. Rasio ini memberikan perkiraan di sekitar set data yang akan membantu Anda mencapai target perolehan.
Jika Anda bekerja dengan vektor dimensi tinggi (500 dimensi atau lebih tinggi) dan ingin meningkatkan perolehan, coba sesuaikan nilai scann.pre_reordering_num_neighbors. Nilai default ditetapkan ke nilai 500 * K dengan K adalah batas yang Anda tetapkan dalam kueri.
Jika QPS Anda terlalu rendah setelah kueri Anda mencapai target perolehan, ikuti langkah-langkah berikut:
- Buat ulang indeks, dengan meningkatkan nilai
num_leavesdanscann.num_leaves_to_searchsesuai dengan panduan berikut: - Tetapkan
num_leaveske faktorpower(rows, ⅔)yang lebih besar. Misalnya, jika indeks memilikinum_leavesyang ditetapkan kepower(rows, ⅔), coba tetapkan ke dua kali lipatpower(rows, ⅔). Jika nilainya sudah dua kali lipat, coba tetapkan menjadi tiga kali lipatpower(rows, ⅔). - Tingkatkan
scann.num_leaves_to_searchsesuai kebutuhan untuk mempertahankan rasionya dengannum_leaves, yang Anda catat di Langkah 3. - Tetapkan
num_leaveske nilai yang kurang dari atau sama denganrows/100. - Jalankan kueri pengujian lagi. Saat Anda menjalankan kueri pengujian, lakukan eksperimen dengan mengurangi
scann.num_leaves_to_search, temukan nilai yang meningkatkan QPS sekaligus mempertahankan perolehan yang tinggi. Coba nilaiscann.num_leaves_to_searchyang berbeda tanpa membangun kembali indeks.
- Buat ulang indeks, dengan meningkatkan nilai
Ulangi Langkah 4 hingga QPS dan rentang perolehan mencapai nilai yang dapat diterima.
Pemeliharaan indeks
Jika tabel Anda sering diperbarui atau disisipkan, sebaiknya indeks ulang ScaNN yang ada secara berkala untuk meningkatkan akurasi perolehan.
Anda dapat memantau metrik indeks untuk melihat perubahan pada distribusi vektor atau mutasi vektor sejak indeks dibuat, lalu mengindeks ulang sesuai kebutuhan. Untuk mengetahui informasi selengkapnya tentang metrik, lihat Metrik indeks vektor.