Stockage vectoriel Elasticsearch
La classe ElasticSearchVector fournit une recherche vectorielle au moyen d'Elasticsearch, avec son type de champ dense_vector et ses fonctionnalités de recherche k-NN.
Elle fait partie du package @mastra/elasticsearch.
InstallationLien direct vers Installation
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/elasticsearch@latest
pnpm add @mastra/elasticsearch@latest
yarn add @mastra/elasticsearch@latest
bun add @mastra/elasticsearch@latest
UtilisationLien direct vers Utilisation
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" },
});
Options du constructeurLien direct vers Options du constructeur
id:
url:
MéthodesLien direct vers Méthodes
createIndex()Lien direct vers createindex
Crée un index avec la configuration indiquée.
indexName:
dimension:
metric?:
upsert()Lien direct vers upsert
Ajoute ou met à jour les vecteurs et leurs métadonnées dans l'index.
indexName:
vectors:
metadata?:
ids?:
query()Lien direct vers query
Recherche des vecteurs similaires avec un filtrage facultatif des métadonnées.
indexName:
queryVector:
topK?:
filter?:
includeVector?:
describeIndex()Lien direct vers describeindex
Récupère les informations relatives à un index.
indexName:
Renvoie :
interface IndexStats {
dimension: number
count: number
metric: 'cosine' | 'euclidean' | 'dotproduct'
}
deleteIndex()Lien direct vers deleteindex
Supprime un index et toutes ses données.
indexName:
listIndexes()Lien direct vers listindexes
Répertorie tous les index vectoriels.
Renvoie : Promise<string[]>
updateVector()Lien direct vers updatevector
Met à jour un seul vecteur à partir de son identifiant ou d'un filtre de métadonnées. Vous devez fournir id ou filter, mais pas les deux.
indexName:
id?:
filter?:
update:
update.vector?:
update.metadata?:
deleteVector()Lien direct vers deletevector
Supprime un seul vecteur à partir de son identifiant.
indexName:
id:
deleteVectors()Lien direct vers deletevectors
Supprime plusieurs vecteurs à partir de leurs identifiants ou d'un filtre de métadonnées. Vous devez fournir ids ou filter, mais pas les deux.
indexName:
ids?:
filter?:
Types de réponseLien direct vers Types de réponse
Les résultats des requêtes sont renvoyés au format suivant :
interface QueryResult {
id: string
score: number
metadata: Record<string, any>
vector?: number[] // Only included if includeVector is true
}