35

벡터 DB 완전 가이드: Chroma vs Pinecone

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 비교

항목ChromaPinecone
유형오픈소스, 로컬/서버클라우드 매니지드
설치pip install chromadbpip 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(예산 제한, 빠른 프로토타이핑). 각 추천에 구체적 이유를 포함해줘.
이 팁이 도움이 됐나요?