Skip to content
このページは AI の支援により作成・翻訳されました。誤りがあれば、改善にご協力ください。 GitHub で編集

SQLiteストレージ

SQLiteバックエンドはACIDトランザクション、インデックス付きクエリ、組み込みベクトル列サポートを持つ堅牢なファイルベースのストレージエンジンを提供します。最大100,000件のメモリを持つプロダクションデプロイに推奨されるバックエンドです。

設定

bash
PRX_MEMORY_BACKEND=sqlite
PRX_MEMORY_DB=./data/memory.db

データベースファイルは初回実行時に自動的に作成されます。すべてのテーブル、インデックス、ベクトル列はPRX-Memoryによって初期化されます。

スキーマ概要

SQLiteバックエンドは構造化スキーマにメモリを保存します:

カラムタイプ説明
idTEXT一意のメモリ識別子
textTEXTメモリコンテンツ
scopeTEXTメモリスコープ(global、projectなど)
tagsTEXTタグのJSON配列
importanceREAL重要度スコア(0.0〜1.0)
created_atTEXTISO 8601タイムスタンプ
updated_atTEXTISO 8601タイムスタンプ
embeddingBLOBベクトル埋め込み(有効な場合)
metadataTEXT追加のJSONメタデータ

ベクトルストレージ

埋め込みが有効な場合、ベクトルデータはメモリエントリと同じテーブルのBLOBカラムに保存されます。この共配置によりクエリが簡素化され、結合オーバーヘッドが回避されます。

ベクトル類似度検索は保存されたベクトル全体にわたるブルートフォースコサイン類似度計算を使用します。100,000件未満のデータセットでは、ベンチマークに基づいてサブ秒のクエリタイム(p95が123ms以内)を提供します。

メンテナンス

コンパクション

時間とともに、削除と更新により断片化したスペースが生じる可能性があります。memory_compactを使用してスペースを回収します:

json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "memory_compact",
    "arguments": {}
  }
}

バックアップ

SQLiteデータベースファイルは、サーバーを停止した状態でファイルをコピーするだけでバックアップできます:

bash
cp ./data/memory.db ./data/memory.db.backup

WARNING

サーバーが実行中の間はデータベースファイルをコピーしないでください。SQLiteは先行書き込みログ(WAL)を使用しており、書き込み中のファイルコピーでは破損したバックアップが作成される可能性があります。まずサーバーを停止するか、安全なエクスポートにはmemory_exportツールを使用してください。

JSONからの移行

JSONバックエンドからSQLiteに移行するには:

  1. memory_exportを使用してメモリをエクスポートします。
  2. バックエンド設定をSQLiteに変更します。
  3. memory_importを使用してエクスポートデータをインポートします。

またはmemory_migrateツールを使用して直接移行します。

次のステップ

Released under the Apache-2.0 License.