ai-orchestration
CHAPTER 51 / 59
읽기 약 2분
FUNCTION
벡터 DB 비교: Pinecone vs Chroma vs Weaviate
핵심 개념
벡터 DB 3종 비교 (성능·비용·설치) + 임베딩 모델 선택 — 10만 문서 RAG 시스템 실전.
본문
3종 비교 표
| 항목 | Pinecone | Chroma | Weaviate |
|---|---|---|---|
| 호스팅 | 클라우드 only | 로컬·임베디드 | 로컬·클라우드 |
| 가격 | $70/mo+ (Pro) | 무료 (오픈소스) | 무료 + 클라우드 유료 |
| 설치 | API 키만 | pip install | Docker |
| 성능 | 매우 빠름 | 빠름 (소규모) | 매우 빠름 |
| 메타데이터 | ✅ | ✅ | ✅ (그래프 지원) |
| 적합 | 프로덕션·SaaS | 프로토타입·로컬 | 엔터프라이즈 |
Chroma — 로컬 시작
# 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 — 클라우드 프로덕션
# 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 — 그래프 지원
# 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 강점 — 그래프 관계
# 문서 ↔ 저자 ↔ 카테고리 같은 관계 모델링 가능임베딩 모델 선택
# 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 인덱싱
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