OPEN HYPER STEP
← 목록으로 (AI Orchestration)
AI-ORCHESTRATION · 51 / 59
ai-orchestration
CHAPTER 51 / 59
읽기 약 2
FUNCTION

벡터 DB 비교: Pinecone vs Chroma vs Weaviate


핵심 개념

벡터 DB 3종 비교 (성능·비용·설치) + 임베딩 모델 선택 — 10만 문서 RAG 시스템 실전.

본문

3종 비교 표

항목PineconeChromaWeaviate
호스팅클라우드 only로컬·임베디드로컬·클라우드
가격$70/mo+ (Pro)무료 (오픈소스)무료 + 클라우드 유료
설치API 키만pip installDocker
성능매우 빠름빠름 (소규모)매우 빠름
메타데이터✅ (그래프 지원)
적합프로덕션·SaaS프로토타입·로컬엔터프라이즈

Chroma — 로컬 시작

PYTHON📋 코드 (34줄)
# pip install chromadb langchain-chroma langchain-openai
from langchain_chroma import Chroma
from langchain_openai import OpenAIEmbeddings
from langchain_core.documents import Document

embeddings = OpenAIEmbeddings(model="text-embedding-3-small")

# 영구 저장
vectorstore = Chroma(
    collection_name="my_docs",
    embedding_function=embeddings,
    persist_directory="./chroma_db",
)

# 문서 추가
docs = [
    Document(page_content="React는 UI 라이브러리", metadata={"track": "react"}),
    Document(page_content="Vue는 진화하는 프레임워크", metadata={"track": "vue"}),
    Document(page_content="PostgreSQL 인덱스", metadata={"track": "postgresql"}),
]
vectorstore.add_documents(docs)

# 검색
results = vectorstore.similarity_search("UI 라이브러리", k=2)
for r in results:
    print(r.page_content, r.metadata)


# 메타데이터 필터
results = vectorstore.similarity_search(
    "프레임워크",
    k=5,
    filter={"track": {"$in": ["react", "vue"]}},
)

Pinecone — 클라우드 프로덕션

PYTHON📋 코드 (24줄)
# pip install pinecone-client langchain-pinecone
import os
from pinecone import Pinecone, ServerlessSpec
from langchain_pinecone import PineconeVectorStore
from langchain_openai import OpenAIEmbeddings

# 인덱스 생성 (한 번만)
pc = Pinecone(api_key=os.environ["PINECONE_API_KEY"])
pc.create_index(
    name="my-index",
    dimension=1536,  # OpenAI text-embedding-3-small
    metric="cosine",
    spec=ServerlessSpec(cloud="aws", region="us-east-1"),
)

embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vectorstore = PineconeVectorStore(
    index_name="my-index",
    embedding=embeddings,
)

# 사용은 Chroma와 동일
vectorstore.add_documents(docs)
results = vectorstore.similarity_search("질문", k=4)

Weaviate — 그래프 지원

PYTHON📋 코드 (18줄)
# Docker 실행
# docker run -p 8080:8080 cr.weaviate.io/semitechnologies/weaviate:1.24

# pip install langchain-weaviate weaviate-client
import weaviate
from langchain_weaviate import WeaviateVectorStore

client = weaviate.connect_to_local()

vectorstore = WeaviateVectorStore(
    client=client,
    index_name="MyDocs",
    text_key="content",
    embedding=embeddings,
)

# Weaviate 강점 — 그래프 관계
# 문서 ↔ 저자 ↔ 카테고리 같은 관계 모델링 가능

임베딩 모델 선택

PYTHON📋 코드 (20줄)
# OpenAI text-embedding-3-small
# - 차원 1536, 가격 $0.02/1M tokens
# - 한국어 OK, 일반 용도

# OpenAI text-embedding-3-large
# - 차원 3072, 가격 $0.13/1M tokens
# - 더 정확, 비용 6배

# Cohere embed-multilingual-v3
# - 100개 언어, 차원 1024
# - 다국어 RAG에 강함

# 로컬 — sentence-transformers/multilingual-e5
# - 무료, 단 GPU 권장
# - 차원 768~1024
from langchain_community.embeddings import HuggingFaceEmbeddings

embeddings_local = HuggingFaceEmbeddings(
    model_name="sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2",
)

10만 문서 RAG 인덱싱

PYTHON📋 코드 (32줄)
import os
from pathlib import Path
from langchain_text_splitters import RecursiveCharacterTextSplitter

# 1. 문서 로드 + 청크 분할
splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200,
    separators=["\n\n", "\n", ". ", " "],
)

documents = []
for path in Path("./docs").rglob("*.md"):
    text = path.read_text()
    chunks = splitter.split_text(text)
    for i, chunk in enumerate(chunks):
        documents.append(Document(
            page_content=chunk,
            metadata={
                "source": str(path),
                "chunk": i,
            },
        ))

print(f"총 청크: {len(documents)}")

# 2. 배치 인덱싱 (메모리 절약)
batch_size = 100
for i in range(0, len(documents), batch_size):
    batch = documents[i:i+batch_size]
    vectorstore.add_documents(batch)
    print(f"진행: {min(i+batch_size, len(documents))}/{len(documents)}")

다음 챕터

CH.3 "LangGraph 상태 머신" — 복잡한 워크플로우 모델링.


AI 프롬프트
🤖 AI에게 잘 물어보는 법 — 모델·전략별 프롬프트
무료 모델

Gemini 2.5 Flash(무료) + Claude Sonnet 4.6(무료) + Grok 4.1(무료)

무료로 시작 — Chroma 로컬 + 무료
임베딩으로 RAG 시스템 구축 가이드와
비용 0원 운영법을 알려줘.
소자본 모델

Claude API + Cursor $20/mo + Make.com — 월 10~30만원

Pinecone Pro($70/mo) + OpenAI 임베딩으로
10만 문서 RAG 시스템을 빠르게
구축하는 패턴을 알려줘.
프로덕션 모델

Claude Opus + CrewAI + LangGraph — 월 100만원+

Weaviate 클러스터 + Cohere 다국어
임베딩 + LangGraph 통합한 엔터프라이즈
RAG 아키텍처를 설계해줘.
스택 프롬프트

0원→$20/mo→$100/mo 단계별 스택 비교

0원(Chroma)→$70/mo(Pinecone)→$500/mo(Weaviate)
단계별 비교와 적합 시점을 만들어줘.

⭐ 이것만 기억하세요
벡터 DB 비교: Pinecone vs Chroma vs Weaviate 이 3가지만 확실히 잡으세요
1.Pinecone(클라우드)·Chroma(로컬)·Weaviate(그래프) — 단계별 적합한 도구 다름
2.임베딩 모델은 비용·속도·정확도 트레이드오프 — 시작은 OpenAI small, 다국어는 Cohere
3.다음 챕터 CH.3에서 LangGraph 상태 머신 — 단순 체인 넘어선 복잡 워크플로우


공유하기
진행도 51 / 59