libSQLストレージ
libSQLは、ローカルとリモートの両方へのデプロイに対応する、オープンソースのSQLite互換データベースです。メッセージ履歴、Workflowのスナップショット、トレース、Evalスコアの保存に使用できます。
セマンティックリコールや従来のRAGなどでベクトルを使用する場合は、埋め込みとベクトル検索を扱うlibSQL Vectorを使用してください。
インストールインストールへの直接リンク
ストレージProviderは別パッケージとしてインストールする必要があります。
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/libsql@latest
pnpm add @mastra/libsql@latest
yarn add @mastra/libsql@latest
bun add @mastra/libsql@latest
使用方法使用方法への直接リンク
import { LibSQLStore } from '@mastra/libsql'
import { Mastra } from '@mastra/core'
const mastra = new Mastra({
storage: new LibSQLStore({
id: 'libsql-storage',
url: 'file:./storage.db',
}),
})
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',
}),
}),
})
ファイルストレージは、一時ファイルシステムを使用するサーバーレスプラットフォームでは動作しません。サーバーレス環境にデプロイする場合は、Tursoまたは別のデータベースエンジンを使用してください。
リモートデータベースを使用する本番環境:
storage: new LibSQLStore({
id: 'libsql-storage',
url: 'libsql://your-db-name.aws-ap-northeast-1.turso.io',
authToken: process.env.TURSO_AUTH_TOKEN,
})
ローカルでの開発とテストでは、データをメモリに保存できます。
storage: new LibSQLStore({
id: 'libsql-storage',
url: ':memory:',
})
インメモリストレージは、プロセスが変わるとリセットされます。開発用途にのみ適しています。
オプションオプションへの直接リンク
url:
:memory:、ファイルデータベースにはfile:filename.db、リモートストレージにはlibSQL接続文字列(例: libsql://your-database.turso.io)を使用します。authToken?:
管理対象のテーブル管理対象のテーブルへの直接リンク
このストレージ実装は、通知受信ボックスのレコードと配信メタデータ用のmastra_notificationsを含む、コアストレージテーブルを自動で作成します。
LibSQLStoreでは、getStore('notifications')を介して通知ストレージを利用できます。
初期化初期化への直接リンク
ストレージをMastraクラスに渡すと、コアスキーマを作成するためにinit()が自動で呼び出されます。
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
})
Mastraを介さずにストレージを直接使用する場合は、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: '...' })
ObservabilityObservabilityへの直接リンク
libSQLはObservabilityをサポートしており、ローカル開発に適しています。デバッグ中にすぐ確認できるよう、realtimeトレース戦略を使用してください。
トレース量が多い本番環境では、PostgreSQLまたは複合ストレージ経由のClickHouseの使用を検討してください。