Stockage libSQL
libSQL est une base de données open source compatible avec SQLite qui prend en charge les déploiements locaux et distants. Elle permet de stocker l’historique des messages, les instantanés de Workflow, les traces et les scores d’Evals.
Pour les vecteurs utilisés par le rappel sémantique ou le RAG traditionnel, utilisez libSQL Vector, qui prend en charge les embeddings et la recherche vectorielle.
InstallationLien direct vers Installation
Les fournisseurs de Storage doivent être installés sous forme de packages distincts :
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/libsql@latest
pnpm add @mastra/libsql@latest
yarn add @mastra/libsql@latest
bun add @mastra/libsql@latest
UtilisationLien direct vers Utilisation
import { LibSQLStore } from '@mastra/libsql'
import { Mastra } from '@mastra/core'
const mastra = new Mastra({
storage: new LibSQLStore({
id: 'libsql-storage',
url: 'file:./storage.db',
}),
})
Stockage de fichiers au niveau de l’Agent :
import { Memory } from '@mastra/memory'
import { Agent } from '@mastra/core/agent'
import { LibSQLStore } from '@mastra/libsql'
export const agent = new Agent({
id: 'example-agent',
memory: new Memory({
storage: new LibSQLStore({
id: 'libsql-storage',
url: 'file:./agent.db',
}),
}),
})
Le stockage de fichiers ne fonctionne pas avec les plateformes serverless dont le système de fichiers est éphémère. Pour les déploiements serverless, utilisez Turso ou un autre moteur de base de données.
Production avec une base de données distante :
storage: new LibSQLStore({
id: 'libsql-storage',
url: 'libsql://your-db-name.aws-ap-northeast-1.turso.io',
authToken: process.env.TURSO_AUTH_TOKEN,
})
Pour le développement local et les tests, vous pouvez stocker les données en mémoire :
storage: new LibSQLStore({
id: 'libsql-storage',
url: ':memory:',
})
Le stockage en mémoire est réinitialisé lorsque le processus change. Il convient uniquement au développement.
OptionsLien direct vers Options
url:
:memory: pour une base de données en mémoire, file:filename.db pour une base de données dans un fichier, ou une chaîne de connexion libSQL (par exemple, libsql://your-database.turso.io) pour un stockage distant.authToken?:
Tables géréesLien direct vers Tables gérées
L’implémentation du stockage crée automatiquement les tables de stockage principales, notamment mastra_notifications pour les enregistrements de la boîte de réception de notifications et les métadonnées de distribution.
LibSQLStore expose le stockage des notifications au moyen de getStore('notifications').
InitialisationLien direct vers Initialisation
Lorsque vous transmettez un Storage à la classe Mastra, init() est appelée automatiquement afin de créer le schéma principal :
import { Mastra } from '@mastra/core'
import { LibSQLStore } from '@mastra/libsql'
const storage = new LibSQLStore({
id: 'libsql-storage',
url: 'file:./storage.db',
})
const mastra = new Mastra({
storage, // init() called automatically
})
Si vous utilisez directement le Storage sans Mastra, appelez explicitement init() :
import { LibSQLStore } from '@mastra/libsql'
const storage = new LibSQLStore({
id: 'libsql-storage',
url: 'file:./storage.db',
})
await storage.init()
// Access domain-specific stores via getStore()
const memoryStore = await storage.getStore('memory')
const thread = await memoryStore?.getThreadById({ threadId: '...' })
ObservabilityLien direct vers Observability
libSQL prend en charge l’Observability et convient parfaitement au développement local. Utilisez la stratégie de traçage realtime pour obtenir une visibilité immédiate pendant le débogage.
Pour les environnements de production dont le volume de traces est plus élevé, envisagez d’utiliser PostgreSQL ou ClickHouse avec un Storage composite.