Visualizzare le metriche dell'indice vettoriale
Se la tua tabella è soggetta a aggiornamenti o inserimenti frequenti, ti consigliamo di reindicizzare periodicamente l'indice ScaNN esistente per migliorare l'accuratezza del recupero per l'indice. Puoi monitorare le metriche dell'indice per visualizzare le modifiche nelle distribuzioni dei vettori o nelle mutazioni dei vettori dalla creazione dell'indice e poi eseguire nuovamente l'indicizzazione di conseguenza.
Per saperne di più sulle metriche, consulta Visualizzare le metriche dell'indice vettoriale.
Mantenere gli indici automaticamente
Puoi utilizzare il flag del database scann.enable_index_maintenance
Grand Unified Configuration (GUC) insieme al parametro
auto_maintenance
a livello di indice durante la creazione di un indice ScaNN. L'utilizzo combinato di queste impostazioni consente ad AlloyDB di gestire in modo incrementale l'indice e dividere le partizioni outlier di grandi dimensioni man mano che il set di dati cresce. Dividendo le partizioni, AlloyDB tenta di fornire un numero maggiore di query al secondo (QPS) e risultati di ricerca migliori.
Gli aggiornamenti automatici dell'indice di manutenzione vengono mantenuti fino a quando AlloyDB non aggiorna nuovamente l'indice.
Per consentire ad AlloyDB di gestire automaticamente un indice, aggiungi l'estensione alloydb_scann
al parametro shared_preload_libraries
, attiva il flag del database scann.enable_index_maintenance
e poi carica l'estensione alloydb_scann
riavviando il database:
Carica l'estensione
alloydb_scann
nell'elencoshared_preload_libraries
:sudo sed -r -i "s|(shared_preload_libraries\s*=\s*)'(.*)'.*$|\1'\2,alloydb_scann'|" DATA_DIR/postgresql.conf
Verifica che la configurazione del parametro sia impostata correttamente:
grep -iE 'shared_preload_libraries' DATA_DIR/postgresql.conf
Attiva il flag
scann.enable_index_maintenance
impostandolo nel filepostgresql.conf
:scann.enable_index_maintenance = ON
Riavvia AlloyDB Omni affinché la modifica del parametro diventi effettiva:
Docker
docker container restart CONTAINER_NAME
Sostituisci
CONTAINER_NAME
con il nome assegnato al container AlloyDB Omni quando l'hai avviato.Podman
podman container restart CONTAINER_NAME
Sostituisci
CONTAINER_NAME
con il nome assegnato al container AlloyDB Omni quando l'hai avviato.
Dopo aver attivato il flag scann.enable_index_maintenance
, puoi attivare la manutenzione automatica per gli indici oppure puoi attivare la funzione scann_index_maintenance
per richiamare manualmente la manutenzione.
Abilita la manutenzione automatica durante la creazione dell'indice
Per creare un indice ScaNN con la manutenzione automatica abilitata, esegui il seguente comando di esempio:
CREATE INDEX INDEX_NAME ON TABLE
USING scann (EMBEDDING_COLUMN DISTANCE_FUNCTION)
WITH (num_leaves=NUM_LEAVES_VALUE, auto_maintenance=on);
Sostituisci quanto segue:
INDEX_NAME
: il nome dell'indice che vuoi creare, ad esempiomy-scann-index
. I nomi degli indici sono condivisi nel database. Assicurati che ogni nome di indice sia univoco per ogni tabella del database.TABLE
: la tabella a cui aggiungere l'indice.EMBEDDING_COLUMN
: una colonna che memorizza i dativector
.DISTANCE_FUNCTION
: la funzione di distanza da utilizzare con questo indice. Scegli una delle opzioni seguenti:Distanza L2:
l2
Prodotto scalare:
dot_product
Distanza coseno:
cosine
NUM_LEAVES_VALUE
: il numero di partizioni da applicare a questo indice. Imposta un valore compreso tra 1 e 1048576. Per ulteriori informazioni su come decidere questo valore, vedi Ottimizzare un indiceScaNN
.
Richiamare manualmente la manutenzione
Se vuoi richiamare la manutenzione di un indice specifico on demand, esegui questo comando:
SELECT AS scann_index_maintenance('INDEX_NAME');
Gestisci le foglie per cercare automaticamente le partizioni suddivise
Se hai attivato la manutenzione automatica degli indici, AlloyDB
divide automaticamente le partizioni quando viene raggiunta la soglia num_leaves
. Man mano che il numero di partizioni aumenta a causa di queste suddivisioni, devi modificare il numero di foglie da cercare per mantenere prestazioni ottimali.
Per gestire il numero di foglie da cercare automaticamente, utilizza
pct_leaves_to_search
. Questo parametro consente di specificare una percentuale del numero
di partizioni da cercare. Se prevedi una crescita significativa del set di dati, inizia impostando il valore di pct_leaves_to_search
su 1. Il parametro è
disattivato per impostazione predefinita.
Imposta questo valore sulla percentuale del 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.
Per impostare il flag pct_leaves_to_search
sul database, esegui questo comando:
ALTER DATABASE DATABASE_NAME SET scann.pct_leaves_to_search = PERCENTAGE_LEAVES_TO_SEARCH;
Sostituisci quanto segue:
DATABASE_NAME
: il nome del database.PERCENTAGE_LEAVES_TO_SEARCH
: la percentuale dinum_leaves
da cercare.
Ricostruire manualmente l'indice
Puoi ricompilare manualmente l'indice se vuoi ricompilarlo con le configurazioni specificate al momento della creazione.
Per ricompilare manualmente l'indice, esegui questo comando:
REINDEX INDEX CONCURRENTLY INDEX_NAME;
Sostituisci INDEX_NAME
con il nome dell'indice che vuoi
ricostruire, ad esempio my-scann-index
. I nomi degli indici sono condivisi
nel database. Assicurati che ogni nome di indice sia univoco per ogni
tabella del database.
Per saperne di più sulla reindicizzazione in PostgreSQL, consulta REINDEX.