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 ulteriori informazioni, 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 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 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 dimensione 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 |
Esegue automaticamente la manutenzione di 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 outlier di grandi dimensioni. In questo modo, QPS e risultati di ricerca vengono migliorati automaticamente. Per ulteriori informazioni, consulta Eseguire automaticamente la manutenzione degli indici. |
Creazione dell'indice (facoltativo) |
scann.pct_leaves_to_search |
Gestisce automaticamente il numero di partizioni in cui un indice vettoriale esegue la ricerca. Per ulteriori informazioni, 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ù elevati 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ù elevati 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 alla 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 abilitato. 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 è attivo.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 K-Nearest Neighbor (KNN). |
Runtime della query (facoltativo) |