MENU

Chromaとは何かPythonネイティブなベクトルDBの素性

Chroma アイキャッチ
Chroma

ChromaはChroma社が2022年から公開しているオープンソースのベクトルデータベースで、Pythonライブラリとしてpip install chromadbだけで使い始められる軽量さが大きな特徴です。LangChainやLlamaIndexの初期チュートリアルで採用されたことから普及し、RAGの最小構成サンプルでベクトルストアといえばChromaを指す、というほど教育用途・プロトタイピング用途でデファクトに近い立ち位置になりました。本稿では設計思想と実装、運用上の限界までを整理します。

目次

この記事の目次

  1. Pythonネイティブで動く埋め込み体験
  2. クライアント/サーバとマルチテナント
  3. メタデータフィルタとクエリ表現
  4. 規模と運用の現実
  5. まとめ

Pythonネイティブで動く埋め込み体験

Pythonネイティブで動く埋め込み体験

Chromaはコア部分が当初Pythonで実装され、その後Rustへ書き直されたchromadb本体と、サーバとして起動するためのFastAPIベースのHTTPゲートウェイから構成されます。ローカルモードでは単一プロセス内でSQLiteとオンディスクのHNSWファイルを使い、永続化付きのベクトルストアをノートブックから直接扱える手軽さが売りです。

コレクションはget_or_create_collectionで取得でき、ドキュメント追加時にembedding_functionを指定すれば文字列を渡すだけでベクトル化と格納が同時に走ります。Sentence Transformers、OpenAI、Cohere、Ollamaなど主要な埋め込みプロバイダがプラグインとして用意されており、Pythonアプリケーションに混ぜ込みやすいAPI設計になっています。

クライアント/サーバとマルチテナント

クライアント/サーバとマルチテナント

本番想定ではchroma runコマンドでサーバを起動し、PythonクライアントからHttpClient経由で接続する構成になります。サーバ側はSQLiteもしくはClickHouse、PostgreSQLをメタデータバックエンドに採用でき、0.5系以降はマルチテナントとデータベース概念がコアに取り込まれて、テナントごとに独立した名前空間でコレクションを管理できるようになりました。

認証は当初トークン方式のみでしたが、v0.5以降はマルチユーザ前提のロールベース機能やOpenIDコネクト連携の議論が進んでおり、SaaS型のChroma Cloudも段階的に提供されています。プロトタイプから本番への移行で詰まる箇所は、ローカルファイルのpersist_directoryからサーバへの移行や、コレクション内の埋め込み次元の不一致といった足元の運用ポイントが中心です。

メタデータフィルタとクエリ表現

メタデータフィルタとクエリ表現

Chromaのクエリはqueryメソッドにquery_textsまたはquery_embeddingsを渡し、where句でMongoDBに似た記法のフィルタ、where_document句で全文一致を指定する構造です。返却されるdistancesはL2、cos、ipのいずれかから選び、コレクション作成時に固定します。シンプルなAPIゆえに学習コストが低く、PythonしかわからないチームでもRAGを動かしやすい一方、GraphQLのような複雑な集約クエリは苦手な領域です。

BM25のような語彙検索は本体にはなく、ハイブリッド検索が必要な場合はLangChain側のEnsemble Retrieverなどで補う実装が一般的です。QdrantやWeaviateのような独自インデックスの最適化機能と比較すると守備範囲は狭いものの、「埋め込みとフィルタで近傍を引く」用途に絞ればやはりChromaの導入の容易さが光ります。

規模と運用の現実

規模と運用の現実

Chromaは1コレクション数百万ベクトル規模までを公式に目標にしており、10億規模の本番運用が必要な場合はMilvusやQdrantなど他製品の方が向きます。HNSWのパラメータは公開されているものの、ストレージ層が単一サーバに依拠するため、水平スケールは依然として発展途上です。

とはいえRAGアプリケーションの大半は数十万件規模で十分実用に達し、PoC段階でベクトルDBを比較する手間を最小化したい場合のデフォルト選択肢として強力です。Chroma Cloudのマネージド版や、Rust製コアによる将来的なパフォーマンス改善のロードマップも示されており、「とりあえずChromaで始め、規模が見えたら移行する」というパターンが現場ではよく見られます。

まとめ

Chromaは「ノートブックから即座に試せる」軽量さと、Pythonネイティブな統合の良さを武器にRAGの入り口として普及したベクトルDBです。規模や運用要件が固まる前段では特に有効で、本番要件が見えてきた段階で他製品と比較検討する流れが定石です。

※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次