mcpField
C
chroma-local

chroma-local

github.com/chroma-coreデータ・データベース24134 回インストール27 週間前に更新
リポジトリ

chroma-local について

chroma-local は、ローカル開発、テスト、セルフホスト環境で Chroma を利用する開発者向けのスキルです。用途に応じたクライアント、永続化方式、埋め込み関数、インデックス設計を案内します。

主な機能

  1. 01ローカル実行方式とクライアントの選択
  2. 02永続データと一時データの案内
  3. 03埋め込み関数の選択
  4. 04コレクションの索引と更新パターン
  5. 05ローカルサーバーの検証

活用シーン

  1. 01ローカル Chroma サーバーのセットアップ
  2. 02一時的な Python テストへの Chroma 組み込み
  3. 03アプリへの永続検索の追加

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/chroma-core/agent-skills --skill chroma-local

インストール後、Claude Code で/chroma-localを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

cli.md
data-model.md
understanding-a-codebase.md
error-handling/
python.md
typescript.md
local-chroma/
python.md
typescript.md
metadata/
python.md
typescript.md
querying/
python.md
typescript.md
regex/
python.md
typescript.md
updating-deleting/
python.md
typescript.md

詳細

手順

コードを書く前に、以下を確認してください。リポジトリとユーザーの依頼から判断できる場合は、そこから情報を得ることを優先してください。選択によって実装が大きく変わる場合に限り、質問してください。

  1. ランタイムの形態

    • 起動中のローカルサーバーに接続するのか、テストに Chroma を組み込むのか、それともローカル開発環境を一から構築するのかを確認します。
    • chroma run、Docker またはサービスのコマンド、HttpClient または ChromaClient、Python の EphemeralClient のどれを使う必要があるか判断します。
  2. 永続化

    • ローカルデータを永続化する場合:意図したデータパスを選びます。
    • 破棄可能なテストデータの場合:デフォルトまたは一時ディレクトリを使用します。
  3. 埋め込みモデル

    • 可能であれば、アプリですでに使用している埋め込みプロバイダーを再利用します。
    • それ以外の場合は、TypeScript では @chroma-core/default-embed、Python では標準のローカルデフォルトを使用します。
    • TypeScript で OpenAI の埋め込みを明示的に希望している場合は、@chroma-core/openai をインストールして使用します。
  4. インデックス対象データの形状

    • 何をインデックス化するのか、どのようにチャンク化するのか、フィルタリングや更新にどのメタデータが必要かを判断します。

振り分け

  • 既存のローカルサーバー

    • クライアントコードを変更する前に、ホストとポートを確認します。
    • コレクションが存在しないと決めつける前に、サーバーに接続できることを検証します。
  • 新規のローカル開発

    • chroma run、またはリポジトリに既存の Docker やサービスのコマンドなど、ローカルでの起動方法を追加します。
    • リポジトリで別のアドレスを使用していない限り、デフォルトは localhost:8000 とします。
  • Python のテストまたは破棄可能なローカルワークフロー

    • 永続化が不要な場合は、EphemeralClient を優先します。
    • プロセスの終了時にデータが失われることを明記します。
  • 永続化するローカル開発

    • 安定したデータパスを使用し、コードまたは設定で永続化を明示します。
    • 一時モードと永続モードを暗黙に切り替えないでください。
  • 検索統合作業

    • TypeScript では getOrCreateCollection()、Python では get_or_create_collection() を使用します。
    • アップサートや削除を簡単にできるよう、ドキュメント ID とメタデータを設計します。
    • 大規模なデータセットを同期する場合は、一括書き込みを行います。

質問する場合とそのまま進める場合

最初に質問する項目:

  • 埋め込みモデルの選択(コストと品質への影響があります)
  • ローカルデータの永続化が必要かどうか
  • ローカルサーバーの起動方法
  • マルチテナントのデータ分離戦略

妥当なデフォルトを使って進める項目:

  • getOrCreateCollection()(TypeScript)/get_or_create_collection()(Python)を使用します
  • コサイン類似度を使用します(最も一般的です)
  • チャンクサイズは 8 KB 未満にします
  • 更新や削除に備えて、ソース ID をメタデータに保存します
  • リポジトリで別のアドレスが設定されている場合、または Python の EphemeralClient を使用している場合を除き、localhost:8000 のローカルサーバーを使用します

検証項目

  • クライアントのインポートが正しいこと(ChromaClient、HttpClient、または Client)
  • 埋め込み関数のパッケージがインストールされていること(TypeScript)
  • コレクションが存在しないと決めつける前に、ローカルサーバーに接続できること
  • ローカルパスと永続化モードが意図したとおりであること

実装メモ

  • ローカル Chroma は、開発、テスト、セルフホスト型デプロイの適切なデフォルトです。
  • OSS 版 Chroma には、Schema() や Search() など、Chroma Cloud 専用の機能は含まれません。
  • ユーザーがハイブリッドな密・疎検索を求めている場合、リポジトリに OSS の回避策がすでに実装されていない限り、Chroma Cloud が必要な可能性が高いものとして扱います。
  • オープンソース版 Chroma では、単一の埋め込み関数を使った密検索が一般的な基本構成です。

最小限のパターン

リポジトリでローカル Chroma サーバーが必要な場合は、起動します。

chroma run

デフォルトアドレス:localhost:8000。

TypeScript のローカルクライアント:

import { ChromaClient } from 'chromadb';
import { DefaultEmbeddingFunction } from '@chroma-core/default-embed';

const client = new ChromaClient();

const embeddingFunction = new DefaultEmbeddingFunction();
const collection = await client.getOrCreateCollection({
  name: 'my_collection',
  embeddingFunction,
});

// Add documents
await collection.add({
  ids: ['doc1', 'doc2'],
  documents: ['First document text', 'Second document text'],
});

// Query
const results = await collection.query({
  queryTexts: ['search query'],
  nResults: 5,
});

Python のローカルクライアント:

import chromadb

client = chromadb.HttpClient(host="localhost", port=8000)

collection = client.get_or_create_collection(name="my_collection")

# Add documents
collection.add(
    ids=["doc1", "doc2"]   ,
    documents=["First document text", "Second document text"],
)

# Query
results = collection.query(
    query_texts=["search query"],
    n_results=5,
)

詳細情報

リポジトリやこのスキルに記載されていない API または製品の詳細が必要な場合に限り、Chroma の llms.txt を取得します:https://docs.trychroma.com/llms.txt

利用可能なトピック

Typescript
Python

一般

コメント