Chromaは、AIアプリケーション向けに特化して設計されたオープンソースのデータベースであり、ベクトル埋め込み(embeddings)の保存と検索を目的としています。これは埋め込みデータベース(ベクトルデータベースとも呼ばれます)であり、従来のデータベースのサブストリング検索ではなく、最近傍探索によってデータを検索します。
GitHubアドレス: https://github.com/chroma-core/chroma
Chromaは、埋め込み、ベクトル検索、ドキュメントストレージ、全文検索、メタデータフィルタリング、マルチモーダル検索など、多様な機能を1つのプラットフォームに統合しています。
デフォルトでは、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、強力な機能、優れたエコシステム統合により、開発者にとって最適なベクトルデータベースソリューションとなっています。