벡터 데이터베이스 선택 가이드 — Pinecone vs Weaviate vs pgvector
RAG 파이프라인의 핵심 인프라는 벡터 데이터베이스입니다. 텍스트를 수백 차원의 벡터로 변환해 저장하고, 코사인 유사도 기반으로 빠르게 검색합니다. 선택지가 많아 혼란스럽지만, 세 가지 기준으로 정리하면 명확해집니다.
주요 벡터 DB 비교
Pinecone — 완전 관리형 SaaS
import pinecone
pc = pinecone.Pinecone(api_key="YOUR_KEY")
index = pc.Index("my-rag-index")
# 업서트
index.upsert(vectors=[
{"id": "doc-1", "values": embedding, "metadata": {"text": "...", "source": "..."}}
])
# 검색
results = index.query(vector=query_embedding, top_k=5, include_metadata=True)장점: 인프라 관리 불필요, 자동 스케일링, 낮은 지연 시간 단점: 비용이 높음, 데이터 외부 전송, 무료 티어 제한
Weaviate — 오픈소스 + 하이브리드 검색
Weaviate의 차별점은 하이브리드 검색입니다. 벡터 유사도와 키워드(BM25) 검색을 동시에 활용합니다.
import weaviate
client = weaviate.connect_to_local()
# 하이브리드 검색
results = client.collections.get("Document").query.hybrid(
query="RAG 파이프라인 설계",
alpha=0.5, # 0=키워드, 1=벡터
limit=5
)alpha=0.5는 벡터와 키워드를 50:50으로 혼합합니다. 고유명사가 많은 도메인에서 특히 효과적입니다.
장점: 하이브리드 검색, 자체 호스팅 가능, 멀티테넌시 단점: 운영 복잡도, 메모리 사용량
pgvector — PostgreSQL 확장
이미 PostgreSQL을 쓰고 있다면 pgvector가 가장 현실적입니다.
-- 확장 활성화
CREATE EXTENSION IF NOT EXISTS vector;
-- 테이블 생성
CREATE TABLE documents (
id SERIAL PRIMARY KEY,
content TEXT,
embedding vector(1536)
);
-- 코사인 유사도 검색
SELECT content, 1 - (embedding <=> $1) AS similarity
FROM documents
ORDER BY embedding <=> $1
LIMIT 5;장점: 기존 인프라 활용, SQL 그대로, 트랜잭션 보장 단점: 수백만 건 이상에서 성능 저하 (HNSW 인덱스로 완화 가능)
선택 기준
스타트업 / MVP → pgvector (빠른 시작, 비용 최소)
프로덕션 SaaS → Pinecone (관리 부담 없음)
온프레미스 / 하이브리드 → Weaviate (자체 호스팅)
이미 PostgreSQL 사용 → pgvector (인프라 통합)HNSW vs IVFFlat — 인덱스 선택
벡터 DB를 쓸 때 인덱스 알고리즘도 중요합니다.
| 알고리즘 | 검색 속도 | 메모리 | 구축 시간 | 추천 상황 |
|---|---|---|---|---|
| HNSW | 빠름 | 높음 | 느림 | 읽기 중심, 고정 데이터 |
| IVFFlat | 중간 | 낮음 | 빠름 | 쓰기 빈번, 대용량 |
pgvector 기준으로 HNSW 인덱스 생성:
CREATE INDEX ON documents
USING hnsw (embedding vector_cosine_ops)
WITH (m = 16, ef_construction = 64);다음 편에서는 벡터 DB에 저장할 데이터를 어떻게 준비할지, 청킹 전략을 상세히 다룹니다.
이 글은 AI 에이전트가 자료 조사와 1차 초안 작성을 담당하고, 사람 편집자가 사실관계·출처·톤과 맥락을 검토한 뒤 발행했습니다. 환경(OS·버전)에 따라 결과가 다를 수 있으니 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요 — 확인 후 신속히 정정합니다.
댓글
첫 번째 댓글을 남겨보세요.