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 correzione | Descrizione | Tipo di opzione |
|---|---|---|
mode |
Definisce l'indice ScaNN come indice ottimizzato automaticamente o manualmente
indice. Le opzioni disponibili sono le seguenti:
Per saperne di più, consulta Creare un indice ScaNN. |
Creazione dell'indice (facoltativo) |
max_num_levels |
Numero massimo di livelli di centroidi dell'albero di clustering K-means. Per
indicazioni sull'impostazione di questo valore, consulta
Ottimizzare un indice ScaNN.
I valori disponibili sono i seguenti:
Se imposti |
Creazione dell'indice (facoltativo) |
num_leaves |
Numero di partizioni da applicare a questo indice. Il valore massimo è
30000000. Per saperne di più sulla scelta di questo valore, consulta
Ottimizzare un indice ScaNN
e
Best practice per l'ottimizzazione degli indici ScaNN.
|
Creazione dell'indice (obbligatorio per gli 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 di query migliori con una perdita di richiamo minima (in genere inferiore all'1-2%).Impostalo su FLAT se è richiesto un richiamo del 99% o superiore. |
Creazione dell'indice (facoltativo) |
scann.enable_pca |
Attiva l'analisi delle componenti principali (PCA), una tecnica di riduzione della dimensionalità utilizzata per ridurre automaticamente
le dimensioni dell'embedding, se possibile. Questa opzione è attivata per impostazione predefinita. Imposta questo valore su false se noti un deterioramento del richiamo. |
Creazione dell'indice (facoltativo) |
auto_maintenance |
Gestisci automaticamente un indice ScaNN in modo che, man mano che il set di dati aumenta, AlloyDB Omni analizzi e aggiorni i centroidi e divida le partizioni di 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 che un indice vettoriale cerca. Per saperne di più, consulta Cercare la percentuale di partizioni. | |
scann.num_leaves_to_search
|
Numero assoluto di partizioni da cercare. In questo modo puoi trovare un compromesso tra
il richiamo delle query e QPS. Il valore predefinito è l'1% di
Valori più alti comportano un richiamo delle query migliore, ma un QPS inferiore. Allo stesso modo, valori più bassi comportano un richiamo delle query peggiore, ma un QPS migliore. |
Runtime 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 un QPS inferiore.
Il valore predefinito è |
Runtime della query (facoltativo) |
scann.num_search_threads |
Il numero di thread di ricerca per la ricerca multithread. Questo può contribuire a ridurre la latenza delle singole query utilizzando più di un thread per la ricerca ScaNN ANN nelle applicazioni sensibili alla latenza. Questa impostazione non migliora la latenza delle singole query se il database è già vincolato dalla CPU. Il valore predefinito è 2. |
Runtime della query (facoltativo) |
|
Se impostato su relaxed_order, il flag del database risolve il problema del richiamo insufficiente. Un richiamo insufficiente può verificarsi quando il richiamo osservato di una query è inferiore al 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 num_leaves_to_search finché non viene trovato un numero sufficiente di risultati. |
Runtime della query (facoltativo) |
|
Questo flag del database imposta un limite superiore alla percentuale di foglie totali che possono essere visitate per le query eseguite con scann.satisfy_limit attivato. Questo è l'unico GUC limite superiore disponibile e si applica sia alla modalità di ricerca automatica sia a quella manuale. Impedisce alla ricerca di superare il limite, il che potrebbe ridurre significativamente le prestazioni. Questo è 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 fornire un vantaggio alla ricerca Approximate Nearest Neighbor (ANN), rendendo la scelta più adatta il filtro preliminare K-Nearest Neighbor (KNN). |
Runtime della query (facoltativo) |