Skip to main content

ElasticSearch 向量存储

🌐 ElasticSearch Vector Store

ElasticSearchVector 类使用 ElasticSearch 提供向量搜索,利用其 dense_vector 字段类型和 k-NN 搜索功能。它是 @mastra/elasticsearch 包的一部分。

🌐 The ElasticSearchVector class provides vector search using ElasticSearch with its dense_vector field type and k-NN search capabilities. It's part of the @mastra/elasticsearch package.

安装
Direct link to 安装

🌐 Installation

npm install @mastra/elasticsearch@latest

用法
Direct link to 用法

🌐 Usage

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" },
});

构造函数选项
Direct link to 构造函数选项

🌐 Constructor Options

id:

string
Unique identifier for this vector store instance

url:

string
ElasticSearch connection URL (e.g., 'http://localhost:9200')

方法
Direct link to 方法

🌐 Methods

createIndex()
Direct link to createIndex()

使用指定的配置创建一个新索引。

🌐 Creates a new index with the specified configuration.

indexName:

string
Name of the index to create

dimension:

number
Vector dimension (must match your embedding model)

metric?:

'cosine' | 'euclidean' | 'dotproduct'
= cosine
Distance metric for similarity search

upsert()
Direct link to upsert()

在索引中添加或更新向量及其元数据。

🌐 Adds or updates vectors and their metadata in the index.

indexName:

string
Name of the index to insert into

vectors:

number[][]
Array of embedding vectors

metadata?:

Record<string, any>[]
Metadata for each vector

ids?:

string[]
Optional vector IDs (auto-generated if not provided)

query()
Direct link to query()

搜索具有可选元数据过滤的相似向量。

🌐 Searches for similar vectors with optional metadata filtering.

indexName:

string
Name of the index to search in

queryVector:

number[]
Query vector to find similar vectors for

topK?:

number
= 10
Number of results to return

filter?:

Record<string, any>
Metadata filters

includeVector?:

boolean
= false
Whether to include vector data in results

describeIndex()
Direct link to describeIndex()

获取有关索引的信息。

🌐 Gets information about an index.

indexName:

string
Name of the index to describe

返回:

🌐 Returns:

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

deleteIndex()
Direct link to deleteIndex()

删除索引及其所有数据。

🌐 Deletes an index and all its data.

indexName:

string
Name of the index to delete

listIndexes()
Direct link to listIndexes()

列出所有向量索引。

🌐 Lists all vector indexes.

返回:Promise<string[]>

🌐 Returns: Promise<string[]>

updateVector()
Direct link to updateVector()

通过 ID 或元数据过滤器更新单个向量。必须提供 idfilter 中的一个,但不能同时提供两者。

🌐 Update a single vector by ID or by metadata filter. Either id or filter must be provided, but not both.

indexName:

string
Name of the index containing the vector

id?:

string
ID of the vector to update (mutually exclusive with filter)

filter?:

Record<string, any>
Metadata filter to identify vector(s) to update (mutually exclusive with id)

update:

object
Update data containing vector and/or metadata

update.vector?:

number[]
New vector data

update.metadata?:

Record<string, any>
New metadata

deleteVector()
Direct link to deleteVector()

通过其 ID 删除单个向量。

🌐 Deletes a single vector by its ID.

indexName:

string
Name of the index containing the vector

id:

string
ID of the vector to delete

deleteVectors()
Direct link to deleteVectors()

通过 ID 或元数据过滤器删除多个向量。必须提供 idsfilter 中的一个,但不能同时提供两者。

🌐 Delete multiple vectors by IDs or by metadata filter. Either ids or filter must be provided, but not both.

indexName:

string
Name of the index containing the vectors to delete

ids?:

string[]
Array of vector IDs to delete (mutually exclusive with filter)

filter?:

Record<string, any>
Metadata filter to identify vectors to delete (mutually exclusive with ids)

响应类型
Direct link to 响应类型

🌐 Response Types

查询结果以此格式返回:

🌐 Query results are returned in this format:

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

🌐 Related