chromaについて
「Chroma」は、軽量かつ高速な**ベクトルストア(Vector Store)**で、主にRAG(Retrieval-Augmented Generation)や類似文書検索に使われる
■ Chromaとは
**Chroma(正式名称:ChromaDB)は、テキストや画像などのデータをベクトル(数値の集合)として保存し、後から類似検索(類似性の高いものを検索)**するためのデータベースです。
* 開発元:Chromadb Inc.
* ライセンス:Apache 2.0(オープンソース)
* 特徴:
* 自己完結型(埋め込みデータの保存から検索まで完結)
* 高速・軽量(ローカルでも動作)
* RAGなどのLLMとの相性が良い
■ 主な用途
1. RAG(LLM × ベクトル検索)
* PDFや文書を分割してベクトル化し、Chromaに保存
* クエリと類似する文書をChromaで検索してLLMに渡す
2. 類似文章検索
* 「この文章に似ているものは?」という検索が可能
3. 画像や音声の類似性検索(拡張可能)
■ 保存形式(Chroma + SQLite + Parquet)
Chromaはデフォルトで以下を使います:
* SQLite:メタデータや設定情報を保存
* Parquet:ベクトルそのもの(高次元な数値)を効率的に保存
この構成により、
* ローカルファイルでの軽量運用が可能
* クラッシュしてもデータが残りやすい
* 他ツールと連携しやすい(Parquet形式はPandasやSparkとも互換あり)
pip install chromadb
でインストール
次にテスト
import chromadb
from chromadb.utils.embedding_functions import OpenAIEmbeddingFunction
client = chromadb.Client()
collection = client.create_collection(name="my_collection")
collection.add(
documents=["東京は日本の首都です", "大阪は関西の中心都市です"],
ids=["doc1", "doc2"]
)
results = collection.query(
query_texts=["日本の都市について教えて"],
n_results=1
)
print(results)
これを
touch db_test.py
でファイル作成し
python db_test.py
で実行
最初にモデルのダウンロードが行われるため時間がかかる