티스토리 뷰

카테고리 없음

별첨 #4. Chroma DB 완전 가이드

미니대왕님 2025. 12. 21. 18:51

✅ Chroma DB 완전 가이드 (LLM 통합 포함)

별첨 #1 KoSimCSE란?

별첨 #2. Chunking 청킹이란...

별첨 #3. n8n 완전 정복 가이드

별첨 #4. Chroma DB 완전 가이드

별첨 #4-1. Milvus란? 

별첨 #5. RAG란? 

별첨 #6. LangChain이란?

별첨 #7. MCP 서버 탑재

별첨 #8. Embedding)이란?

별첨 #9. LLaMA란

별첨 #10. kiwipiepy(키위파이파이)

별첨 #11. Poetry란?

🟦 1. Chroma DB란?

Chroma는 **오픈소스 벡터 데이터베이스(Vector DB)**입니다.
주로 LLM 기반 애플리케이션에서, 문서의 임베딩을 저장하고 유사도 검색을 위해 사용합니다.

🔹 주요 특징

  • 설치가 매우 간단하고 로컬 사용에 최적화
  • 자체적으로 임베딩 저장, 검색, 필터링 기능 지원
  • LangChain, LlamaIndex와도 쉽게 통합 가능
  • 개발자가 로컬 테스트 용도로 빠르게 사용할 수 있는 "zero-config" 벡터 DB

🛠 2. Chroma 설치 방법

✅ 방법 1: pip로 간단 설치

 
 
pip install chromadb
  • Python 3.8 이상 필요
  • 추가적으로 openai, tiktoken 등이 필요한 경우:
 
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
«   2026/03   »
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
글 보관함