티스토리 뷰
✅ Chroma DB 완전 가이드 (LLM 통합 포함)
🟦 1. Chroma DB란?
Chroma는 **오픈소스 벡터 데이터베이스(Vector DB)**입니다.
주로 LLM 기반 애플리케이션에서, 문서의 임베딩을 저장하고 유사도 검색을 위해 사용합니다.
🔹 주요 특징
- 설치가 매우 간단하고 로컬 사용에 최적화
- 자체적으로 임베딩 저장, 검색, 필터링 기능 지원
- LangChain, LlamaIndex와도 쉽게 통합 가능
- 개발자가 로컬 테스트 용도로 빠르게 사용할 수 있는 "zero-config" 벡터 DB
🛠 2. Chroma 설치 방법
✅ 방법 1: pip로 간단 설치
|
pip install chromadb
pip install openai tiktoken chromadb
|
📁 3. 기본 사용 예제 (로컬)
| import chromadb from chromadb.config import Settings # Chroma 클라이언트 생성 (로컬, 기본 설정) client = chromadb.Client(Settings( chroma_db_impl="duckdb+parquet", persist_directory="./chroma_db" # 저장 경로 )) # 컬렉션 생성 collection = client.get_or_create_collection(name="my_documents") # 문서 추가 collection.add( documents=["챗GPT는 대형 언어 모델이다", "한국의 수도는 서울이다"], ids=["doc1", "doc2"], metadatas=[{"source": "test1"}, {"source": "test2"}] ) # 검색 (쿼리와 가장 유사한 문서 반환) results = collection.query( query_texts=["서울의 수도는 어디야?"], n_results=1 ) print(results) |
4. Chroma를 LLM과 함께 사용하는 구조
🔍 핵심 흐름: RAG (Retrieval-Augmented Generation)
| 문서 업로드 → 임베딩 생성 → Chroma에 저장 → 사용자 질문 임베딩 → 유사 문서 검색 → LLM에 전달 |
필요한 도구:
- OpenAI 또는 HuggingFace 임베딩 API
- LangChain 또는 직접 구현
- LLM API (GPT-4, Claude 등)
📦 5. LLM과 함께 사용하는 실전 예제
📘 예제 1: 문서 저장 + 검색 + GPT로 답변 생성
from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import Chroma from langchain.llms import OpenAI from langchain.chains import RetrievalQA # 1. OpenAI 임베딩 사용 embedding = OpenAIEmbeddings() # 2. Chroma DB 연결 vectordb = Chroma(persist_directory="./chroma_store", embedding_function=embedding) # 3. 문서 저장 (예: 간단한 문장) vectordb.add_texts(["GPT는 OpenAI에서 개발한 모델입니다", "한국의 수도는 서울입니다"]) # 4. 검색 QA 체인 생성 qa = RetrievalQA.from_chain_type( llm=OpenAI(), retriever=vectordb.as_retriever() ) # 5. 질문 → 검색된 내용 기반으로 GPT 응답 query = "OpenAI에서 만든 모델 이름은?" response = qa.run(query) print(response)
🧩 6. 다양한 활용 예시
사용 시나리오설명
| 🔍 문서 질문 응답 | 회사 문서 업로드 → 관련 답변 생성 |
| 📚 PDF 검색 | PDF → 텍스트 변환 → Chroma 저장 → 유사 검색 |
| 🧠 사내 지식베이스 | 사내 위키, 매뉴얼을 LLM이 참조 가능하게 구성 |
| 💬 채팅봇 + 문서 검색 | LLM 기반 챗봇이 Chroma에 저장된 자료 참조 |
🔐 7. 고급 설정 (옵션)
✅ 다른 저장소 설정
Settings( chroma_db_impl="duckdb+parquet", persist_directory="/my/custom/dir" )
✅ 메타데이터 기반 필터링
collection.query( query_texts=["LLM 관련"], where={"source": "공지사항"}, n_results=2 )
🧠 8. 자주 쓰는 관련 도구
도구역할
| LangChain | Chroma + LLM 연결을 쉽게 도와줌 |
| LlamaIndex | 문서 → 청크 → 임베딩 → DB 자동화 |
| tiktoken | 토큰 단위로 텍스트 분할 |
| FAISS / Pinecone | Chroma 대체 가능, 대규모 검색에 적합 |
🔚 마무리
Chroma는 설치가 간단하고, LLM 기반 앱에 바로 사용할 수 있는 최적의 로컬 벡터DB입니다.
특히 문서 기반 검색, 사내 챗봇, 개인 지식 관리 시스템을 만들 때 매우 유용합니다.
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- faiss
- Oracle
- Ai
- kiwipiepy
- VectorStore
- 쿠버네티스
- llm
- Weaviate
- 오라클
- 테라폼
- RAG
- llama
- MSA
- 코로나19
- embedding
- poetry
- MCP
- Qdrant
- 5.4.0.1072
- AWS
- open ai
- KoSimCSE
- CVE 취약점 점검
- 임베딩
- 버쳐박스
- RangChain
- Chroma
- K8s
- chunking
- n8n
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
글 보관함
