Visualizzare le metriche dell'indice vettoriale
Se la tua tabella è soggetta a aggiornamenti o inserimenti frequenti, ti consigliamo di ricreare 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_scannnell'elencoshared_preload_libraries:sudo sed -r -i "s|(shared_preload_libraries\s*=\s*)'(.*)'.*$|\1'\2,alloydb_scann'|" DATA_DIR/postgresql.confVerifica che la configurazione del parametro sia impostata correttamente:
grep -iE 'shared_preload_libraries' DATA_DIR/postgresql.confAttiva il flag
scann.enable_index_maintenanceimpostandolo nel filepostgresql.conf:scann.enable_index_maintenance = ONRiavvia AlloyDB Omni affinché la modifica del parametro diventi effettiva:
Docker
docker container restart CONTAINER_NAMESostituisci
CONTAINER_NAMEcon il nome assegnato al container AlloyDB Omni quando l'hai avviato.Podman
podman container restart CONTAINER_NAMESostituisci
CONTAINER_NAMEcon 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:
l2Prodotto scalare:
dot_productDistanza 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_leavesda 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.