Questo documento descrive come ottimizzare gli indici per ottenere prestazioni delle query più veloci e un migliore recupero in AlloyDB Omni.
Ottimizzare un indice IVF
La regolazione dei valori impostati per i parametri lists
, ivf.probes
e quantizer
potrebbe
contribuire a ottimizzare il rendimento dell'applicazione:
Parametro di ottimizzazione | Descrizione | Tipo di parametro |
---|---|---|
lists |
Il numero di elenchi creati durante la creazione dell'indice. Il punto di partenza per impostare questo valore è (rows)/1000 per un massimo di un milione di righe e sqrt(rows) per più di un milione di righe. |
Creazione dell'indice |
quantizer |
Il tipo di quantizzatore che vuoi utilizzare per l'albero K-means. Il valore predefinito è SQ8 per migliorare il rendimento delle query. Imposta il valore su FLAT per un migliore ricordo. |
Creazione dell'indice |
ivf.probes |
il numero di elenchi più vicini da esplorare durante la ricerca. Il punto di partenza per questo valore è sqrt(lists) . |
Tempo di esecuzione della query |
Considera l'esempio seguente che mostra un indice IVF
con i parametri di ottimizzazione impostati:
SET LOCAL ivf.probes = 10;
CREATE INDEX my-ivf-index ON my-table
USING ivf (vector_column cosine)
WITH (lists = 100, quantizer = 'SQ8');
Analizzare le query
Utilizza il comando EXPLAIN ANALYZE
per analizzare gli approfondimenti sulle query come mostrato nella seguente query SQL di esempio.
EXPLAIN ANALYZE SELECT result-column
FROM my-table
ORDER BY EMBEDDING_COLUMN <-> embedding('text-embedding-005', 'What is a database?')::vector
LIMIT 1;
La risposta di esempio QUERY PLAN
include informazioni quali il tempo impiegato, il numero di righe scansionate o restituite e le risorse utilizzate.
Limit (cost=0.42..15.27 rows=1 width=32) (actual time=0.106..0.132 rows=1 loops=1)
-> Index Scan using my-scann-index on my-table (cost=0.42..858027.93 rows=100000 width=32) (actual time=0.105..0.129 rows=1 loops=1)
Order By: (embedding_column <-> embedding('text-embedding-005', 'What is a database?')::vector(768))
Limit value: 1
Planning Time: 0.354 ms
Execution Time: 0.141 ms
Visualizzare le metriche dell'indice vettoriale
Puoi utilizzare le metriche dell'indice vettoriale per esaminare il rendimento dell'indice vettoriale, identificare le aree da migliorare e ottimizzare l'indice in base alle metriche, se necessario.
Per visualizzare tutte le metriche dell'indice vettoriale, esegui la seguente query SQL, che utilizza la vista pg_stat_ann_indexes
:
SELECT * FROM pg_stat_ann_indexes;
Per saperne di più sull'elenco completo delle metriche, consulta Metriche dell'indice vettoriale.