Chromaとは
アプリケーションに組み込みやすい、軽量なオープンソースのベクトルデータベース
ひとことで言うと
アプリに手軽に組み込める、軽量なオープンソースのベクトルデータベース。
概要
Chromaは、オープンソースで提供される軽量なベクトルデータベース。 Pythonアプリケーションへの組み込みやすさを重視して設計されており、少ないコードでベクトルの保存・類似検索を行える。プロトタイピングや小〜中規模のRAGアプリケーションで利用されることが多い。
背景
RAGアプリケーションのプロトタイピングにおいて、専用インフラを構築せず手軽にベクトル検索を試したいというニーズから、Chromaはアプリケーションに直接組み込める軽量なベクトルデータベースとして開発された。
歴史
2023年: Chroma(Chroma Core)が、オープンソースの組み込み型ベクトルデータベース「Chroma」を公開。
コード例
ChromaによるRAG向けベクトル検索(概念例)
import chromadb
client = chromadb.Client()
collection = client.create_collection("demo")
collection.add(
documents=["example document"],
ids=["doc1"],
)
results = collection.query(query_texts=["example query"], n_results=3)
print(results)利点
- セットアップが簡単で、少ないコードでベクトル検索を組み込める
- プロトタイピングや開発初期段階での試行がしやすい
- LangChain・LlamaIndex等、主要なRAGフレームワークとの連携が容易
欠点
- 大規模データや高可用性が求められる本番運用では、分散対応製品と比べ機能面の制約がある
- エンタープライズ向けの運用機能は発展途上にある
- 分散構成による水平スケールは、他の専用ベクトルデータベースほど成熟していない
比較
- ベクトルデータベース — Chromaはアプリケーションへの組み込みやすさを重視した軽量なオープンソースのベクトルデータベースの1つ
- Pinecone — Chromaがプロトタイピング向けの軽量な組み込み型であるのに対し、Pineconeは本番運用を想定したフルマネージドのサービスという違いがある
- Qdrant — Chromaが手軽な組み込みやすさを重視するのに対し、Qdrantは高速な検索性能とフィルタリング機能を重視した本番運用向けの製品という違いがある
関連用語
よくある質問
Chromaはどのような場面で使われる?
プロトタイピングや小〜中規模のRAGアプリケーションなど、手軽にベクトル検索を試したい場面でよく使われる。
Chromaは本番運用に使える?
利用は可能だが、大規模データや高可用性が求められる本番運用では、分散構成に対応した専用のベクトルデータベース製品と比べて機能面の制約がある。
参考文献
- Official WebsiteChroma
- GitHubchroma-core/chroma