PostgreSQL용 AlloyDB에서 더 빠른 쿼리 성능과 더 나은 리콜을 달성하기 위해 다음 벡터 인덱스를 조정하는 방법을 알아보세요.
쿼리를 분석하고 벡터 색인 측정항목을 확인하여 쿼리 성능을 모니터링하고 개선할 수도 있습니다.
쿼리 분석
다음 예시 SQL 쿼리에서와 같이 EXPLAIN ANALYZE
명령어를 사용해 쿼리 통계를 분석합니다.
EXPLAIN ANALYZE SELECT result-column
FROM my-table
ORDER BY EMBEDDING_COLUMN <=> embedding('text-embedding-005', 'What is a database?')::vector
LIMIT 1;
예시 응답의 QUERY PLAN
에는 소요 시간, 스캔되거나 반환된 행 수, 사용된 리소스 등의 정보가 포함됩니다.
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
벡터 색인 측정항목 보기
벡터 색인 측정항목을 사용하여 벡터 색인의 성능을 검토하고, 개선이 필요한 영역을 파악하고, 필요한 경우 측정항목을 기반으로 색인을 조정할 수 있습니다.
모든 벡터 색인 측정항목을 보려면 pg_stat_ann_indexes
뷰를 사용하는 다음 SQL 쿼리를 실행하세요.
SELECT * FROM pg_stat_ann_indexes;
다음과 비슷한 출력이 표시됩니다.
-[ 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 }}
전체 측정항목 목록에 대한 자세한 내용은 벡터 색인 측정항목을 참조하세요.
다음 단계
- 벡터 색인 유지
- 임베딩 워크플로 예시에 대해 알아봅니다.