Stockage LanceDB
L’implémentation du stockage LanceDB fournit une solution de stockage hautes performances qui utilise le système de base de données LanceDB, particulièrement efficace pour le stockage traditionnel des données comme pour les opérations vectorielles.
Le stockage LanceDB ne prend pas en charge le domaine Observability. Les Traces de MastraStorageExporter ne peuvent pas être conservées dans LanceDB, et les fonctionnalités d’Observability de Studio ne fonctionneront pas si LanceDB est votre seul Provider de stockage. Pour activer Observability, utilisez un stockage composite afin d’acheminer les données d’Observability vers un Provider compatible tel que ClickHouse.
InstallationLien direct vers Installation
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/lance@latest
pnpm add @mastra/lance@latest
yarn add @mastra/lance@latest
bun add @mastra/lance@latest
UtilisationLien direct vers Utilisation
Utilisation de base du stockageLien direct vers Utilisation de base du stockage
import { LanceStorage } from '@mastra/lance'
// Connect to a local database
const storage = await LanceStorage.create('my-storage', '/path/to/db')
// Connect to a LanceDB cloud database
const storage = await LanceStorage.create('my-storage', 'db://host:port')
// Connect to a cloud database with custom options
const storage = await LanceStorage.create('my-storage', 's3://bucket/db', {
storageOptions: { timeout: '60s' },
})
ParamètresLien direct vers Paramètres
LanceStorage.create()Lien direct vers lancestoragecreate
name:
uri:
options?:
Remarques complémentairesLien direct vers Remarques complémentaires
Gestion des schémasLien direct vers Gestion des schémas
L’implémentation LanceStorage gère automatiquement la création et la mise à jour des schémas. Elle associe les types de schéma Mastra aux types de données Apache Arrow utilisés en interne par LanceDB :
text,uuid→ Utf8int,integer→ Int32float→ Float32jsonb,json→ Utf8 (serialized)binary→ Binary
InitialisationLien direct vers Initialisation
Lorsque vous transmettez le stockage à la classe Mastra, init() est appelée automatiquement avant toute opération de stockage :
import { Mastra } from '@mastra/core'
import { LanceStorage } from '@mastra/lance'
const storage = await LanceStorage.create('my-storage', '/path/to/db')
const mastra = new Mastra({
storage, // init() is called automatically
})
Si vous utilisez directement le stockage sans Mastra, vous devez appeler explicitement init() pour créer les tables :
import { LanceStorage } from '@mastra/lance'
const storage = await LanceStorage.create('my-storage', '/path/to/db')
// Required when using storage directly
await storage.init()
// Access domain-specific stores via getStore()
const memoryStore = await storage.getStore('memory')
const thread = await memoryStore?.getThreadById({ threadId: '...' })
Si init() n’est pas appelée, les tables ne seront pas créées et les opérations de stockage échoueront silencieusement ou lèveront des erreurs.
Options de déploiementLien direct vers Options de déploiement
Le stockage LanceDB peut être configuré pour différents scénarios de déploiement :
- Développement local : utilisez un chemin de fichier local pour le développement et les tests
/path/to/db
- Déploiement cloud : connectez-vous à une instance LanceDB hébergée
db://host:port
- Stockage S3 : utilisez Amazon S3 pour un stockage cloud de grande capacité
s3://bucket/db
Gestion des tablesLien direct vers Gestion des tables
LanceStorage fournit des méthodes pour gérer les tables :
- Créer des tables avec des schémas personnalisés
- Supprimer des tables
- Vider des tables en supprimant tous les enregistrements
- Charger des enregistrements par clé
- Insérer un seul enregistrement ou un lot d’enregistrements