ストレージバックエンド
PRX-Memoryはメモリとそのベクトル埋め込みを永続化するために複数のストレージバックエンドをサポートします。prx-memory-storageクレートはすべてのバックエンドが実装する統一インターフェースを提供します。
利用可能なバックエンド
| バックエンド | 設定値 | ベクトルサポート | 永続化 | 最適用途 |
|---|---|---|---|---|
| JSON | json | エントリに埋め込み | ファイルベース | 開発、小規模データセット |
| SQLite | sqlite | 組み込みベクトル列 | ファイルベース | プロダクション、中規模データセット |
| LanceDB | lancedb | ネイティブベクトルインデックス | ディレクトリベース | 大規模データセット、高速ANN検索 |
デフォルトバックエンド
デフォルトバックエンドはJSON(PRX_MEMORY_BACKEND=json)で、追加のセットアップは不要です。プロダクションデプロイにはSQLiteを推奨します。
JSONバックエンド
最もシンプルなバックエンドで、すべてのメモリを単一のJSONファイルに保存します。開発、テスト、小規模メモリセット(10,000件未満)に最適です。
bash
PRX_MEMORY_BACKEND=json
PRX_MEMORY_DB=./data/memory-db.json利点:
- ゼロセットアップ -- ファイルパスを指定するだけ。
- 人間が読める -- テキストエディタで検査・編集可能。
- 移植性 -- ファイルをコピーするだけでメモリデータベース全体を移動できる。
制限:
- 起動時にファイル全体をメモリに読み込む。
- 書き込み操作がファイル全体を書き直す。
- インデックス付きベクトル検索なし -- 類似度のためにブルートフォーススキャン。
SQLiteバックエンド
SQLiteはACIDトランザクション、インデックス付きクエリ、効率的な類似度検索のための組み込みベクトル列サポートを提供します。
bash
PRX_MEMORY_BACKEND=sqlite
PRX_MEMORY_DB=./data/memory.db詳細な設定についてはSQLiteストレージを参照してください。
LanceDBバックエンド(オプション)
LanceDBはカラムナストレージを持つネイティブな近似最近傍(ANN)ベクトル検索を提供します。lancedb-backendフィーチャーフラグで有効にします:
bash
cargo build --release -p prx-memory-mcp --bin prx-memoryd --features lancedb-backendbash
PRX_MEMORY_BACKEND=lancedb
PRX_MEMORY_DB=./data/lancedbフィーチャーフラグが必要
LanceDBサポートはデフォルトビルドに含まれていません。コンパイル時にlancedb-backendフィーチャーフラグを有効にする必要があります。
バックエンドの選び方
| シナリオ | 推奨バックエンド |
|---|---|
| ローカル開発 | JSON |
| 100k件未満のプロダクション | SQLite |
| 100k件以上のプロダクション | LanceDB |
| 人間が読めるストレージが必要 | JSON |
| ACIDトランザクションが必要 | SQLite |
| 高速ANNベクトル検索が必要 | LanceDB |
ストレージ操作
PRX-Memoryはストレージメンテナンスのためのツールを提供します:
| ツール | 説明 |
|---|---|
memory_export | すべてのメモリを移植可能なフォーマットでエクスポート |
memory_import | エクスポートからメモリをインポート |
memory_migrate | ストレージバックエンド間を移行 |
memory_compact | ストレージを最適化してスペースを回収 |
memory_reembed | 新しいモデルですべてのメモリを再埋め込み |
次のステップ
- SQLiteストレージ -- SQLiteの設定とチューニング
- ベクトル検索 -- ベクトル類似度検索の動作方法
- 設定リファレンス -- すべての環境変数