メインコンテンツへ移動

Elasticsearch vector store

ElasticSearchVector クラスは、Elasticsearchdense_vector フィールド型と k-NN 検索機能を使用したベクトル検索を提供します。 @mastra/elasticsearch パッケージに含まれています。

インストール
インストールへの直接リンク

npm install @mastra/elasticsearch@latest

使用方法
使用方法への直接リンク

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()
createindexへの直接リンク

指定した設定で新しいインデックスを作成します。

indexName:

string
作成するインデックスの名前

dimension:

number
ベクトルの次元数(埋め込みモデルと一致させる必要があります)

metric?:

'cosine' | 'euclidean' | 'dotproduct'
= cosine
類似度検索の距離指標

upsert()
upsertへの直接リンク

インデックス内のベクトルとそのメタデータを追加または更新します。

indexName:

string
挿入先のインデックス名

vectors:

number[][]
埋め込みベクトルの配列

metadata?:

Record<string, any>[]
各ベクトルのメタデータ

ids?:

string[]
省略可能なベクトル ID(未指定の場合は自動生成されます)

query()
queryへの直接リンク

省略可能なメタデータフィルターを使用して、類似するベクトルを検索します。

indexName:

string
検索対象のインデックス名

queryVector:

number[]
類似ベクトルを検索するクエリベクトル

topK?:

number
= 10
返す結果の数

filter?:

Record<string, any>
メタデータフィルター

includeVector?:

boolean
= false
結果にベクトルデータを含めるかどうか

describeIndex()
describeindexへの直接リンク

インデックスの情報を取得します。

indexName:

string
詳細を取得するインデックスの名前

戻り値:

interface IndexStats {
dimension: number
count: number
metric: 'cosine' | 'euclidean' | 'dotproduct'
}

deleteIndex()
deleteindexへの直接リンク

インデックスとそのすべてのデータを削除します。

indexName:

string
削除するインデックスの名前

listIndexes()
listindexesへの直接リンク

すべてのベクトルインデックスを一覧表示します。

戻り値: Promise<string[]>

updateVector()
updatevectorへの直接リンク

ID またはメタデータフィルターで単一のベクトルを更新します。idfilter のどちらか一方のみを指定する必要があります。

indexName:

string
ベクトルを含むインデックスの名前

id?:

string
更新するベクトルの ID(filter とは同時に指定できません)

filter?:

Record<string, any>
更新するベクトルを特定するメタデータフィルター(id とは同時に指定できません)

update:

object
ベクトルやメタデータを含む更新データ

update.vector?:

number[]
新しいベクトルデータ

update.metadata?:

Record<string, any>
新しいメタデータ

deleteVector()
deletevectorへの直接リンク

ID を指定して単一のベクトルを削除します。

indexName:

string
ベクトルを含むインデックスの名前

id:

string
削除するベクトルの ID

deleteVectors()
deletevectorsへの直接リンク

ID またはメタデータフィルターで複数のベクトルを削除します。idsfilter のどちらか一方のみを指定する必要があります。

indexName:

string
削除するベクトルを含むインデックスの名前

ids?:

string[]
削除するベクトル ID の配列(filter とは同時に指定できません)

filter?:

Record<string, any>
削除するベクトルを特定するメタデータフィルター(ids とは同時に指定できません)

レスポンス型
レスポンス型への直接リンク

クエリ結果は次の形式で返されます。

interface QueryResult {
id: string
score: number
metadata: Record<string, any>
vector?: number[] // Only included if includeVector is true
}