pgvector 확장 — 대규모 벡터 운영 전략

pgvector 확장 — 대규모 벡터 운영 전략

벡터가 많아지면 워킹셋을 줄이고, 메모리를 키우고, 필요하면 샤딩까지 고려해야 해요. pgvector는 이 기준을 단계별로 제시합니다.

출처: https://github.com/pgvector/pgvector#scaling

워킹셋 줄이기

작업 세트를 작게 만들려면 두 가지를 먼저 적용합니다.

  1. 테이블은 vector 대신 halfvec 타입을 사용한다.
  2. 인덱스는 이진 양자화를 사용하고, 검색 시 재정렬(re-ranking)을 함께 적용한다.

이렇게 하면 저장 공간과 인덱스 메모리 부담이 크게 줄어들어요.

수직·수평 확장

  • 수직 확장: 단일 인스턴스에서 메모리·CPU·저장소를 늘리고, 기존 도구로 파라미터를 튜닝하며 모니터링합니다.
  • 수평 확장: Postgres replicas로 확장하거나, Citus, PgDog 같은 샤딩 방식을 사용합니다.

모니터링

pg_stat_statementsPgHero 같은 기존 Postgres 도구로 성능을 모니터링하면 돼요. 근사 검색 결과를 정확 검색과 비교해 recall을 점검하는 방법도 유용합니다. 임시로 인덱스를 꺼서 정확 검색을 수행해 비교하면 됩니다.

BEGIN;
SET LOCAL enable_indexscan = off; -- use exact search
SELECT ...
COMMIT;

더 알아보기