TechFeedTechFeed
Backend

pgvector vs Pinecone vs Qdrant — 벡터 데이터베이스 실전 비교 2026

RAG 파이프라인과 AI 앱에서 벡터 DB를 선택할 때 가장 자주 충돌하는 세 선택지를 비교한다. pgvector(PostgreSQL 통합), Pinecone(완전 관리형 SaaS), Qdrant(Rust 기반 오픈소스)의 인덱스 방식, 필터링 성능, 비용, 운영 오버헤드를 실제 코드와 비교표로 정리하고, 팀 상황별 선택 기준을 제시한다.

RAG 파이프라인을 만들 때마다 같은 질문이 반복된다. pgvector로 PostgreSQL에 통합할까, Pinecone SaaS로 갈까, Qdrant를 직접 운영할까. 이 셋은 각자가 최적인 케이스가 명확히 다르다. 데이터 규모, 팀 운영 역량, 비용 예산, 필터링 복잡도에 따라 답이 달라진다. 이 글은 비교표와 코드 예시로 세 선택지를 해부하고, 어떤 케이스에 무엇을 써야 하는지 기준을 잡아준다.

벡터 DB 선택이 왜 까다로운가

처음 RAG를 만들 때는 대부분 pgvector로 시작한다. PostgreSQL이 이미 있으면 설치 한 줄이다. 문제는 데이터가 수백만 개를 넘거나, 검색 레이턴시가 수십 ms 이하가 필요하거나, 팀에 DB 운영 역량이 없을 때 발생한다. 반대로 Pinecone을 바로 채택하면 초반에는 편하지만 쿼리당 비용이 누적되면서 스케일 구간에서 예산 충격이 온다. 벡터 DB 선택은 지금 팀의 규모, 데이터 볼륨, 운영 역량, 비용 예산 네 가지 축을 동시에 고려해야 한다.
2026년 기준 주요 벡터 DB 옵션은 다음과 같다: pgvector(PostgreSQL 확장, 무료 오픈소스), Pinecone(완전 관리형 SaaS, 서버리스/파드 플랜), Qdrant(Rust 기반 오픈소스, 클라우드 옵션 제공), Weaviate(GraphQL API, 모듈 에코시스템), Chroma(로컬 프로토타이핑 특화), Milvus(Zilliz 관리형 포함). 이 글은 실무에서 가장 자주 충돌하는 세 가지 — pgvector, Pinecone, Qdrant를 집중 비교한다.
벡터 데이터베이스 비교 pgvector Pinecone Qdrant
2026년 기준 벡터 DB 주요 선택지와 위치

세 선택지 핵심 비교표

스펙만 보면 Qdrant가 우위지만 실제 선택은 팀의 운영 역량과 기존 스택에 따라 달라진다. pgvector는 새 인프라 없이 기존 PostgreSQL에 통합된다는 점에서 독보적이고, Pinecone은 인프라 관리 없이 API 키 하나로 프로덕션에 투입할 수 있다는 장점이 있다.

pgvector — PostgreSQL 안에 벡터를 넣다

pgvector는 PostgreSQL 확장이다. CREATE EXTENSION vector; 한 줄로 활성화되고, 기존 테이블에 vector(1536) 컬럼을 추가하면 유사도 검색이 바로 된다. 가장 큰 강점은 기존 SQL 인프라와 완전히 통합된다는 것이다. 트랜잭션, 조인, PostgreSQL의 모든 필터링을 그대로 쓸 수 있고, 별도 인프라 추가 없이 벡터 검색을 도입할 수 있다.
pgvector 기본 설정 및 HNSW 인덱스
-- 확장 설치 CREATE EXTENSION IF NOT EXISTS vector; -- 테이블 생성 CREATE TABLE documents ( id SERIAL PRIMARY KEY, content TEXT, metadata JSONB, embedding vector(1536) ); -- HNSW 인덱스 생성 (권장, IVFFlat보다 업데이트 유연) CREATE INDEX ON documents USING hnsw (embedding vector_cosine_ops) WITH (m = 16, ef_construction = 64); -- 코사인 유사도 검색 SELECT id, content, 1 - (embedding <=> $1) AS similarity FROM documents WHERE metadata->>'source' = 'file.pdf' ORDER BY embedding <=> $1 LIMIT 10;
pgvector의 현실적인 한계도 명확하다. HNSW 인덱스 빌드 시 메모리 사용량이 크고, 벡터 수가 수백만 개를 넘어가면 PostgreSQL 서버 자체가 병목이 된다. 실시간 업데이트가 잦은 경우 인덱스 정확도 저하 문제도 있다. pgvector가 맞는 경우: 이미 PostgreSQL을 쓰는 팀, 100만 벡터 이하, 복잡한 SQL 필터가 필요한 경우, 인프라 추가를 피하고 싶은 경우.
Pinecone 서버리스 벡터 데이터베이스
Pinecone 서버리스 아키텍처 — 스토리지와 쿼리 처리가 분리된 구조

