SQLiteストレージ
SQLiteバックエンドはACIDトランザクション、インデックス付きクエリ、組み込みベクトル列サポートを持つ堅牢なファイルベースのストレージエンジンを提供します。最大100,000件のメモリを持つプロダクションデプロイに推奨されるバックエンドです。
設定
PRX_MEMORY_BACKEND=sqlite
PRX_MEMORY_DB=./data/memory.dbデータベースファイルは初回実行時に自動的に作成されます。すべてのテーブル、インデックス、ベクトル列はPRX-Memoryによって初期化されます。
スキーマ概要
SQLiteバックエンドは構造化スキーマにメモリを保存します:
| カラム | タイプ | 説明 |
|---|---|---|
id | TEXT | 一意のメモリ識別子 |
text | TEXT | メモリコンテンツ |
scope | TEXT | メモリスコープ(global、projectなど) |
tags | TEXT | タグのJSON配列 |
importance | REAL | 重要度スコア(0.0〜1.0) |
created_at | TEXT | ISO 8601タイムスタンプ |
updated_at | TEXT | ISO 8601タイムスタンプ |
embedding | BLOB | ベクトル埋め込み(有効な場合) |
metadata | TEXT | 追加のJSONメタデータ |
ベクトルストレージ
埋め込みが有効な場合、ベクトルデータはメモリエントリと同じテーブルのBLOBカラムに保存されます。この共配置によりクエリが簡素化され、結合オーバーヘッドが回避されます。
ベクトル類似度検索は保存されたベクトル全体にわたるブルートフォースコサイン類似度計算を使用します。100,000件未満のデータセットでは、ベンチマークに基づいてサブ秒のクエリタイム(p95が123ms以内)を提供します。
メンテナンス
コンパクション
時間とともに、削除と更新により断片化したスペースが生じる可能性があります。memory_compactを使用してスペースを回収します:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "memory_compact",
"arguments": {}
}
}バックアップ
SQLiteデータベースファイルは、サーバーを停止した状態でファイルをコピーするだけでバックアップできます:
cp ./data/memory.db ./data/memory.db.backupWARNING
サーバーが実行中の間はデータベースファイルをコピーしないでください。SQLiteは先行書き込みログ(WAL)を使用しており、書き込み中のファイルコピーでは破損したバックアップが作成される可能性があります。まずサーバーを停止するか、安全なエクスポートにはmemory_exportツールを使用してください。
JSONからの移行
JSONバックエンドからSQLiteに移行するには:
memory_exportを使用してメモリをエクスポートします。- バックエンド設定をSQLiteに変更します。
memory_importを使用してエクスポートデータをインポートします。
またはmemory_migrateツールを使用して直接移行します。