Aller au contenu principal

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.

Installation
Lien direct vers Installation

npm install @mastra/elasticsearch@latest

Utilisation
Lien 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 constructeur
Lien direct vers Options du constructeur

id:

string
Identifiant unique de cette instance de stockage vectoriel

url:

string
URL de connexion Elasticsearch (par exemple, 'http://localhost:9200')

Méthodes
Lien direct vers Méthodes

createIndex()
Lien direct vers createindex

Crée un index avec la configuration indiquée.

indexName:

string
Nom de l'index à créer

dimension:

number
Dimension du vecteur (doit correspondre à votre modèle d'embedding)

metric?:

'cosine' | 'euclidean' | 'dotproduct'
= cosine
Métrique de distance pour la recherche de similarité

upsert()
Lien direct vers upsert

Ajoute ou met à jour les vecteurs et leurs métadonnées dans l'index.

indexName:

string
Nom de l'index dans lequel effectuer l'insertion

vectors:

number[][]
Tableau de vecteurs d'embedding

metadata?:

Record<string, any>[]
Métadonnées de chaque vecteur

ids?:

string[]
Identifiants facultatifs des vecteurs (générés automatiquement s'ils ne sont pas fournis)

query()
Lien direct vers query

Recherche des vecteurs similaires avec un filtrage facultatif des métadonnées.

indexName:

string
Nom de l'index dans lequel effectuer la recherche

queryVector:

number[]
Vecteur de requête pour lequel rechercher des vecteurs similaires

topK?:

number
= 10
Nombre de résultats à renvoyer

filter?:

Record<string, any>
Filtres de métadonnées

includeVector?:

boolean
= false
Indique si les données vectorielles doivent être incluses dans les résultats

describeIndex()
Lien direct vers describeindex

Récupère les informations relatives à un index.

indexName:

string
Nom de l'index à décrire

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:

string
Nom de l'index à supprimer

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:

string
Nom de l'index contenant le vecteur

id?:

string
Identifiant du vecteur à mettre à jour (incompatible avec filter)

filter?:

Record<string, any>
Filtre de métadonnées permettant d’identifier le ou les vecteurs à mettre à jour (incompatible avec id)

update:

object
Données de mise à jour contenant le vecteur ou les métadonnées, ou les deux

update.vector?:

number[]
Nouvelles données vectorielles

update.metadata?:

Record<string, any>
Nouvelles métadonnées

deleteVector()
Lien direct vers deletevector

Supprime un seul vecteur à partir de son identifiant.

indexName:

string
Nom de l'index contenant le vecteur

id:

string
Identifiant du vecteur à supprimer

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:

string
Nom de l'index contenant les vecteurs à supprimer

ids?:

string[]
Tableau des identifiants de vecteurs à supprimer (incompatible avec filter)

filter?:

Record<string, any>
Filtre de métadonnées permettant d’identifier les vecteurs à supprimer (incompatible avec ids)

Types de réponse
Lien 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
}