Pinecone — 관리형 벡터 DB의 표준

Pinecone은 2026년 기준 가장 많이 쓰이는 관리형 벡터 DB다. 서버리스 플랜은 스토리지는 무료고 쿼리 단위로 과금된다(1K 쿼리당 약 $0.001). 파드 기반 플랜은 전용 인프라를 예약하고 월정액으로 운영한다. API 인터페이스가 단순하고, 네임스페이스로 멀티테넌트 분리가 쉽다. LangChain, LlamaIndex, OpenAI 공식 예제에 가장 많이 등장하는 선택지다.
Pinecone Python SDK 기본 사용법
from pinecone import Pinecone pc = Pinecone(api_key="YOUR_API_KEY") # 서버리스 인덱스 생성 pc.create_index( name="docs", dimension=1536, metric="cosine", spec={"serverless": {"cloud": "aws", "region": "us-east-1"}} ) index = pc.Index("docs") # 벡터 업서트 (배치) index.upsert(vectors=[ {"id": "doc1", "values": embedding, "metadata": {"source": "file.pdf", "page": 1}}, {"id": "doc2", "values": embedding2, "metadata": {"source": "file.pdf", "page": 2}} ]) # 메타데이터 필터 + 검색 results = index.query( vector=query_embedding, top_k=10, filter={"source": {"$eq": "file.pdf"}}, include_metadata=True )
Pinecone의 단점은 비용과 벤더 종속이다. 서버리스는 쿼리 수가 늘면 비용이 선형 증가하고, 파드 플랜은 s1.x1 기준 월 $70부터 시작해 스케일 업 시 빠르게 올라간다. 데이터가 외부로 나가기 때문에 규정 준수(온프레미스 요건)가 있는 경우 사용 불가다. Pinecone이 맞는 경우: 인프라 운영 역량이 없는 팀, 빠른 프로덕션 출시 우선, 쿼리량이 예측 가능하고 비용이 허용되는 경우.

Qdrant — Rust 기반 고성능 오픈소스

Qdrant는 Rust로 작성된 오픈소스 벡터 DB로, 성능과 유연성 면에서 세 선택지 중 스펙이 가장 높다. 페이로드 필터링이 인덱스 레벨에서 동작해 복잡한 필터 + 벡터 검색 조합에서 pgvector나 Pinecone보다 빠른 경우가 많다. 최대 65,535 차원 지원, 스파스 + 덴스 혼합 검색(하이브리드 BM25+벡터), 양자화(Quantization)로 메모리 효율을 크게 높일 수 있다.
Qdrant Python SDK 기본 사용법
from qdrant_client import QdrantClient from qdrant_client.models import VectorParams, Distance, PointStruct, Filter, FieldCondition, MatchValue client = QdrantClient(url="http://localhost:6333") # 컬렉션 생성 client.create_collection( collection_name="docs", vectors_config=VectorParams(size=1536, distance=Distance.COSINE) ) # 포인트 업서트 (페이로드 포함) client.upsert( collection_name="docs", points=[ PointStruct(id=1, vector=embedding, payload={"source": "file.pdf", "page": 1}), ] ) # 페이로드 필터 + 벡터 검색 results = client.search( collection_name="docs", query_vector=query_embedding, query_filter=Filter( must=[FieldCondition(key="source", match=MatchValue(value="file.pdf"))] ), limit=10, with_payload=True )
Qdrant Cloud는 1GB 무료 클러스터를 제공하며 그 이상은 월 $25부터 시작한다. 셀프호스트 Docker는 완전히 무료다. 단점은 운영 오버헤드다. 프로덕션에서 가용성, 샤딩, 스냅샷 백업 전략을 직접 관리해야 하고, 장애 대응 프로세스를 팀이 직접 구축해야 한다. Qdrant가 맞는 경우: 고성능 유사도 검색이 핵심 기능, 1000만 벡터 이상 대용량, 비용 최적화 우선, 하이브리드 검색이 필요한 경우.
벡터 데이터베이스 상황별 선택 기준
팀 상황에 따른 벡터 DB 선택 기준

