> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ja/llms.txt # Elasticsearch vector store `ElasticSearchVector` クラスは、[Elasticsearch](https://www.elastic.co/elasticsearch/) の `dense_vector` フィールド型と k-NN 検索機能を使用したベクトル検索を提供します。 `@mastra/elasticsearch` パッケージに含まれています。 ## インストール **npm**: ```bash npm install @mastra/elasticsearch@latest ``` **pnpm**: ```bash pnpm add @mastra/elasticsearch@latest ``` **Yarn**: ```bash yarn add @mastra/elasticsearch@latest ``` **Bun**: ```bash bun add @mastra/elasticsearch@latest ``` ## 使用方法 ```typescript import { ElasticSearchVector } from "@mastra/elasticsearch"; const store = new ElasticSearchVector({ id: "elasticsearch-vector", url: process.env.ELASTICSEARCH_URL, }); // Create an index await store.createIndex({ indexName: "my-collection", dimension: 1536, }); // Add vectors with metadata const vectors = [[0.1, 0.2, ...], [0.3, 0.4, ...]]; const metadata = [ { text: "first document", category: "A" }, { text: "second document", category: "B" } ]; await store.upsert({ indexName: "my-collection", vectors, metadata, }); // Query similar vectors const results = await store.query({ indexName: "my-collection", queryVector: [0.1, 0.2, ...], topK: 10, filter: { category: "A" }, }); ``` ## コンストラクターオプション **id** (`string`): この vector store インスタンスの一意の識別子 **url** (`string`): Elasticsearch 接続 URL(例: 'http\://localhost:9200') ## メソッド ### `createIndex()` 指定した設定で新しいインデックスを作成します。 **indexName** (`string`): 作成するインデックスの名前 **dimension** (`number`): ベクトルの次元数(埋め込みモデルと一致させる必要があります) **metric** (`'cosine' | 'euclidean' | 'dotproduct'`): 類似度検索の距離指標 (Default: `cosine`) ### `upsert()` インデックス内のベクトルとそのメタデータを追加または更新します。 **indexName** (`string`): 挿入先のインデックス名 **vectors** (`number[][]`): 埋め込みベクトルの配列 **metadata** (`Record[]`): 各ベクトルのメタデータ **ids** (`string[]`): 省略可能なベクトル ID(未指定の場合は自動生成されます) ### `query()` 省略可能なメタデータフィルターを使用して、類似するベクトルを検索します。 **indexName** (`string`): 検索対象のインデックス名 **queryVector** (`number[]`): 類似ベクトルを検索するクエリベクトル **topK** (`number`): 返す結果の数 (Default: `10`) **filter** (`Record`): メタデータフィルター **includeVector** (`boolean`): 結果にベクトルデータを含めるかどうか (Default: `false`) ### `describeIndex()` インデックスの情報を取得します。 **indexName** (`string`): 詳細を取得するインデックスの名前 戻り値: ```typescript interface IndexStats { dimension: number count: number metric: 'cosine' | 'euclidean' | 'dotproduct' } ``` ### `deleteIndex()` インデックスとそのすべてのデータを削除します。 **indexName** (`string`): 削除するインデックスの名前 ### `listIndexes()` すべてのベクトルインデックスを一覧表示します。 戻り値: `Promise` ### `updateVector()` ID またはメタデータフィルターで単一のベクトルを更新します。`id` と `filter` のどちらか一方のみを指定する必要があります。 **indexName** (`string`): ベクトルを含むインデックスの名前 **id** (`string`): 更新するベクトルの ID(filter とは同時に指定できません) **filter** (`Record`): 更新するベクトルを特定するメタデータフィルター(id とは同時に指定できません) **update** (`object`): ベクトルやメタデータを含む更新データ **update.vector** (`number[]`): 新しいベクトルデータ **update.metadata** (`Record`): 新しいメタデータ ### `deleteVector()` ID を指定して単一のベクトルを削除します。 **indexName** (`string`): ベクトルを含むインデックスの名前 **id** (`string`): 削除するベクトルの ID ### `deleteVectors()` ID またはメタデータフィルターで複数のベクトルを削除します。`ids` と `filter` のどちらか一方のみを指定する必要があります。 **indexName** (`string`): 削除するベクトルを含むインデックスの名前 **ids** (`string[]`): 削除するベクトル ID の配列(filter とは同時に指定できません) **filter** (`Record`): 削除するベクトルを特定するメタデータフィルター(ids とは同時に指定できません) ## レスポンス型 クエリ結果は次の形式で返されます。 ```typescript interface QueryResult { id: string score: number metadata: Record vector?: number[] // Only included if includeVector is true } ``` ## 関連情報 - [メタデータフィルター](https://mastra.zisheng.pro/ja/reference/rag/metadata-filters)