> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ja/llms.txt # Chroma vector store ChromaVector クラスは、オープンソースの埋め込みデータベース [Chroma](https://docs.trychroma.com/docs/overview/getting-started) を使用したベクトル検索を提供します。 メタデータフィルタリングとハイブリッド検索に対応した効率的なベクトル検索が可能です。 > **情報:** > > **Chroma Cloud** > > Chroma Cloud は、サーバーレスのベクトル検索と全文検索を提供します。非常に高速で費用対効果と処理容量に優れ、手軽に利用できます。5 ドル分の無料クレジットを使って、30 秒以内に DB を作成して試せます。 > > [Chroma Cloud を使い始める](https://trychroma.com/signup) ## コンストラクターオプション **host** (`string`): Chroma サーバーのホストアドレス。デフォルトは 'localhost' **port** (`number`): Chroma サーバーのポート番号。デフォルトは 8000 **ssl** (`boolean`): 接続に SSL/HTTPS を使用するかどうか。デフォルトは false **apiKey** (`string`): Chroma Cloud API キー **tenant** (`string`): 接続先 Chroma サーバーのテナント名。単一ノード Chroma のデフォルトは 'default\_tenant'。Chroma Cloud では指定した API キーに基づいて自動解決されます **database** (`string`): 接続先のデータベース名。単一ノード Chroma のデフォルトは 'default\_database'。Chroma Cloud では指定した API キーに基づいて自動解決されます **headers** (`Record`): リクエストとともに送信する追加の HTTP ヘッダー **fetchOptions** (`RequestInit`): HTTP リクエスト用の追加の fetch オプション ## Chroma サーバーの実行 Chroma Cloud を使用する場合は、`ChromaVector` コンストラクターに API キー、テナント、データベース名を指定します。 `@mastra/chroma` パッケージをインストールすると [Chroma CLI](https://docs.trychroma.com/docs/cli/db) を利用でき、`chroma db connect [DB-NAME] --env-file` でこれらを環境変数として設定できます。 単一ノードの Chroma サーバーをセットアップする場合は、次の方法があります。 - Chroma CLI の `chroma run` でローカル実行します。その他の設定オプションは [Chroma ドキュメント](https://docs.trychroma.com/docs/cli/run)を参照してください。 - Chroma 公式イメージを使用して [Docker](https://docs.trychroma.com/guides/deploy/docker) 上で実行します。 - 任意の Provider に独自の Chroma サーバーをデプロイします。Chroma は [AWS](https://docs.trychroma.com/guides/deploy/aws)、[Azure](https://docs.trychroma.com/guides/deploy/azure)、[GCP](https://docs.trychroma.com/guides/deploy/gcp) 向けのサンプルテンプレートを提供しています。 ## メソッド ### `createIndex()` **indexName** (`string`): 作成するインデックスの名前 **dimension** (`number`): ベクトルの次元数(埋め込みモデルと一致させる必要があります) **metric** (`'cosine' | 'euclidean' | 'dotproduct'`): 類似度検索の距離指標 (Default: `cosine`) ### `forkIndex()` 注: fork は Chroma Cloud、または独自にデプロイした OSS の **distributed** Chroma でのみサポートされます。 `forkIndex` を使用すると、既存の Chroma インデックスを即座に fork できます。fork したインデックスへの操作は元のインデックスに影響しません。詳しくは [Chroma ドキュメント](https://docs.trychroma.com/cloud/collection-forking)を参照してください。 **indexName** (`string`): fork するインデックスの名前 **newIndexName** (`string`): fork したインデックスの名前 ### `upsert()` **indexName** (`string`): upsert 先のインデックス名 **vectors** (`number[][]`): 埋め込みベクトルの配列 **metadata** (`Record[]`): 各ベクトルのメタデータ **ids** (`string[]`): 省略可能なベクトル ID(未指定の場合は自動生成されます) **documents** (`string[]`): Chroma 固有: ベクトルに関連付けられた元のテキストドキュメント ### `query()` `queryVector` を使用してインデックスを検索します。`queryVector` からの距離順に、意味的に類似するレコードの配列を返します。各レコードの形式は次のとおりです。 ```typescript { id: string; score: number; document?: string; metadata?: Record; embedding?: number[] } ``` 型推論のため、`query` 呼び出しにメタデータの型を指定することもできます: `query()`。 **indexName** (`string`): クエリ対象のインデックス名 **queryVector** (`number[]`): 類似ベクトルを検索するクエリベクトル **topK** (`number`): 返す結果の数 (Default: `10`) **filter** (`Record`): クエリのメタデータフィルター **includeVector** (`boolean`): 結果にベクトルを含めるかどうか (Default: `false`) **documentFilter** (`Record`): Chroma 固有: ドキュメント内容に適用するフィルター ### `get()` ID、メタデータ、ドキュメントフィルターを使用して Chroma インデックスからレコードを取得します。次の形式のレコード配列を返します。 ```typescript { id: string; document?: string; metadata?: Record; embedding?: number[] } ``` 型推論のため、`get` 呼び出しにメタデータの型を指定することもできます: `get()`。 **indexName** (`string`): クエリ対象のインデックス名 **ids** (`string[]`): 返すレコード ID のリスト。未指定の場合はすべてのレコードを返します。 **filter** (`Record`): メタデータフィルター。 **includeVector** (`boolean`): 結果にベクトルを含めるかどうか (Default: `false`) **documentFilter** (`Record`): Chroma 固有: ドキュメント内容に適用するフィルター **limit** (`number`): 返すレコードの最大数 (Default: `100`) **offset** (`number`): レコードを返す際のオフセット。結果をページ分割するには limit と併用します。 ### `listIndexes()` インデックス名を文字列の配列として返します。 ### `describeIndex()` **indexName** (`string`): 詳細を取得するインデックスの名前 戻り値: ```typescript interface IndexStats { dimension: number count: number metric: 'cosine' | 'euclidean' | 'dotproduct' } ``` ### `deleteIndex()` **indexName** (`string`): 削除するインデックスの名前 ### `updateVector()` ID またはメタデータフィルターで単一のベクトルを更新します。`id` と `filter` のどちらか一方のみを指定する必要があります。 **indexName** (`string`): 更新するベクトルを含むインデックスの名前 **id** (`string`): 更新するベクトルの ID(filter とは同時に指定できません) **filter** (`Record`): 更新するベクトルを特定するメタデータフィルター(id とは同時に指定できません) **update** (`object`): 更新パラメーター `update` オブジェクトには次の値を指定できます。 **vector** (`number[]`): 既存のベクトルを置き換える新しいベクトル **metadata** (`Record`): 既存のメタデータを置き換える新しいメタデータ 例: ```typescript // Update by ID await vectorStore.updateVector({ indexName: 'docs', id: 'vec_123', update: { metadata: { status: 'reviewed' } }, }) // Update by filter await vectorStore.updateVector({ indexName: 'docs', filter: { source_id: 'manual.pdf' }, update: { metadata: { version: 2 } }, }) ``` ### `deleteVector()` **indexName** (`string`): 削除するベクトルを含むインデックスの名前 **id** (`string`): 削除するベクトルの ID ### `deleteVectors()` ID またはメタデータフィルターで複数のベクトルを削除します。一括削除とソース単位のベクトル管理に対応しています。`ids` と `filter` のどちらか一方のみを指定する必要があります。 **indexName** (`string`): 削除するベクトルを含むインデックスの名前 **ids** (`string[]`): 削除するベクトル ID の配列(filter とは同時に指定できません) **filter** (`Record`): 削除するベクトルを特定するメタデータフィルター(ids とは同時に指定できません) 例: ```typescript // Delete all chunks from a document await vectorStore.deleteVectors({ indexName: 'docs', filter: { source_id: 'manual.pdf' }, }) // Delete multiple vectors by ID await vectorStore.deleteVectors({ indexName: 'docs', ids: ['vec_1', 'vec_2', 'vec_3'], }) // Delete old temporary documents await vectorStore.deleteVectors({ indexName: 'docs', filter: { $and: [{ bucket: 'temp' }, { indexed_at: { $lt: '2025-01-01' } }], }, }) ``` ## レスポンス型 クエリ結果は次の形式で返されます。 ```typescript interface QueryResult { id: string score: number metadata: Record document?: string // Chroma-specific: Original document if it was stored vector?: number[] // Only included if includeVector is true } ``` ## エラー処理 store は捕捉可能な型付きエラーをスローします。 ```typescript try { await store.query({ indexName: 'index_name', queryVector: queryVector, }) } catch (error) { if (error instanceof VectorStoreError) { console.log(error.code) // 'connection_failed' | 'invalid_dimension' | etc console.log(error.details) // Additional error context } } ``` ## 関連情報 - [メタデータフィルター](https://mastra.zisheng.pro/ja/reference/rag/metadata-filters)