Chroma는 오픈소스 AI 애플리케이션 데이터베이스로, 벡터 임베딩(embeddings)을 저장하고 검색하도록 특별히 설계되었습니다. 임베딩 데이터베이스(또는 벡터 데이터베이스)라고도 하며, 기존 데이터베이스의 부분 문자열 검색 대신 최근접 이웃 검색을 통해 데이터를 찾습니다.
GitHub 주소: https://github.com/chroma-core/chroma
Chroma는 임베딩, 벡터 검색, 문서 저장, 전체 텍스트 검색, 메타데이터 필터링 및 다중 모드 검색을 포함한 다양한 기능을 하나의 플랫폼에 통합합니다.
기본적으로 Chroma는 Sentence Transformers를 사용하여 임베딩하지만, OpenAI embeddings, Cohere(다국어) 등 다른 임베딩 모델도 사용할 수 있습니다.
메모리 모드, 파일 저장 모드 및 서버 모드를 포함한 다양한 배포 모드를 지원합니다.
로컬 사용을 위한 DuckDB, 대규모 애플리케이션 확장을 위한 ClickHouse와 같은 다양한 스토리지 백엔드를 지원합니다.
RAG 시스템에서 먼저 문서를 임베딩하고 ChromaDB 컬렉션에 저장한 다음 ChromaDB를 통해 쿼리를 실행하여 의미적으로 관련된 콘텐츠를 찾습니다.
의미 검색에서 ChromaDB는 벡터 임베딩을 기반으로 서로 유사한 데이터 포인트를 찾을 수 있습니다. 이는 콘텐츠 또는 의미를 분석하여 비교 가능한 문서, 이미지 또는 기타 데이터 유형을 식별하는 데 매우 유용합니다.
벡터 공간에서 거리 계산을 통해 쿼리와 가장 유사한 콘텐츠를 빠르게 찾습니다.
pip install chromadb
import chromadb
client = chromadb.Client()
collection = client.create_collection("my_collection")
collection.add(
documents=["This is document 1", "This is document 2"],
metadatas=[{"source": "doc1"}, {"source": "doc2"}],
ids=["id1", "id2"]
)
results = collection.query(
query_texts=["search query"],
n_results=2
)
Chroma는 LangChain과 깊이 통합되어 벡터 스토리지 구성 요소로 사용할 수 있습니다.
Chroma는 OpenAI의 임베딩 함수와 통합되어 임의의 메타데이터 저장 및 필터링을 지원합니다.
Chroma는 현대 AI 애플리케이션 개발에서 필수적인 인프라 구성 요소이며, 특히 의미 검색, RAG 시스템 및 벡터 유사성 매칭이 필요한 애플리케이션 시나리오에 적합합니다. 간결한 API, 강력한 기능 및 우수한 생태계 통합으로 인해 개발자가 선호하는 벡터 데이터베이스 솔루션입니다.