メインコンテンツへ移動

libSQLストレージ

libSQLは、ローカルとリモートの両方へのデプロイに対応する、オープンソースのSQLite互換データベースです。メッセージ履歴、Workflowのスナップショット、トレース、Evalスコアの保存に使用できます。

セマンティックリコールや従来のRAGなどでベクトルを使用する場合は、埋め込みとベクトル検索を扱うlibSQL Vectorを使用してください。

インストール
インストールへの直接リンク

ストレージProviderは別パッケージとしてインストールする必要があります。

npm install @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:

string
データベースURL。インメモリデータベースには:memory:、ファイルデータベースにはfile:filename.db、リモートストレージにはlibSQL接続文字列(例: libsql://your-database.turso.io)を使用します。

authToken?:

string
リモートlibSQLデータベースの認証トークン。

管理対象のテーブル
管理対象のテーブルへの直接リンク

このストレージ実装は、通知受信ボックスのレコードと配信メタデータ用の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: '...' })

Observability
Observabilityへの直接リンク

libSQLはObservabilityをサポートしており、ローカル開発に適しています。デバッグ中にすぐ確認できるよう、realtimeトレース戦略を使用してください。

トレース量が多い本番環境では、PostgreSQLまたは複合ストレージ経由のClickHouseの使用を検討してください。