Questa pagina descrive le opzioni per la gestione degli indici di vettori. La manutenzione degli indici contribuisce ad assicurarne l'adattamento alle modifiche dei dati che potrebbero influire sull'accuratezza dei risultati di ricerca. Utilizza le strategie in questa pagina per evitare il peggioramento del rendimento delle query man mano che il set di dati cresce.
Visualizzare le metriche dell'indice di vettori
Se la tua tabella è soggetta a frequenti aggiornamenti o inserzioni, ti consigliamo di ricreare periodicamente l'indice ScaNN esistente per migliorare l'accuratezza del recupero dell'indice. Puoi monitorare le metriche dell'indice per visualizzare le modifiche nelle distribuzioni o nelle mutazioni dei vettori dall'i nizio della creazione dell'indice, quindi eseguire nuovamente l'indicizzazione di conseguenza.
Per ulteriori informazioni sulle metriche, consulta Visualizzare le metriche dell'indice vettoriale.
Gestire gli indici automaticamente
Puoi utilizzare il flag del database scann.enable_preview_features
(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 l'indice in modo incrementale in modo che, quando il set di dati cresce, suddivida le partizioni con molti valori anomali. Con la suddivisione delle partizioni, AlloyDB tenta di fornire un QPS e risultati di ricerca migliori.
Eventuali aggiornamenti apportati all'indice a seguito della manutenzione automatica sono permanenti fino a quando AlloyDB non aggiorna di nuovo l'indice.
Per consentire ad AlloyDB di gestire automaticamente un indice, attiva il flag scann.enable_preview_features
:
gcloud alloydb instances update INSTANCE_ID \
--database-flags scann.enable_preview_features=on \
--region=REGION_ID \
--cluster=CLUSTER_ID \
--project=PROJECT_ID
Sostituisci quanto segue:
INSTANCE_ID
: l'ID dell'istanza.REGION_ID
: la regione in cui è posizionata l'istanza, ad esempious-central1
.CLUSTER_ID
: l'ID del cluster in cui è posizionata l'istanza.PROJECT_ID
: l'ID del progetto in cui è posizionato il cluster.
Dopo aver attivato il flag scann.enable_preview_features
, puoi attivare la manutenzione automatica per gli indici oppure puoi attivare la funzione scann_index_maintenance
per richiamare manualmente la manutenzione.
Attiva 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 da creare, ad esempiomy-scann-index
. I nomi degli indici vengono 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, consulta Ottimizzare un indiceScaNN
.
Gestire le foglie per cercare automaticamente le partizioni suddivise
Se hai attivato la manutenzione automatica degli indici, AlloyDB suddivide 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 fogli da cercare per mantenere un rendimento ottimale.
Per gestire automaticamente il numero di foglie da cercare, utilizza
pct_leaves_to_search
. Questo parametro consente di specificare una percentuale del numero di partizioni da cercare. Se prevedi che il set di dati aumenterà notevolmente, inizia impostando il valore pct_leaves_to_search
su 1. Il parametro è disabilitato per impostazione predefinita.
Imposta questo valore sulla percentuale del numero corrente di partizioni. Ad esempio, per eseguire la ricerca dell'1%
del numero corrente 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 nodi da cercare.
Per impostare il flag pct_leaves_to_search
nel database, esegui il seguente 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
per la ricerca.
Richiamare manualmente la manutenzione
Se vuoi invocare la manutenzione di un determinato indice on demand, esegui il seguente comando:
SELECT scann_index_maintenance('INDEX_NAME');
Ricostruire manualmente l'indice
Puoi ricostruire manualmente l'indice se vuoi farlo con le configurazioni specificate al momento della creazione.
Per ricostruire manualmente l'indice, esegui il seguente comando:
REINDEX INDEX CONCURRENTLY INDEX_NAME;
Sostituisci INDEX_NAME
con il nome dell'indice da ricostruire, ad esempio my-scann-index
. I nomi degli indici vengono condivisi nel database. Assicurati che ogni nome di indice sia univoco per ogni tabella del database.
Per saperne di più sul ricoindicizzazione in PostgreSQL, consulta REINDEX.