I seguenti parametri di indice e flag di database vengono utilizzati insieme per trovare il giusto equilibrio tra richiamo e QPS.
Parametro di ottimizzazione
Descrizione
Tipo di opzione
max_num_levels
Il numero massimo di livelli di centroide dell'albero di clustering K-means.
Indice ad albero a due livelli: impostato su 1 per impostazione predefinita per un albero a due livelli (1 livello di centroide + livello foglia inferiore).
Indice ad albero a tre livelli: impostato su 2 per impostazione predefinita per un albero a tre livelli (2 livelli di centroide + livello foglia inferiore)
Imposta il valore su 2 se il numero di righe del vettore supera i 100 milioni.
Imposta il valore su 1 se il numero di righe del vettore è inferiore a 10 milioni.
Imposta 1 o 2 se il numero di righe vettoriali è compreso tra 10 milioni e 100 milioni di righe per ottimizzare il tempo di creazione dell'indice (imposta su 2) o per ottimizzare il recupero della ricerca (imposta su 1).
Creazione dell'indice (facoltativo)
num_leaves
Il numero di partizioni da applicare a questo indice. Il numero di partizioni a cui applichi un indice al momento della creazione influisce sulle prestazioni dell'indice. Aumentando le partizioni per un numero fisso di vettori, crei un indice più granulare, che migliora il richiamo e le prestazioni delle query. Tuttavia, questo comporta tempi di creazione dell'indice più lunghi.
Poiché gli alberi a tre livelli vengono creati più velocemente di quelli a due livelli, puoi aumentare il valore di num_leaves_value durante la creazione di un indice ad albero a tre livelli per ottenere prestazioni migliori.
Indice a due livelli: imposta questo valore su un valore compreso tra 1 e 1048576.
Per un indice che bilancia la creazione rapida dell'indice e un buon rendimento della ricerca, utilizza sqrt(ROWS) come punto di partenza, dove ROWS è il numero di righe vettoriali. Il numero di vettori contenuti in ogni partizione viene calcolato in base a ROWS/sqrt(ROWS) = sqrt(ROWS).
Poiché è possibile creare un indice ad albero a due livelli su un set di dati con meno di 10 milioni di righe di vettori, ogni partizione conterrà meno di (sqrt(10M)) vettori, ovvero 3200 vettori. Per una qualità ottimale della ricerca vettoriale, è consigliabile ridurre al minimo il numero di vettori in ogni partizione. La dimensione consigliata della partizione è di circa 100 vettori per partizione, quindi imposta num_leaves su ROWS/100. Se hai 10 milioni di vettori,imposta num_leaves su 100.000.
Indice a tre livelli: imposta questo valore su un valore compreso tra 1 e 1048576.
Se non sai quale valore esatto selezionare, utilizza power(ROWS, 2/3) come punto di partenza, dove ROWS è il numero di righe del vettore. Il numero di vettori contenuti in ogni partizione viene calcolato in base a ROWS/power(ROWS, 2/3) = power(ROWS, 1/3).
Poiché è possibile creare un indice ad albero a tre livelli su un set di dati con più di 100 milioni di righe vettoriali, ogni partizione conterrà più di (power(100M, 1/3)) vettori, ovvero 465 vettori. Per una qualità ottimale della ricerca vettoriale, è consigliabile ridurre al minimo il numero di vettori in ogni partizione. La dimensione consigliata della partizione è di circa 100 vettori per partizione, quindi imposta num_leaves su ROWS/100. Se hai 100 milioni di vettori, imposteresti num_leaves a 1 milione.
Creazione dell'indice (obbligatorio)
quantizer
Il tipo di quantizzatore che vuoi utilizzare per l'albero K-means. Il valore predefinito è impostato su SQ8, che offre prestazioni migliori delle query con una perdita minima di recupero (in genere inferiore all'1-2%).
Imposta questo valore su FLAT se è necessario un recupero del 99% o superiore.
Creazione dell'indice (facoltativo)
scann.enable_pca
Attiva l'analisi delle componenti principali (PCA), una tecnica di riduzione delle dimensioni utilizzata per ridurre automaticamente
le dimensioni dell'incorporamento quando possibile. Questa opzione è attivata per impostazione predefinita.
Imposta su
false se noti un peggioramento del richiamo.
Questo flag del database consente di [gestire automaticamente il numero di foglie o partizioni da cercare](/alloydb/omni/15.7.1/docs/ai/maintain-vector-indexes#manage-leave-to-search-split-partitions). Imposta questo valore sul numero attuale di partizioni. Ad esempio, per cercare l'1% del numero attuale di partizioni, imposta questo valore su 1.
Puoi impostare questo parametro su qualsiasi valore compreso tra 0 e 100. Il valore predefinito è 0, che disattiva questo parametro e utilizza `scann.num_leaves_to_search` per calcolare il numero di foglie da cercare. Il parametro è disattivato per impostazione predefinita.
(Facoltativo) Durata di esecuzione della query
scann.num_leaves_to_search
Questo flag del database controlla il numero assoluto di foglie o partizioni da cercare, il che ti consente di trovare un compromesso tra richiamo e QPS. Il valore predefinito è l'1% del valore impostato in num_leaves.
Un valore più alto comporterà un richiamo migliore, ma QPS inferiore. Allo stesso modo, un valore inferiore comporterà un richiamo inferiore, ma un QPS più elevato.
(Facoltativo) Durata di esecuzione della query
scann.pre_reordering_num_neighbors
Il flag del database, se impostato, specifica il numero di vicini candidati da considerare durante le fasi di riordinamento dopo che la ricerca iniziale identifica un insieme di candidati. Imposta questo parametro su un valore superiore al numero di vicini che vuoi che la query restituisca.
Un valore più alto genera un richiamo migliore, ma un numero inferiore di QPS. Imposta questo valore su 0 per disattivare il riordino. Il valore predefinito è 0 se PCA non è abilitato durante la creazione dell'indice. In caso contrario, il valore predefinito è 50 x K, dove K è il valore LIMIT specificato nella query.
(Facoltativo) Durata di esecuzione della query
scann.num_search_threads
Il numero di thread di ricerca per la ricerca multithread. Ciò può contribuire a ridurre la latenza di una singola query utilizzando più di un thread per la ricerca ScaNN ANN nelle applicazioni sensibili alla latenza. Questa impostazione non migliora la latenza di una singola query se il database è già vincolato alla CPU. Il valore predefinito è 2.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Difficile da capire","hardToUnderstand","thumb-down"],["Informazioni o codice di esempio errati","incorrectInformationOrSampleCode","thumb-down"],["Mancano le informazioni o gli esempi di cui ho bisogno","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-09-04 UTC."],[[["\u003cp\u003eThis page provides detailed reference information regarding the tuning parameters for the ScaNN Index.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003emax_num_levels\u003c/code\u003e, \u003ccode\u003enum_leaves\u003c/code\u003e, and \u003ccode\u003equantizer\u003c/code\u003e parameters are used during index creation and can be adjusted for optimal performance based on the size of the vector dataset.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003escann.enable_pca\u003c/code\u003e parameter, enabled by default, uses Principal Component Analysis to reduce embedding size, but can be disabled if recall deteriorates.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003escann.num_leaves_to_search\u003c/code\u003e, \u003ccode\u003escann.pre_reordering_num_neighbors\u003c/code\u003e, and \u003ccode\u003escann.num_search_threads\u003c/code\u003e are query runtime parameters that impact the trade-off between recall and QPS, and can be adjusted based on application requirements.\u003c/p\u003e\n"],["\u003cp\u003eAdjusting the \u003ccode\u003enum_leaves\u003c/code\u003e parameter when creating an index can create a more fine-grained index, improving recall and query performance at the cost of longer index creation times.\u003c/p\u003e\n"]]],[],null,["# ScaNN index reference\n\nSelect a documentation version: 15.7.1keyboard_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)."]]