AI Sparkup

최신 AI 쉽게 깊게 따라잡기⚡

pgvector – PostgreSQL에서 벡터 유사도 검색을 구현하는 확장

pgvector는 PostgreSQL에 벡터 타입과 유사도 검색 기능을 추가하는 확장이다. 별도 벡터 데이터베이스를 도입하지 않고도 임베딩 저장, k-NN 검색, 필터링, 인덱싱을 기존 Postgres 운영 체계 안에서 처리할 수 있어 RAG와 추천 시스템의 실용적인 기본 선택지가 된다.

왜 pgvector인가

전용 벡터 DB는 대규모 검색에 강하지만, 운영 복잡도가 늘어난다. 반면 많은 서비스는 이미 Postgres에 사용자, 권한, 문서 메타데이터, 감사 로그를 저장한다. pgvector를 쓰면 벡터 검색과 관계형 필터를 같은 쿼리 안에서 다룰 수 있다.

CREATE EXTENSION vector;

CREATE TABLE documents (
  id bigserial PRIMARY KEY,
  title text,
  content text,
  embedding vector(1536)
);

거리 연산자

연산자의미사용 예
<->L2 거리이미지·센서 벡터처럼 크기 자체가 의미 있을 때
<#>inner product정규화된 벡터에서 점수 기반 정렬
<=>cosine distance텍스트 임베딩 검색의 일반적인 기본값
<+>L1 거리이상치에 덜 민감한 비교가 필요할 때

텍스트 임베딩 기반 RAG에서는 대개 cosine distance를 사용한다.

인덱스 선택

pgvector는 정확 검색뿐 아니라 Approximate Nearest Neighbor(ANN) 인덱스를 지원한다.

  • HNSW: 빌드 비용과 메모리를 더 쓰지만 검색 품질과 속도가 좋다.
  • IVFFlat: 학습/클러스터링 기반이며 큰 데이터셋에서 속도를 얻을 수 있지만 튜닝이 필요하다.

소규모 데이터에서는 인덱스 없이 시작해도 된다. 데이터가 늘고 지연 시간이 문제가 될 때 HNSW를 먼저 검토하는 편이 현실적이다.

RAG에서의 사용 패턴

SELECT id, title, content
FROM documents
WHERE workspace_id = $1
ORDER BY embedding <=> $2
LIMIT 5;

이 패턴의 장점은 벡터 검색 전에 워크스페이스, 권한, 문서 유형, 최신성 같은 필터를 적용할 수 있다는 점이다. 엔터프라이즈 RAG에서는 검색 품질만큼 접근 제어가 중요하므로, Postgres 내부에서 처리하는 구조가 단순하고 안전하다.

사용 대상

  • 초기 RAG 제품팀: 별도 벡터 DB 없이 빠르게 검색 저장소를 구성
  • Postgres 중심 SaaS: 기존 테넌트·권한·감사 모델과 벡터 검색을 결합
  • 데이터 엔지니어: SQL 기반 분석과 임베딩 검색을 같은 환경에서 운영

관련 문서

  • rag — 검색 증강 생성 기술 개요
  • rag-tutorial-vector-search-python — 벡터 검색을 파이썬에서 직접 구현해보는 튜토리얼
  • supavec — pgvector 기반 RAG-as-a-Service 대안
  • stash — Postgres와 pgvector 기반 에이전트 메모리 레이어

참고 자료



AI Sparkup 구독하기

최신 게시물 요약과 더 심층적인 정보를 이메일로 받아 보세요! (무료)