> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # Stockage vectoriel Elasticsearch La classe `ElasticSearchVector` fournit une recherche vectorielle au moyen d'[Elasticsearch](https://www.elastic.co/elasticsearch/), avec son type de champ `dense_vector` et ses fonctionnalités de recherche k-NN. Elle fait partie du package `@mastra/elasticsearch`. ## Installation **npm**: ```bash npm install @mastra/elasticsearch@latest ``` **pnpm**: ```bash pnpm add @mastra/elasticsearch@latest ``` **Yarn**: ```bash yarn add @mastra/elasticsearch@latest ``` **Bun**: ```bash bun add @mastra/elasticsearch@latest ``` ## Utilisation ```typescript 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 **id** (`string`): Identifiant unique de cette instance de stockage vectoriel **url** (`string`): URL de connexion Elasticsearch (par exemple, 'http\://localhost:9200') ## Méthodes ### `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'`): Métrique de distance pour la recherche de similarité (Default: `cosine`) ### `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[]`): Métadonnées de chaque vecteur **ids** (`string[]`): Identifiants facultatifs des vecteurs (générés automatiquement s'ils ne sont pas fournis) ### `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`): Nombre de résultats à renvoyer (Default: `10`) **filter** (`Record`): Filtres de métadonnées **includeVector** (`boolean`): Indique si les données vectorielles doivent être incluses dans les résultats (Default: `false`) ### `describeIndex()` Récupère les informations relatives à un index. **indexName** (`string`): Nom de l'index à décrire Renvoie : ```typescript interface IndexStats { dimension: number count: number metric: 'cosine' | 'euclidean' | 'dotproduct' } ``` ### `deleteIndex()` Supprime un index et toutes ses données. **indexName** (`string`): Nom de l'index à supprimer ### `listIndexes()` Répertorie tous les index vectoriels. Renvoie : `Promise` ### `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`): 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`): Nouvelles métadonnées ### `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()` 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`): Filtre de métadonnées permettant d’identifier les vecteurs à supprimer (incompatible avec ids) ## Types de réponse Les résultats des requêtes sont renvoyés au format suivant : ```typescript interface QueryResult { id: string score: number metadata: Record vector?: number[] // Only included if includeVector is true } ``` ## Voir aussi - [Filtres de métadonnées](https://mastra.zisheng.pro/fr/reference/rag/metadata-filters)