pgvector 확장 — 대규모 벡터 운영 전략
pgvector 확장 — 대규모 벡터 운영 전략
벡터가 많아지면 워킹셋을 줄이고, 메모리를 키우고, 필요하면 샤딩까지 고려해야 해요. pgvector는 이 기준을 단계별로 제시합니다.
워킹셋 줄이기
작업 세트를 작게 만들려면 두 가지를 먼저 적용합니다.
- 테이블은
vector대신halfvec타입을 사용한다. - 인덱스는 이진 양자화를 사용하고, 검색 시 재정렬(re-ranking)을 함께 적용한다.
이렇게 하면 저장 공간과 인덱스 메모리 부담이 크게 줄어들어요.
수직·수평 확장
- 수직 확장: 단일 인스턴스에서 메모리·CPU·저장소를 늘리고, 기존 도구로 파라미터를 튜닝하며 모니터링합니다.
- 수평 확장: Postgres replicas로 확장하거나, Citus, PgDog 같은 샤딩 방식을 사용합니다.
모니터링
pg_stat_statements나 PgHero 같은 기존 Postgres 도구로 성능을 모니터링하면 돼요. 근사 검색 결과를 정확 검색과 비교해 recall을 점검하는 방법도 유용합니다. 임시로 인덱스를 꺼서 정확 검색을 수행해 비교하면 됩니다.
BEGIN;
SET LOCAL enable_indexscan = off; -- use exact search
SELECT ...
COMMIT;
더 알아보기
- 반정밀도 벡터는 Half-Precision Vectors 참고
- 이진 양자화는 Binary Vectors 참고
- 희소 벡터는 Sparse Vectors 참고