상황별 선택 기준

선택 기준을 단순화하면 이렇다: 기존 PostgreSQL 스택에 통합하고 싶으면 pgvector, 인프라 관리 없이 빠르게 배포하고 싶으면 Pinecone, 고성능과 비용 효율을 동시에 원하면 Qdrant다. 세 선택지 모두 LangChain, LlamaIndex 등 주요 RAG 프레임워크와 네이티브로 통합된다.

성능과 비용: 실무 수치

ANN Benchmarks 기준으로, HNSW를 쓰는 pgvector, Pinecone, Qdrant 모두 100만 벡터 기준 P99 레이턴시 10ms 이하를 달성할 수 있다. 차이는 메모리 사용량과 운영 비용에서 난다.

비용 비교 (1M 벡터 1536차원, 월 10만 쿼리 기준):
  • pgvector: AWS RDS r6g.large 기준 월 약 $150 (DB 전체 비용), 벡터 검색 추가 비용 없음
  • Pinecone 서버리스: 스토리지 $0.033/GB·월 + 쿼리 $0.001/1K = 약 $50~80/월
  • Qdrant Cloud: 4GB 메모리 클러스터 약 $50/월, 셀프호스트는 서버 비용만
쿼리가 월 100만 개를 넘으면 Pinecone 비용이 빠르게 올라가고, 이 시점부터 Qdrant 셀프호스트 전환을 검토하는 팀이 많다.

전환 전략 — 어떻게 마이그레이션하나

벡터 DB는 한 번 고르면 마이그레이션 비용이 크다. 임베딩 벡터 자체는 이식 가능하지만 메타데이터 스키마, 필터링 로직, SDK 코드를 모두 바꿔야 한다. 실무에서 권장하는 전략:

① 프로토타입은 pgvector로 시작해 데이터 특성과 쿼리 패턴을 파악한다.
② 10만 벡터 이상, 검색이 핵심 기능이면 Qdrant 셀프호스트를 병행 테스트한다.
③ 팀 규모가 작고 운영이 부담이면 Pinecone 서버리스 도입 후 비용이 $200/월을 넘는 시점에 Qdrant Cloud 또는 셀프호스트 전환을 검토한다.
LangChain 추상화 팁: 세 선택지 모두 langchain-community에서 PGVector, Pinecone, Qdrant 클래스로 동일한 VectorStore 인터페이스를 제공한다. 처음부터 추상화 레이어를 쓰면 나중에 백엔드를 교체할 때 애플리케이션 코드 변경을 최소화할 수 있다.
pgvectorPineconeQdrant벡터 데이터베이스RAG벡터 검색LangChainLlamaIndexPostgreSQL오픈소스

관련 포스트

PostgreSQL 커넥션 풀 고갈로 서비스가 멈춘 새벽 3시 — PgBouncer 도입과 연결 관리 재설계 실전 기록2026-04-21Drizzle ORM 실전 가이드 — TypeScript 네이티브 ORM2026-03-17PostgreSQL 17 주요 변경점과 마이그레이션 가이드2026-03-17PostgreSQL 쿼리 성능 최적화 실전 가이드 — EXPLAIN부터 인덱스 전략까지2026-03-22