> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # Base vectorielle Lance La classe LanceVectorStore fournit une recherche vectorielle avec [LanceDB](https://lancedb.github.io/lancedb/), une base vectorielle embarquée fondée sur le format colonnaire Lance. Elle offre un stockage efficace et une recherche de similarité rapide, aussi bien pour le développement local que pour les déploiements en production. ## Méthode de fabrique LanceVectorStore utilise un modèle de fabrique pour sa création. Utilisez la méthode statique `create()` plutôt que le constructeur directement. **uri** (`string`): Chemin de la base de données LanceDB ou URI des déploiements cloud **options** (`ConnectionOptions`): Options de connexion supplémentaires pour LanceDB ## Exemples de construction Vous pouvez créer une instance de `LanceVectorStore` à l’aide de la méthode statique create : ```ts import { LanceVectorStore } from '@mastra/lance' // Connect to a local database const vectorStore = await LanceVectorStore.create('/path/to/db') // Connect to a LanceDB cloud database const cloudStore = await LanceVectorStore.create('db://host:port') // Connect to a cloud database with options const s3Store = await LanceVectorStore.create('s3://bucket/db', { storageOptions: { timeout: '60s' }, }) ``` ## Méthodes ### `createIndex()` **tableName** (`string`): Nom de la table dans laquelle créer l’index **indexName** (`string`): Nom de l’index (nom de colonne) à 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`) **indexConfig** (`LanceIndexConfig`): Configuration de l’index (Default: `{ type: 'hnsw' }`) #### `LanceIndexConfig` **type** (`'ivfflat' | 'hnsw'`): Type d’index (Default: `hnsw`) **type.ivfflat** (`ivfflat`): Regroupe les vecteurs en listes pour la recherche approximative. **type.hnsw** (`hnsw`): Index fondé sur un graphe offrant des recherches rapides et un rappel élevé. **numPartitions** (`number`): Nombre de partitions des index IVF (Default: `128`) **numSubVectors** (`number`): Nombre de sous-vecteurs pour la quantification de produit (Default: `16`) **hnsw** (`HNSWConfig`): Configuration HNSW **hnsw\.m** (`number`): Nombre maximal de connexions par nœud (valeur par défaut : 16) **hnsw\.efConstruction** (`number`): Complexité lors de la construction (valeur par défaut : 100) ### `createTable()` **tableName** (`string`): Nom de la table à créer **data** (`Record[] | TableLike`): Données initiales de la table **options** (`Partial`): Options supplémentaires de création de la table ### `upsert()` **tableName** (`string`): Nom de la table dans laquelle upserter les vecteurs **vectors** (`number[][]`): Tableau de vecteurs d’embedding **metadata** (`Record[]`): Métadonnées de chaque vecteur **ids** (`string[]`): ID de vecteurs facultatifs (générés automatiquement s’ils ne sont pas fournis) ### `query()` **tableName** (`string`): Nom de la table à interroger **queryVector** (`number[]`): Vecteur de requête **topK** (`number`): Nombre de résultats à renvoyer (Default: `10`) **filter** (`Record`): Filtres de métadonnées **includeVector** (`boolean`): Indique s’il faut inclure le vecteur dans le résultat (Default: `false`) **columns** (`string[]`): Colonnes précises à inclure dans le résultat (Default: `[]`) **includeAllColumns** (`boolean`): Indique s’il faut inclure toutes les colonnes dans le résultat (Default: `false`) ### `listTables()` Renvoie un tableau de noms de tables sous forme de chaînes. ```typescript const tables = await vectorStore.listTables() // ['my_vectors', 'embeddings', 'documents'] ``` ### `getTableSchema()` **tableName** (`string`): Nom de la table à décrire Renvoie le schéma de la table indiquée. ### `deleteTable()` **tableName** (`string`): Nom de la table à supprimer ### `deleteAllTables()` Supprime toutes les tables de la base de données. ### `listIndexes()` Renvoie un tableau de noms d’index sous forme de chaînes. ### `describeIndex()` **indexName** (`string`): Nom de l’index à décrire Renvoie des informations sur l’index : ```typescript interface IndexStats { dimension: number count: number metric: 'cosine' | 'euclidean' | 'dotproduct' type: 'ivfflat' | 'hnsw' config: { m?: number efConstruction?: number numPartitions?: number numSubVectors?: number } } ``` ### `deleteIndex()` **indexName** (`string`): Nom de l’index à supprimer ### `updateVector()` Met à jour un seul vecteur par ID ou par 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`): ID du vecteur à mettre à jour (mutuellement exclusif avec filter) **filter** (`Record`): Filtre de métadonnées permettant d’identifier le ou les vecteurs à mettre à jour (mutuellement exclusif avec id) **update** (`{ vector?: number[]; metadata?: Record; }`): Objet contenant le vecteur et/ou les métadonnées à mettre à jour ### `deleteVector()` **indexName** (`string`): Nom de l’index contenant le vecteur **id** (`string`): ID du vecteur à supprimer ### `deleteVectors()` Supprime plusieurs vecteurs par ID ou par 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 ID de vecteurs à supprimer (mutuellement exclusif avec filter) **filter** (`Record`): Filtre de métadonnées permettant d’identifier les vecteurs à supprimer (mutuellement exclusif avec ids) ### `close()` Ferme la connexion à la base de données. ## Types de réponse Les résultats de la requête sont renvoyés dans ce format : ```typescript interface QueryResult { id: string score: number metadata: Record vector?: number[] // Only included if includeVector is true document?: string // Document text if available } ``` ## Gestion des erreurs La base vectorielle déclenche des erreurs typées qui peuvent être interceptées : ```typescript try { await store.query({ tableName: 'my_vectors', queryVector: queryVector, }) } catch (error) { if (error instanceof Error) { console.log(error.message) } } ``` ## Bonnes pratiques - Utilisez le type d’index adapté à votre cas d’utilisation : - HNSW pour un meilleur rappel et de meilleures performances lorsque la mémoire n’est pas limitée - IVF pour une meilleure efficacité mémoire avec de grands jeux de données - Pour des performances optimales avec de grands jeux de données, envisagez d’ajuster les valeurs `numPartitions` et `numSubVectors` - Utilisez la méthode `close()` pour fermer correctement les connexions lorsque vous avez fini d’utiliser la base de données - Stockez les métadonnées selon un schéma cohérent afin de simplifier les opérations de filtrage ## Ressources associées - [Filtres de métadonnées](https://mastra.zisheng.pro/fr/reference/rag/metadata-filters)