提供されるもの
- FTS5 全文インデックス(BM25 スコアリング)による キーワード検索。
- サポートされている任意のプロバイダーの埋め込みによる ベクトル検索。
- 最良の結果を得るために両方を組み合わせる ハイブリッド検索。
- 中国語、日本語、韓国語向けのトライグラムトークン化による CJK サポート。
- データベース内ベクトルクエリ向けの sqlite-vec 高速化(任意)。
はじめに
デフォルトでは、組み込みエンジンは OpenAI 埋め込みを使用します。OPENAI_API_KEY または
models.providers.openai.apiKey がすでに設定されている場合、追加のメモリ設定なしで
ベクトル検索が動作します。
プロバイダーを明示的に設定するには:
local.modelPath を GGUF ファイルに向けます。
サポートされている埋め込みプロバイダー
| プロバイダー | ID | 注記 |
|---|---|---|
| Bedrock | bedrock | AWS 認証情報チェーンを使用 |
| DeepInfra | deepinfra | デフォルト: BAAI/bge-m3 |
| Gemini | gemini | マルチモーダル(画像 + 音声)に対応 |
| GitHub Copilot | github-copilot | Copilot サブスクリプションを使用 |
| LM Studio | lmstudio | ローカル/セルフホスト |
| Local | local | @openclaw/llama-cpp-provider |
| Mistral | mistral | |
| Ollama | ollama | ローカル/セルフホスト |
| OpenAI | openai | デフォルト: text-embedding-3-small |
| OpenAI-compatible | openai-compatible | 汎用 /v1/embeddings エンドポイント |
| Voyage | voyage |
memorySearch.provider を設定します。
インデックス作成の仕組み
OpenClaw はMEMORY.md と memory/*.md をチャンク(デフォルトでは 400 トークン、
80 トークンの重複)にインデックス化し、エージェントごとの SQLite データベースに保存します。
- インデックスの場所: 所有するエージェントデータベース:
~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite - ストレージメンテナンス: SQLite WAL サイドカーは定期チェックポイントと シャットダウン時チェックポイントで範囲内に保たれます。
- ファイル監視: メモリファイルの変更により、デバウンスされた再インデックスが トリガーされます(デフォルト 1.5 秒)。
- 自動再インデックス: 埋め込みプロバイダー、モデル、チャンク化設定、設定済みソース、 またはスコープが変更されると、インデックスは自動的に再構築されます。
- オンデマンド再インデックス:
openclaw memory index --force
memorySearch.extraPaths を使って、ワークスペース外の Markdown ファイルも
インデックス化できます。
設定リファレンスを参照してください。使用する場面
組み込みエンジンはほとんどのユーザーに適した選択です。- 追加依存関係なしでそのまま動作します。
- キーワード検索とベクトル検索を適切に処理します。
- すべての埋め込みプロバイダーをサポートします。
- ハイブリッド検索は、両方の取得アプローチの最良部分を組み合わせます。
トラブルシューティング
メモリ検索が無効ですか?openclaw memory status を確認してください。プロバイダーが
検出されない場合は、明示的に設定するか API キーを追加してください。
ローカルプロバイダーが検出されませんか? ローカルパスが存在することを確認し、次を実行します。
local プロバイダー ID を使用します。
ローカル埋め込みを使用したい場合は、memorySearch.provider: "local" を設定してください。
古い結果ですか? 再構築するには openclaw memory index --force を実行してください。まれなエッジケースでは、
ウォッチャーが変更を見逃す場合があります。
sqlite-vec が読み込まれませんか? OpenClaw は自動的にプロセス内のコサイン類似度に
フォールバックします。openclaw memory status --deep はローカルのベクトルストアを
埋め込みプロバイダーとは別に報告するため、Vector store: unavailable は sqlite-vec の読み込みを指し、Embeddings: unavailable は
プロバイダー/認証またはモデル準備状況を指します。具体的な読み込みエラーはログを確認してください。