35분
벡터 DB 완전 가이드: Chroma vs Pinecone
Day 3: 벡터 DB (Chroma, Pinecone)
벡터 DB 완전 가이드: Chroma vs Pinecone
RAG 기초 > Day 3: 벡터 DB (Chroma, Pinecone)
학습 목표
벡터 DB의 핵심 인덱싱 알고리즘을 이해한다 Chroma와 Pinecone의 차이를 구분할 수 있다 프로젝트에 적합한 벡터 DB를 선택할 수 있다
벡터 DB란?
벡터 DB는 고차원 벡터를 저장하고 빠르게 유사 벡터를 검색하는 데이터베이스다.
일반 DB: SQL → WHERE name = '김철수' (정확 매칭)
벡터 DB: Vector → "서보 에러 해결법"에 가장 유사한 5개 찾기 (의미 검색)
핵심 알고리즘: HNSW
대부분의 벡터 DB가 사용하는 인덱싱 알고리즘.
HNSW = Hierarchical Navigable Small World
직관적 비유:
├── 전수 비교 = 도서관에서 모든 책을 한 권씩 확인
├── HNSW = 사서에게 "CNC 관련 책"을 물어보면
│ 관련 서가로 안내 → 그 근처에서 탐색
└── 결과: 전체의 5%만 비교해도 99% 정확도
계층 구조:
Layer 3: [A] ────────────── [D] (소수 노드)
Layer 2: [A] ── [B] ────── [D] ── [E] (중간)
Layer 1: [A]-[B]-[C]-[D]-[E]-[F]-[G]-[H] (모든 노드)
검색: 위층에서 대략적 위치 → 아래층에서 정밀 탐색
Chroma vs Pinecone 비교
| 항목 | Chroma | Pinecone |
|---|---|---|
| 유형 | 오픈소스, 로컬/서버 | 클라우드 매니지드 |
| 설치 | pip install chromadb | pip install pinecone |
| 비용 | 무료 | Free tier + 유료 |
| 저장 | 로컬 디스크 또는 서버 | 클라우드 (AWS/GCP) |
| 확장성 | 수만~수십만 벡터 | 수백만~수억 벡터 |
| 보안 | 직접 관리 | SOC2 인증 |
| 운영 | 직접 (백업, 모니터링) | 자동 (매니지드) |
언제 뭘 쓰나?
[Chroma 선택]
├── 프로토타입 / PoC
├── 문서 수 10만 개 이하
├── 외부 API 호출 불가 (보안 제약)
├── 비용 제로 필수
└── 빠른 실험 반복
[Pinecone 선택]
├── 프로덕션 서비스
├── 문서 수 10만 개 이상
├── 다수 사용자 동시 접속
├── 운영 인력 최소화
└── SLA 보장 필요
Chroma 아키텍처
┌─────────────────────────────────────────────┐
│ Chroma │
├─────────────────────────────────────────────┤
│ │
│ Client ──→ Collection ──→ Segment │
│ │ │
│ ┌─────────┴────────┐ │
│ │ │ │
│ Vector Index Metadata │
│ (HNSW) (SQLite) │
│ │
│ 3가지 모드: │
│ ├── EphemeralClient: 메모리만 (휘발) │
│ ├── PersistentClient: 로컬 디스크 저장 │
│ └── HttpClient: 서버-클라이언트 분리 │
│ │
└─────────────────────────────────────────────┘
Pinecone 아키텍처
┌─────────────────────────────────────────────┐
│ Pinecone │
├─────────────────────────────────────────────┤
│ │
│ API Key ──→ Index ──→ Namespace │
│ │ │
│ ┌─────┴─────┐ │
│ │ │ │
│ Vectors Metadata │
│ (분산) (필터링) │
│ │
│ 배포 모드: │
│ ├── Serverless: 사용량 기반 과금 │
│ └── Pod: 전용 인스턴스 (대규모) │
│ │
│ Namespace: │
│ ├── "cnc-manuals": CNC 매뉴얼 │
│ ├── "safety-docs": 안전 규정 │
│ └── "quality-docs": 품질 문서 │
│ │
└─────────────────────────────────────────────┘
메타데이터 필터링: 제조에서 핵심
단순 유사도 검색으로는 부족하다. "CNC 관련 문서에서만 검색"이 필요하다.
# Chroma 메타데이터 필터
results = collection.query(
query_texts=["서보 에러 해결"],
where={
"equipment": "CNC-3000",
"doc_type": "SOP",
"version": {"$gte": "2.0"}, # 버전 2.0 이상만
},
n_results=5,
)
# Pinecone 메타데이터 필터
results = index.query(
vector=query_vec,
filter={
"equipment": {"$eq": "CNC-3000"},
"doc_type": {"$eq": "SOP"},
},
top_k=5,
include_metadata=True,
)
제조 필수 메타데이터:
| 필드 | 예시 | 용도 |
|---|---|---|
| equipment | "CNC-3000" | 설비별 필터 |
| doc_type | "SOP", "manual", "spec" | 문서 유형 필터 |
| version | "2.1" | 최신 문서 우선 |
| approved_date | "2024-03-15" | 유효 문서 확인 |
| department | "생산1팀" | 부서별 접근 |
| safety_level | "critical" | 위험도 필터 |
AI로 학습하기 — 꿀팁
🤖Chroma vs Pinecone 제조 RAG 선택 가이드 표AI 학습 팁
인덱싱 알고리즘(HNSW, IVF)과 운영 특성을 제조 환경 기준으로 비교한 표를 생성하면 실제 구축 시 의사결정이 빨라진다.
제조 RAG 시스템을 위해 Chroma와 Pinecone을 비교하는 의사결정 가이드를 만들어줘. 다음 항목을 포함한 비교표를 먼저 만들어줘: 인덱싱 알고리즘(HNSW vs Approximate NN), 로컬/클라우드 배포, 비용 구조, 벡터 수 한계, 메타데이터 필터링 지원, 한국어 설비명 특수문자 처리. 그 다음 다음 3가지 제조 시나리오별로 어떤 DB가 더 적합한지 추천해줘: 1) OT망 분리 공장 환경(인터넷 차단), 2) 다공장 통합 글로벌 검색(10개 공장, 100만 청크), 3) 스타트업 POC(예산 제한, 빠른 프로토타이핑). 각 추천에 구체적 이유를 포함해줘.
이 팁이 도움이 됐나요?