メインコンテンツへ移動

LanceDBストレージ

LanceDBストレージ実装は、従来のデータストレージとベクトル操作の両方に優れたLanceDBデータベースシステムを使用し、高性能なストレージソリューションを提供します。

Observabilityはサポートされていません

LanceDBストレージはObservabilityドメインをサポートしていませんMastraStorageExporterのトレースをLanceDBに永続化できず、LanceDBだけをストレージProviderとして使用するとStudioのObservability機能も動作しません。Observabilityを有効にするには、複合ストレージを使用して、ObservabilityデータをClickHouseなどの対応Providerに振り分けてください。

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

npm install @mastra/lance@latest

使用方法
使用方法への直接リンク

基本的なストレージの使用方法
基本的なストレージの使用方法への直接リンク

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' },
})

パラメーター
パラメーターへの直接リンク

LanceStorage.create()
lancestoragecreateへの直接リンク

name:

string
ストレージインスタンスの名前識別子

uri:

string
LanceDBデータベースへの接続URI。ローカルパス、クラウドDBのURL、S3バケットのURLを指定できます

options?:

ConnectionOptions
タイムアウト設定や認証など、LanceDBの接続オプション

補足事項
補足事項への直接リンク

スキーマ管理
スキーマ管理への直接リンク

LanceStorage実装は、スキーマの作成と更新を自動で処理します。Mastraのスキーマ型を、LanceDBが内部で使用するApache Arrowデータ型に次のように対応付けます。

  • text, uuid → Utf8
  • int, integer → Int32
  • float → Float32
  • jsonb, json → Utf8(シリアライズ済み)
  • binary → Binary

初期化
初期化への直接リンク

ストレージをMastraクラスに渡すと、ストレージ操作の前にinit()が自動で呼び出されます。

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
})

Mastraを介さずにストレージを直接使用する場合は、テーブルを作成するためにinit()を明示的に呼び出す必要があります。

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: '...' })
警告

init()を呼び出さないとテーブルが作成されず、ストレージ操作が何も通知せずに失敗するか、エラーがスローされます。

デプロイ方法
デプロイ方法への直接リンク

LanceDBストレージは、さまざまなデプロイ環境に合わせて設定できます。

  • ローカル開発: 開発とテストにはローカルファイルパスを使用します
    /path/to/db
  • クラウドへのデプロイ: ホストされたLanceDBインスタンスに接続します
    db://host:port
  • S3ストレージ: 大容量のクラウドストレージとしてAmazon S3を使用します
    s3://bucket/db

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

LanceStorageは、テーブルを管理するための次のメソッドを提供します。

  • カスタムスキーマでテーブルを作成
  • テーブルを削除
  • テーブルをクリア(すべてのレコードを削除)
  • キーでレコードを読み込み
  • 単一または複数のレコードを挿入