Elasticsearch vector store
ElasticSearchVector クラスは、Elasticsearch の dense_vector フィールド型と k-NN 検索機能を使用したベクトル検索を提供します。
@mastra/elasticsearch パッケージに含まれています。
インストールインストールへの直接リンク
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/elasticsearch@latest
pnpm add @mastra/elasticsearch@latest
yarn add @mastra/elasticsearch@latest
bun add @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 またはメタデータフィルターで単一のベクトルを更新します。id と filter のどちらか一方のみを指定する必要があります。
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 またはメタデータフィルターで複数のベクトルを削除します。ids と filter のどちらか一方のみを指定する必要があります。
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
}