Creazione dell'indice ScaNN
Per ulteriori informazioni, consulta la documentazione di riferimento dell'indice ScaNN.
Indice ad albero a due livelli
Per applicare i consigli che ti aiutano a trovare i valori ottimali di num_leaves e num_leaves_to_search per il tuo set di dati,
segui questi passaggi consigliati:
- Per creare l'indice ScaNNottimizzato per i seguenti casi, imposta il parametronum_leavessul seguente valore, dove rows è il numero di righe nella tabella indicizzata:- balanced index build time and quality impostato su num_leavesasqrt(rows).
- quality imposta num_leaves su righe/100.
 
- balanced index build time and quality impostato su 
- Esegui le query di test, aumentando il valore di scann.num_of_leaves_to_search, finché non raggiungi l'intervallo di richiamo target, ad esempio il 95%. Per ulteriori informazioni sull'analisi delle query, vedi Analizzare le query.
- Prendi nota del rapporto tra scann.num_leaves_to_searchenum_leavesche verrà utilizzato nei passaggi successivi. Questo rapporto fornisce un'approssimazione del set di dati che ti aiuterà a raggiungere il richiamo target.
 Se lavori con vettori di dimensioni elevate (500 dimensioni o più) e vuoi migliorare il richiamo, prova a modificare il valore discann.pre_reordering_num_neighbors. Il valore predefinito è impostato sul valore500 * K, doveKè il limite impostato nella query.
- Se il tuo QPS è troppo basso dopo che le query raggiungono un richiamo target, segui questi passaggi:
- Ricrea l'indice, aumentando il valore di num_leavesescann.num_leaves_to_searchin base alle seguenti indicazioni:- Imposta num_leavessu un fattore maggiore della radice quadrata del numero di righe. Ad esempio, se l'indice hanum_leavesimpostato sulla radice quadrata del conteggio delle righe, prova a impostarlo sul doppio della radice quadrata. Se il valore è già il doppio, prova a impostarlo sul triplo della radice quadrata.
- Aumenta scann.num_leaves_to_searchin base alle necessità per mantenere il rapporto connum_leaves, che hai annotato nel passaggio 3.
- Imposta num_leavessu un valore minore o uguale al numero di righe diviso per 100.
 
- Imposta 
- Esegui di nuovo le query di test.
Mentre esegui le query di test, prova a ridurre scann.num_leaves_to_search, trovando un valore che aumenti le QPS mantenendo un richiamo elevato. Prova valori diversi discann.num_leaves_to_searchsenza ricompilare l'indice.
 
- Ricrea l'indice, aumentando il valore di 
- Ripeti il passaggio 4 finché sia il QPS sia l'intervallo di richiamo non avranno raggiunto valori accettabili.
Indice ad albero a tre livelli
Oltre ai consigli per l'indice ScaNN ad albero a due livelli, utilizza le seguenti indicazioni.
Per applicare i consigli per trovare il valore ottimale dei parametri di indice num_leaves e max_num_levels:
- Crea l'indice - ScaNNcon le seguenti combinazioni di- num_leavese- max_num_levelsin base ai tuoi obiettivi di rendimento:- bilancia il tempo di creazione dell'indice e la qualità: imposta max_num_levelscome2enum_leavescomepower(rows, ⅔).
- Ottimizza per la qualità: imposta max_num_levelscome2enum_leavescomerows/100.
 
- bilancia il tempo di creazione dell'indice e la qualità: imposta 
- Esegui le query di test. Per maggiori informazioni sull'analisi delle query, vedi Analizzare le query. 
- Prendi nota del rapporto tra - scann.num_leaves_to_searche- num_leavesche verrà utilizzato nei passaggi successivi. Questo rapporto fornisce un'approssimazione del set di dati che ti aiuterà a raggiungere il richiamo target.
Se lavori con vettori di dimensioni elevate (500 dimensioni o più) e vuoi migliorare il richiamo, prova a modificare il valore di scann.pre_reordering_num_neighbors. Il valore predefinito è impostato sul valore 500 * K, dove K è il limite impostato nella query.
- Se il tuo QPS è troppo basso dopo che le query raggiungono un richiamo target, segui questi passaggi: - Ricrea l'indice, aumentando il valore di num_leavesescann.num_leaves_to_searchin base alle seguenti indicazioni:
- Imposta num_leavessu un fattore maggiore dipower(rows, ⅔). Ad esempio, se l'indice hanum_leavesimpostato supower(rows, ⅔), prova a impostarlo sul doppio dipower(rows, ⅔). Se il valore è già doppio, prova a impostarlo sul triplo dipower(rows, ⅔).
- Aumenta scann.num_leaves_to_searchin base alle necessità per mantenere il rapporto connum_leaves, che hai annotato nel passaggio 3.
- Imposta un valore di num_leavesminore o uguale arows/100.
- Esegui di nuovo le query di test. Mentre esegui le query di test, prova a ridurre scann.num_leaves_to_search, trovando un valore che aumenti le QPS mantenendo un richiamo elevato. Prova valori diversi discann.num_leaves_to_searchsenza ricompilare l'indice.
 
- Ricrea l'indice, aumentando il valore di 
- Ripeti il passaggio 4 finché sia il QPS sia l'intervallo di richiamo non avranno raggiunto valori accettabili. 
Manutenzione indici
Se la tua tabella è soggetta a aggiornamenti o inserimenti frequenti, ti consigliamo di reindicizzare periodicamente l'indice ScaNN esistente per migliorare l'accuratezza del recupero.
Puoi monitorare le metriche dell'indice per visualizzare le modifiche nelle distribuzioni dei vettori o nelle mutazioni dei vettori dalla creazione dell'indice e poi eseguire nuovamente l'indicizzazione di conseguenza. Per saperne di più sulle metriche, consulta Metriche dell'indice vettoriale.