RAG(Retrieval-Augmented Generation) 시스템을 만들려고 결심했습니다. LangChain도 배웠고, OpenAI API 키도 준비했습니다. 이제 마지막 단계: 벡터 데이터베이스(Vector Database) 선택입니다.
그런데 선택지가 너무 많습니다. Pinecone? Weaviate? ChromaDB? FAISS? Qdrant? Milvus? 각자 "우리가 최고!"라고 주장합니다. 어떤 걸 써야 할까요?
이 글은 3년차 AI 엔지니어가 4개 벡터 DB를 전부 프로덕션에서 써보고 정리한 완벽 가이드입니다. 당신의 프로젝트에 맞는 벡터 DB를 찾아드리겠습니다.
| 벡터 DB | 장점 | 단점 | 추천 대상 |
|---|---|---|---|
| ChromaDB | 설치 30초, 무료, 로컬 실행 | 대규모 확장 제한 | MVP, 프로토타입, 스타트업 초기 |
| Pinecone | 관리형, 무한 확장, 속도 빠름 | 유료 ($70/월~), 클라우드만 | 프로덕션, 대용량, 빠른 배포 |
| Weaviate | 오픈소스, 하이브리드 검색, 커스터마이징 | 자체 호스팅 필요 | 온프레미스, 데이터 주권 중요 |
| FAISS | Meta 개발, 초고속, 무료 | 영속성 없음, 메모리 기반 | 실험, 벤치마킹, 일회성 검색 |
전통적 데이터베이스 (MySQL, PostgreSQL):
SELECT * FROM products WHERE name = 'iPhone 15';
정확한 매칭만 가능. "아이폰 15" ≠ "애플 최신 스마트폰".
벡터 데이터베이스:
query = "애플 최신 스마트폰"
results = vectordb.search(query, top_k=3)
# 결과: "iPhone 15", "iPhone 15 Pro", "iPhone 15 Plus"
의미 기반 검색 가능. "애플 최신 스마트폰" ≈ "iPhone 15".
AI 앱(RAG, 추천 시스템, 유사 이미지 검색)은 의미적 유사도로 검색해야 합니다. 벡터 DB는 이를 위해 최적화되었습니다.
✅ 설치 30초
pip install chromadb
끝입니다. Docker, Kubernetes, 별도 서버 필요 없음.
✅ 로컬 파일 기반
import chromadb
client = chromadb.PersistentClient(path="./my_vectordb")
collection = client.create_collection("docs")
# 문서 추가
collection.add(
documents=["AI는 미래다", "머신러닝은 재미있다"],
ids=["doc1", "doc2"]
)
# 검색
results = collection.query(
query_texts=["인공지능에 대해 알려줘"],
n_results=2
)
print(results) # "AI는 미래다" 반환
✅ LangChain 네이티브 통합
from langchain.vectorstores import Chroma
vectorstore = Chroma.from_documents(
documents=chunks,
embedding=embeddings,
persist_directory="./chroma_db"
)
✅ 무료 오픈소스
❌ 대규모 확장 제한적
❌ 프로덕션 기능 부족
완전 무료. 클라우드 비용 없음.
실제 사례: 스타트업 초기 MVP → ChromaDB로 시작 → 트래픽 늘면 Pinecone 마이그레이션
✅ 관리형 서비스 (Managed Service)
✅ 무한 확장
✅ 하이브리드 검색
import pinecone
index.query(
vector=[0.1, 0.2, ...], # 벡터 검색
filter={"category": "tech"}, # 메타데이터 필터링
top_k=10
)
벡터 검색 + 메타데이터 필터링 동시 가능.
✅ 기업용 기능
❌ 비용 (가장 큰 단점)
예산 계산:
❌ 클라우드 종속 (Vendor Lock-in)
❌ 로컬 개발 불편
| 플랜 | 월 비용 | 벡터 수 | 쿼리/월 |
|---|---|---|---|
| Starter | $70 | 100만 | 무제한 |
| Standard | $360 | 1000만 | 무제한 |
| Enterprise | 협의 | 무제한 | 무제한 |
실제 사례: B2B SaaS 기업들의 표준 선택.
✅ 완전 오픈소스
✅ 하이브리드 검색 최강
{
Get {
Article(
hybrid: {
query: "AI 트렌드"
alpha: 0.5 # 벡터:키워드 = 50:50
}
where: {
path: ["publishedDate"]
operator: GreaterThan
valueDate: "2026-01-01"
}
) {
title
content
}
}
}
벡터 검색 + 키워드 검색 + 메타데이터 필터링 동시 가능.
✅ 멀티모달 지원
✅ GraphQL API
❌ 자체 호스팅 필요
docker run -d \
-p 8080:8080 \
-v /var/weaviate:/var/lib/weaviate \
semitechnologies/weaviate:latest
❌ 학습 곡선
❌ 관리형 서비스 비용
Weaviate Cloud 사용 시:
자체 호스팅이 저렴하지만 인프라 인력 필요.
오픈소스 자체 호스팅: 무료 (서버 비용만)
AWS EC2 예시:
Weaviate Cloud:
실제 사례: 대기업 내부 지식 베이스, 정부 프로젝트.
✅ 초고속 (Meta가 만든 이유)
✅ 완전 무료
pip install faiss-cpu # 또는 faiss-gpu
✅ 유연한 인덱스 타입
import faiss
# Flat (정확도 100%, 속도 느림)
index = faiss.IndexFlatL2(dimension)
# IVF (정확도 95%, 속도 빠름)
index = faiss.IndexIVFFlat(quantizer, dimension, nlist)
# HNSW (정확도 98%, 속도 매우 빠름)
index = faiss.IndexHNSWFlat(dimension, M)
❌ 영속성 없음
faiss.write_index())❌ 프로덕션 기능 부족
❌ LangChain 통합 제한적
from langchain.vectorstores import FAISS
vectorstore = FAISS.from_documents(chunks, embeddings)
vectorstore.save_local("faiss_index") # 수동 저장 필수
완전 무료. Meta 오픈소스.
실제 사례: Kaggle 대회, 연구실 프로젝트.
테스트 환경:
| DB | 지연시간 | 처리량 (QPS) |
|---|---|---|
| FAISS (로컬) | 3ms | 10,000+ |
| Pinecone | 45ms | 500 |
| Weaviate (자체 호스팅) | 68ms | 350 |
| ChromaDB (로컬) | 120ms | 200 |
결론: 속도는 FAISS 압승. 하지만 프로덕션 기능 부족.
| DB | Recall@10 | 설명 |
|---|---|---|
| FAISS (Flat) | 100% | 정확하지만 느림 |
| FAISS (IVF) | 95% | 근사 검색 |
| Pinecone | 98% | 자동 최적화 |
| Weaviate | 97% | 하이브리드 검색 |
| ChromaDB | 96% | 기본 설정 |
결론: 정확도는 비슷. Pinecone이 약간 앞섬.
| DB | 비용 | 비고 |
|---|---|---|
| ChromaDB | $0 | 로컬 실행 |
| FAISS | $0 | 로컬 실행 |
| Weaviate (자체 호스팅) | $30 | AWS EC2 t3.medium |
| Pinecone | $70 | Starter 플랜 |
| Weaviate Cloud | $250 | Standard 플랜 |
결론: 비용은 ChromaDB/FAISS 압승. 하지만 프로덕션 운영 비용 별도.
추천: ChromaDB
이유:
다음 단계: 트래픽 늘면 Pinecone 마이그레이션.
추천: Pinecone
이유:
비용: $70/월~
추천: Weaviate (자체 호스팅)
이유:
전제 조건: DevOps 팀 필요.
추천: FAISS
이유:
주의: 프로덕션 사용 금지.
추천: Pinecone Enterprise 또는 Weaviate Cloud Business
이유:
비용: $3,000+/월
Phase 1: ChromaDB (MVP)
Phase 2: Pinecone Starter (초기 프로덕션)
Phase 3: Pinecone Standard (성장)
Phase 4: Enterprise (대규모)
벡터 데이터베이스 선택은 은탄환(Silver Bullet)이 없습니다.
당신의 프로젝트는 어떤 벡터 DB가 맞나요? 예산, 규모, 팀 역량을 고려해서 선택하세요. 그리고 기억하세요: 나중에 바꿀 수 있습니다. MVP는 ChromaDB로 시작하고, 성장하면 Pinecone으로 마이그레이션하세요. 🚀
당신은 어떤 벡터 DB를 쓰고 있나요? 마이그레이션 경험이 있다면 댓글로 공유해주세요!