目次
この記事について
この記事では、注目のオープンソースソフトウェア(OSS)「Chroma」を紹介します。この記事は、連載第81回となり、特に機械学習を活用したアプリケーション開発において、開発者の生産性を向上させるツールとしてのChromaの魅力を深掘りしていきます。
Chromaは、PythonやJavaScriptを使用して簡単にメモリーを使った大規模言語モデル(LLM)アプリケーションを構築できるオープンソースの埋め込みデータベースです。使いやすさに加え、強力なクエリ機能やフィルタリング機能を備えており、データを効率的に管理・検索することができます。このような機能は、特に自然言語処理を活用したプロジェクトにおいて、その真価を発揮します。
Chromaを使用することで、開発者は自身のデータを使って自然言語でのクエリを行い、関連するドキュメントを簡単に検索することができます。これにより、従来のデータベース以上に直感的なデータ操作が可能となり、開発の流れを一層スムーズにすることが期待されます。今回は、このツールの基本機能やユースケースを詳しく見ていき、どのようにプロジェクトに貢献できるかを考えていきます。
リンク:https://github.com/chroma-core/chroma

本コンテンツは、弊社AI開発ツール「IXV」を用いたOSSツール紹介です。情報の正確性には努めておりますが、内容に誤りが含まれる可能性がございますのでご了承ください。
1. Chromaでできること
Chromaは、オープンソースの埋め込みデータベースであり、PythonやJavaScriptを用いた大規模言語モデル(LLM)アプリケーションの構築を迅速に行うためのツールです。主な機能は以下の通りです。
- シンプルで使いやすいAPI: 完全に型付けされ、テスト済み、文書化されたAPIを提供し、開発者のストレスを軽減します。
- 豊富な機能: クエリ、フィルタリング、密度推定などの機能を備え、情報を効率的に取得できます。
- 統合サポート: LangChainやLlamaIndexなど、さまざまなツールとの統合が可能です。
Chromaは、文書を埋め込みとして格納し、近傍検索を通じて関連する情報を迅速に取得する能力があります。具体的には、以下の機能を持っています。
- 埋め込みとメタデータの保存
- ベクトル検索
- フルテキスト検索
- ドキュメントストレージ
- メタデータフィルタリング
- マルチモーダル検索
この特性により、文書の内容を機械学習モデルが理解しやすい形に変換し、高速な情報検索を実現します。
ChromaはAIネイティブのオープンソースベクトルデータベースであり、初めての方でも手軽に始められる構成が整っています。さらに、スケーラブルなデータベースサービスであるChroma Cloudも提供しており、30秒で開始でき、$5の無料クレジットが含まれています。
2. セットアップ手順
Chromaを使用するためのセットアップは非常に簡単です。以下の手順に従ってください。
2.1 Python環境でのインストール
Pythonクライアントを利用する場合、次のコマンドを実行します。
pip install chromadb
2.2 JavaScript環境でのインストール
JavaScriptを使用する場合、次のコマンドを実行します。
npm install chromadb @chroma-core/default-embed
2.3 クライアント-サーバーモード
クライアント-サーバーモードで利用する場合は、以下のコマンドを実行してデータベースのパスを指定します。
chroma run --path /chroma_db_path
このモードではデータを持続的に使用できるため、アプリケーションの構成に応じて選択できます。
2.4 ライセンスと動作環境
ChromaはApache 2.0ライセンスの下で提供されています。特定の動作環境に関する情報は明示されていませんが、一般的なPythonおよびJavaScriptの互換性があります。
3. 簡単な使い方
Chromaを使った基本的な操作は以下のようになります。
3.1 Chromaの初期設定
初めに、Chromaのクライアントをインスタンス化します。
import chromadb
client = chromadb.Client()
3.2 コレクションの作成
次に、コレクションを作成します。このコレクションは埋め込みとメタデータを格納します。
collection = client.create_collection("all-my-documents")
3.3 ドキュメントの追加
作成したコレクションにドキュメントを追加します。埋め込み、トークン化、インデックス作成は自動で行われます。この際、ユニークなIDをドキュメントに付与する必要があります。
collection.add(
documents=["This is document1", "This is document2"],
metadatas=[{"source": "notion"}, {"source": "google-docs"}],
ids=["doc1", "doc2"],
)
3.4 クエリの実行
追加したドキュメントに対してクエリを実行し、最も関連性の高い結果を取得します。
results = collection.query(
query_texts=["This is a query document"],
n_results=2,
)
n_resultsが指定されない場合、デフォルトで10件の結果が返されます。ChromaはColabデモやJupyterノートブックでも実行可能なため、手軽に試すことができます。
3.5 結果の検査
クエリの結果を確認することで、どの文書が最も関連性が高いかを確認できます。例えば、特定の文書と関連する情報も取得できます。
4. 結論
Chromaは、シンプルかつ強力な埋め込みデータベースとして、大規模言語モデルアプリケーションの開発を加速するための優れたツールです。豊富な機能と容易な統合により、開発者は効率的にプロトタイプを作成し、スケールアップすることができます。Apache 2.0ライセンスのもとで提供されているため、自由に利用・改良が可能です。Chromaを活用して、次世代のアプリケーション開発に取り組んでみてはいかがでしょうか。詳細な情報については、Chromaの公式ドキュメントを参照してください。