Per un tutorial passo passo su come implementare la ricerca vettoriale dall'inizio alla fine, consulta la guida su come eseguire una ricerca vettoriale.
Parametri di correzione
I seguenti parametri di indice e query vengono utilizzati per trovare il giusto equilibrio tra richiamo e query al secondo (QPS).
| Parametro di ottimizzazione | Descrizione | Tipo di opzione |
|---|---|---|
mode |
Definisce l'indice ScaNN come indice ottimizzato automaticamente o manualmente. Le opzioni disponibili sono le seguenti:
Per saperne di più, vedi Creare un indice ScaNN. |
Creazione dell'indice (facoltativo) |
max_num_levels |
Numero massimo di livelli di centroide dell'albero di clustering K-means. Per
indicazioni sull'impostazione di questo valore, consulta
Ottimizzare un indice ScaNN.
I valori disponibili sono:
Se imposti |
Creazione dell'indice (facoltativo) |
num_leaves |
Numero di partizioni da applicare a questo indice. Il valore massimo è
30000000. Per ulteriori informazioni sulla scelta di questo valore, consulta
Ottimizzare un indice ScaNN
e
Best practice per l'ottimizzazione degli indici ScaNN.
|
Creazione dell'indice (obbligatorio per indici ottimizzati manualmente) |
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%).Impostalo 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. |
Creazione dell'indice (facoltativo) |
auto_maintenance |
Gestisci automaticamente un indice ScaNN in modo che, man mano che il set di dati cresce, AlloyDB Omni analizzi e aggiorni i centroidi e divida le partizioni outlier di grandi dimensioni. In questo modo, QPS e risultati di ricerca vengono migliorati automaticamente. Per saperne di più, consulta Gestire automaticamente gli indici. |
Creazione dell'indice (facoltativo) |
scann.pct_leaves_to_search |
Gestisci automaticamente il numero di partizioni in cui viene eseguita la ricerca di un indice vettoriale. Per saperne di più, consulta Percentuale di partizioni di ricerca. | |
scann.num_leaves_to_search
|
Numero assoluto di partizioni da cercare. In questo modo puoi trovare un compromesso tra
il richiamo delle query e le QPS. Il valore predefinito è l'1% di
Valori più alti comportano un richiamo migliore delle query, ma un numero inferiore di QPS. Analogamente, valori più bassi comportano un richiamo delle query peggiore, ma un QPS migliore. |
Tempo di esecuzione della query (facoltativo) |
scann.pre_reordering_num_neighbors
|
Specifica il numero di vicini candidati da considerare durante le fasi di riordinamento una volta 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. Valori più alti comportano un richiamo migliore, ma QPS inferiore.
Il valore predefinito è |
Tempo di esecuzione della query (facoltativo) |
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. |
(Facoltativo) Durata di esecuzione della query |
|
Se impostato su relaxed_order, il flag di database risolve il problema del richiamo insufficiente. Un richiamo insufficiente può verificarsi quando il richiamo osservato di una query scende al di sotto del richiamo target, il che è più probabile quando si utilizzano i filtri. Questa impostazione consente di raggiungere il richiamo target consentendo alla scansione vettoriale di continuare la ricerca oltre il limite di num_leaves_to_search finché non viene trovato un numero sufficiente di risultati. |
(Facoltativo) Durata di esecuzione della query |
|
Questo flag del database imposta un limite superiore alla percentuale di nodi foglia totali che possono essere visitati per le query eseguite con scann.satisfy_limit abilitato. Questo è l'unico limite superiore disponibile per GUC e si applica sia alla modalità di ricerca automatica che a quella manuale. In questo modo si evita che la ricerca superi il limite, il che potrebbe peggiorare notevolmente il rendimento. Questo parametro è applicabile quando scann.satisfy_limit è attivato.Puoi impostare questo parametro su qualsiasi valore compreso tra 0 e 100. Il valore predefinito è 15%. Questo valore predefinito si basa sul presupposto che se una ricerca deve esaminare più del 15% delle foglie, è probabile che il filtro sia sufficientemente selettivo da non trarre vantaggio dalla ricerca Approximate Nearest Neighbor (ANN), rendendo il pre-filtraggio K-Nearest Neighbor (KNN) una scelta più adatta. |
(Facoltativo) Durata di esecuzione della query |