← プロジェクト一覧に戻る

Chroma

import 1行から動く組み込み型ベクトルストア

公式Apache-2.0
スター
29.1k
フォーク
2.4k
オープンIssue
793
最終コミット
2026年8月15日

概要

検索を動かすまでの摩擦が最も少ない選択肢です。サーバーの構築もクラスタのサイジングも不要です。そのためプロトタイプや小規模な本番負荷には非常に適しています。一方で、どの規模で手狭になるかは、遭遇してから慌てるのではなく事前に計画しておくべき論点です。

Chromaで何ができますか?

  • 1ファイルで検索を動かすchromadb.Client()でインメモリのクライアントを作り、collection.add()に文書を渡せばトークン化・埋め込み・インデックス作成まで自動で行われます。
  • メタデータ条件を同じクエリで併用collection.query()whereによるメタデータの絞り込みと、where_document$containsによる本文の部分一致を同じ呼び出しで指定できます。
  • クライアントサーバー構成へ移行chroma run --path /chroma_db_pathを実行するとサーバーモードで起動し、単一プロセスで足りなくなってもAPIは変えずに済みます。
  • PythonとJavaScriptの双方から参照Pythonクライアントはpip install chromadb、JavaScriptクライアントはnpm install chromadbで導入し、同じchroma runのサーバーに接続すれば同一のコレクションを読み書きできます。書き込む側と検索する側で言語を揃える必要がありません。

ドキュメント

chroma-core/chroma のREADMEより転載(Apache-2.0)。 原文を読む ↗

Chroma Chroma

pip install chromadb # python client
# for javascript, npm install chromadb!
# for client-server mode, chroma run --path /chroma_db_path

Chroma Cloud

Our hosted service, Chroma Cloud, powers serverless vector, hybrid, and full-text search. It’s extremely fast, cost-effective, scalable and painless. Create a DB and try it out in under 30 seconds with $5 of free credits.

Get started with Chroma Cloud

API

The core API is only 4 functions (run our 💡 Google Colab):

import chromadb
# setup Chroma in-memory, for easy prototyping. Can add persistence easily!
client = chromadb.Client()

# Create collection. get_collection, get_or_create_collection, delete_collection also available!
collection = client.create_collection("all-my-documents")

# Add docs to the collection. Can also update and delete. Row-based API coming soon!
collection.add(
    documents=["This is document1", "This is document2"], # we handle tokenization, embedding, and indexing automatically. You can skip that and add your own embeddings as well
    metadatas=[{"source": "notion"}, {"source": "google-docs"}], # filter on these!
    ids=["doc1", "doc2"], # unique for each doc
)

# Query/search 2 most similar results. You can also .get by id
results = collection.query(
    query_texts=["This is a query document"],
    n_results=2,
    # where={"metadata_field": "is_equal_to_this"}, # optional filter
    # where_document={"$contains":"search_string"}  # optional filter
)

Learn about all features on our Docs

Get involved

Chroma is a rapidly developing project. We welcome PR contributors and ideas for how to improve the project.

Release Cadence We currently release new tagged versions of the pypi and npm packages on Mondays. Hotfixes go out at any time during the week.