Scopri come ottimizzare i seguenti indici vettoriali per ottenere prestazioni delle query più veloci e un migliore richiamo in AlloyDB per PostgreSQL:
Puoi anche analizzare le query e visualizzare le metriche dell'indice vettoriale per monitorare e migliorare le prestazioni delle query.
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 di miglioramento 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;
Vedi un output simile al seguente:
-[ RECORD 1 ]----------+---------------------------------------------------------------------------
relid | 271236
indexrelid | 271242
schemaname | public
relname | t1
indexrelname | t1_ix1
indextype | scann
indexconfig | {num_leaves=100,quantizer=SQ8}
indexsize | 832 kB
indexscan | 0
insertcount | 250
deletecount | 0
updatecount | 0
partitioncount | 100
distribution | {"average": 3.54, "maximum": 37, "minimum": 0, "outliers": [37, 12, 11, 10, 10, 9, 9, 9, 9, 9]}
distributionpercentile |{"10": { "num_vectors": 0, "num_partitions": 0 }, "25": { "num_vectors": 0, "num_partitions": 30 }, "50": { "num_vectors": 3, "num_partitions": 30 }, "75": { "num_vectors": 5, "num_partitions": 19 }, "90": { "num_vectors": 7, "num_partitions": 11 }, "95": { "num_vectors": 9, "num_partitions": 5 }, "99": { "num_vectors": 12, "num_partitions": 4 }, "100": { "num_vectors": 37, "num_partitions": 1 }}
Per saperne di più sull'elenco completo delle metriche, consulta Metriche dell'indice vettoriale.
Passaggi successivi
- Mantieni gli indici vettoriali.
- Scopri di più su un esempio di workflow di incorporamento.