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 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
.
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.
Richiamare manualmente la manutenzione
Se vuoi richiamare la manutenzione di un indice specifico on demand, esegui questo comando:
SELECT scann_index_maintenance('INDEX_NAME');
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.
Passaggi successivi
Visualizza le metriche dell'indice vettoriale.