Per un tutorial passo passo su come implementare Vector Search 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 un indice ottimizzato automaticamente o manualmente. Le opzioni disponibili sono le seguenti:
Per saperne di più, consulta Crea 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 Ottimizza 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. Per PostgreSQL 17 e versioni successive, il valore massimo è 104857600. Per PostgreSQL 16 e versioni precedenti, il valore massimo è 30000000. Per saperne di più sulla scelta di questo valore, consulta Ottimizza 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 pari o superiore al 99%. |
Creazione dell'indice (facoltativo) |
scann.enable_pca |
Abilita l'analisi delle componenti principali (PCA), una tecnica di riduzione delle dimensioni utilizzata per ridurre automaticamente le dimensioni dell'embedding, se possibile. Questa opzione è attiva per impostazione predefinita. Imposta su false se osservi 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 suddivida le partizioni di outlier di grandi dimensioni. In questo modo, le QPS e i risultati di ricerca migliorano automaticamente. Per saperne di più, consulta Gestisci gli indici automaticamente. |
Creazione dell'indice (facoltativo) |
scann.pct_leaves_to_search |
Gestisci automaticamente il numero di partizioni in cui un indice vettoriale esegue la ricerca. Per saperne di più, consulta Percentuale di partizioni di ricerca. | |
scann.num_leaves_to_search
|
Numero assoluto di partizioni in cui eseguire la ricerca. In questo modo puoi trovare un compromesso tra il richiamo delle query e le QPS. Il valore predefinito è l'1% di Valori più elevati comportano un richiamo migliore delle query, ma un numero di QPS inferiore. 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 dopo che la ricerca iniziale ha identificato 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 numero di QPS inferiore.
Il valore predefinito è |
Tempo di esecuzione della query (facoltativo) |
scann.num_search_threads |
Il numero di thread di ricerca per la ricerca multi-thread. In questo modo, è possibile ridurre la latenza di una singola query utilizzando più di un thread per la ricerca ScaNN ANN in applicazioni sensibili alla latenza. Questa impostazione non migliora la latenza di una singola query se il database è già limitato dalla CPU. Il valore predefinito è 2. |
Tempo di esecuzione della query (facoltativo) |
|
Se impostato su relaxed_order, il flag di database risolve il problema del richiamo insufficiente. Il 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 num_leaves_to_search fino a trovare un numero sufficiente di risultati. |
Tempo di esecuzione della query (facoltativo) |
|
Questo flag di 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 limite superiore GUC disponibile e si applica alle modalità di ricerca automatica e manuale. In questo modo si evita che la ricerca vada oltre, il che potrebbe ridurre notevolmente le prestazioni. Questo vale 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 abbastanza selettivo da non trarre vantaggio dalla ricerca del vicino più prossimo (ANN), rendendo il pre-filtraggio del vicino più prossimo (KNN) una scelta più adatta. |
Tempo di esecuzione della query (facoltativo) |