pgvector의 개요
pgvector는 PostgreSQL에 벡터 데이터 타입과 유사도 검색을 더합니다. 임베딩을 평범한 테이블 열에 저장하고 SQL로 조회하며, 같은 트랜잭션 안에서 다른 데이터와 조인하고 평범한 WHERE 절로 필터링합니다.
색인이 없으면 정확 검색을 합니다. 속도를 위해 근사 색인 두 가지를 제공합니다. HNSW(계층 그래프, 재현율이 더 좋고 메모리를 더 씀)와 IVFFlat(군집, 빌드가 빠르고 재현율이 약함)입니다. 전체 정밀도, 반정밀도, 이진, 희소 벡터를 지원합니다. 표준 vector 타입은 최대 16,000차원을 저장하지만 2,000차원까지만 색인하고, 반정밀도는 4,000차원까지, 이진은 64,000차원까지 색인합니다. 버전 0.8.0은 필터를 통과하는 행이 충분할 때까지 검색을 계속하는 반복 색인 스캔을 더했습니다.
Postgres 13 이상을 지원하지만 미출시 0.9.0은 13과 14를 뺄 예정이며, 거의 모든 관리형 Postgres 서비스에서 쓸 수 있습니다. 2026년 10월 1일의 최신 릴리스 0.8.7은 코드 실행으로 이어질 수 있는 보안 결함을 고칩니다.
pgvector, 쓸 만한 가치가 있습니까?
pgvector는 스택에서 서비스 하나를 통째로 없앱니다. 임베딩이 그것이 설명하는 문서와 같은 데이터베이스, 같은 백업, 같은 트랜잭션에 있으므로 동기화할 두 번째 저장소가 없고 필터는 평범한 SQL입니다. GitHub 스타는 약 23,450개이고 열린 이슈는 17개뿐이며, 미출시 0.9.0이 이미 변경 기록에 있습니다.
편안하게 쓸 범위는 마케팅이 말하는 것보다 좁습니다. Postgres 호스팅을 판매하는 Encore는 중간 부하(초당 수백 쿼리)에서 약 500만 벡터 미만이면 Pinecone과 대등하다고 보며, 500만에서 1,000만 사이에서는 shared_buffers, work_mem, HNSW 설정을 신중하게 튜닝해야 한다고 말합니다. 저장 공간이 그 이유를 설명합니다. README에 따르면 벡터 하나는 차원당 4바이트에 8을 더하므로, 1,536차원 임베딩 1,000만 개는 색인 전에 약 61.5 GB를 차지하고, 그래프가 maintenance_work_mem을 넘어서면 HNSW 빌드가 급격히 느려집니다. 반정밀도는 이를 절반으로 줄입니다. 그 지점을 넘으면 pgvectorscale이나 VectorChord가 데이터를 Postgres에 조금 더 오래 둘 수 있게 해 줍니다.
필터링에는 주의가 필요합니다. 근사 색인은 스캔 뒤에 필터링하며, README 자체 예시는 극명합니다. 기본 hnsw.ef_search 40에 행의 10%와 일치하는 필터라면 쿼리는 평균 약 4개의 결과를 돌려줍니다. 반복 스캔, 부분 색인, 테넌트별 파티셔닝이 이를 고치지만, 어느 것도 기본으로 켜져 있지 않습니다.
2026년에 나온 보안 수정은 조치할 가치가 있습니다. 병렬 HNSW 빌드의 버퍼 오버플로인 CVE-2026-3172는 색인을 만들 수 있는 사용자가 다른 테이블의 데이터를 유출할 수 있게 했습니다(0.6.0에서 0.8.1, 0.8.2에서 수정). 32비트 시스템에서만 생기는 IVFFlat 빌드 오버플로 CVE-2026-18022는 0.8.6에서 수정됐고, 역시 IVFFlat 빌드에 있는 CVE-2026-103484는 0.8.6까지의 모든 버전에서 임의 코드 실행으로 이어질 수 있으며 0.8.7에서 수정됐습니다. 관리형 서비스에서는 확장 버전이 사용자가 아니라 제공사의 일정을 따르며, 벤치마크 차트보다 이를 먼저 확인해야 할 진짜 이유가 바로 이것입니다.
제 역할을 하는 곳
Amazon RDS를 쓰는 SaaS 회사의 백엔드 엔지니어
지원 티켓 200만 건에 의미 검색 더하기
halfvec 열을 추가하고, 임베딩을 채우고, HNSW 색인을 만들고, 결과를 평범한 WHERE 절로 tickets 테이블과 조인합니다. 1,536차원이면 벡터 데이터가 약 6 GB로, 조금 더 큰 인스턴스면 새 서비스 없이 감당합니다.
고객 테넌트 400곳을 둔 B2B 스타트업의 엔지니어링 리드
RAG 검색에서 고객마다 문서를 분리하기
임베딩 테이블을 테넌트별로 파티셔닝하거나 부분 색인을 추가하고, 필터링 쿼리가 결과를 다 채우도록 반복 스캔을 켭니다. 행 수준 보안이 다른 테이블처럼 적용되므로, 격리에 팀이 이미 감사하는 통제를 씁니다.
관리형 벡터 데이터베이스 청구서를 따져 보는 CTO
벡터 검색에 별도 업체가 필요한지 결정하기
초당 수백 쿼리에서 약 500만 벡터 미만이면 Encore의 지침은 Postgres에 머무는 쪽을 권합니다. 백업 하나, 접근 모델 하나, 동기화 작업 없음입니다. 대가는 색인이 메모리를 넘어설 때의 튜닝 시간입니다.
도입 전 확인할 점
- 설정
- 관리형 Postgres에서는 CREATE EXTENSION vector;를 실행합니다. 자체 호스팅이라면 Postgres 13 이상용으로 소스(make, make install)나 패키지 관리자로 설치합니다. 업그레이드는 데이터베이스마다 ALTER EXTENSION vector UPDATE로 합니다.
- 연동
- 모든 Postgres 클라이언트나 ORM. 대부분의 언어에 vector 타입을 감싼 라이브러리가 있습니다. 프로젝트의 호스팅 제공사 이슈에 나열된 대형 관리형 서비스에서 지원되며, Open WebUI 같은 RAG 도구의 백엔드로 쓰입니다.
- 데이터와 개인정보
- 모든 것이 기존 백업, 역할, 행 수준 보안 아래 Postgres 인스턴스 안에 남고, 확장은 아무 데도 아무것도 보내지 않습니다. PostgreSQL License는 상업적 사용에 제한을 두지 않습니다.
- 대규모 사용 시 비용
- 라이선스 비용은 없고, 더 큰 데이터베이스 비용을 냅니다. 벡터 하나는 차원당 4바이트에 8을 더하므로 1,536차원 벡터 1,000만 개는 약 61.5 GB(halfvec이면 그 절반)에 색인이 더해지며, 빌드에는 그래프를 담을 만큼 큰 maintenance_work_mem이 필요합니다.
- 제한
- 색인 상한 2,000차원(반정밀도 4,000), 반복 스캔이 필요한 스캔 후 필터링, 메모리가 바닥나면 느려지는 HNSW 빌드, 수평 샤딩 없음, 0.9.0에서 Postgres 13과 14 지원 중 단.
좋은 점
- 추가 서비스 없음: 벡터, 행, 트랜잭션이 한곳에
- 평범한 SQL로 필터와 조인
- 거의 모든 관리형 Postgres에서 사용 가능
- 허용적인 PostgreSQL License
아쉬운 점
- 기본 상태의 필터링 쿼리는 요청보다 훨씬 적은 행을 돌려줄 수 있음
- 표준 타입은 2,000차원까지만 색인
- 2026년 CVE 세 건, 그중 하나는 0.8.7 이전에 코드 실행 허용
- 수십억 개 벡터나 매우 높은 쿼리율용이 아님
추천 대상
이미 Postgres를 쓰며 수백만 개 벡터 위에 RAG나 의미 검색을 만드는 팀.
pgvector 대안
pgvector: 자주 묻는 질문
- pgvector, 쓸 만한 가치가 있습니까?
- 이미 Postgres를 쓰는 대부분의 팀에게 전용 벡터 데이터베이스는 추가 인프라이며, pgvector가 이를 불필요하게 만듭니다. 평점은 5점 만점에 4.6점입니다.
- pgvector의 가격은 얼마입니까?
- PostgreSQL License의 무료 오픈소스입니다. 비용은 이미 운영하는 Postgres 인스턴스, 또는 더 큰 인스턴스뿐입니다.
- pgvector의 단점은 무엇입니까?
- 기본 상태의 필터링 쿼리는 요청보다 훨씬 적은 행을 돌려줄 수 있음; 표준 타입은 2,000차원까지만 색인; 2026년 CVE 세 건, 그중 하나는 0.8.7 이전에 코드 실행 허용; 수십억 개 벡터나 매우 높은 쿼리율용이 아님.
- pgvector에 적합한 사람은 누구입니까?
- 이미 Postgres를 쓰며 수백만 개 벡터 위에 RAG나 의미 검색을 만드는 팀.
- 팀이나 프로덕션 환경에서 pgvector의 비용은 얼마입니까?
- 라이선스 비용은 없고, 더 큰 데이터베이스 비용을 냅니다. 벡터 하나는 차원당 4바이트에 8을 더하므로 1,536차원 벡터 1,000만 개는 약 61.5 GB(halfvec이면 그 절반) 에 색인이 더해지며, 빌드에는 그래프를 담을 만큼 큰 maintenance_work_mem이 필요합니다.
- pgvector에 회사 데이터를 맡겨도 안전합니까?
- 모든 것이 기존 백업, 역할, 행 수준 보안 아래 Postgres 인스턴스 안에 남고, 확장은 아무 데도 아무것도 보내지 않습니다. PostgreSQL License는 상업적 사용에 제한을 두지 않습니다.
- pgvector의 가장 좋은 대안은 무엇입니까?
- 저희가 리뷰한 것 중 가장 가까운 대안은 Qdrant, Milvus, Weaviate, LanceDB 및 Chroma입니다.
답변 확인일: 2026년 10월 23일.
