Aller au contenu principal

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.

Observability non prise en charge

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.

Installation
Lien direct vers Installation

npm install @mastra/lance@latest

Utilisation
Lien direct vers Utilisation

Utilisation de base du stockage
Lien 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ètres
Lien direct vers Paramètres

LanceStorage.create()
Lien direct vers lancestoragecreate

name:

string
Nom identifiant l’instance de stockage

uri:

string
URI de connexion à la base de données LanceDB. Peut être un chemin local, une URL de base de données cloud ou une URL de bucket S3

options?:

ConnectionOptions
Options de connexion à LanceDB, telles que le délai maximal, l’authentification, etc.

Remarques complémentaires
Lien direct vers Remarques complémentaires

Gestion des schémas
Lien 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 → Utf8
  • int, integer → Int32
  • float → Float32
  • jsonb, json → Utf8 (serialized)
  • binary → Binary

Initialisation
Lien 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: '...' })
attention

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éploiement
Lien 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 tables
Lien 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