「OpenClawのmemory searchってEmbeddingとか自分で設定しないといけないの?それともファイル置いておけば勝手にインデックスしてくれるの?」
という疑問を、Claude・ChatGPT・Perplexityの3つに並列で投げて調べてみました。
結論:ファイルを置くだけでOK
3つのAI共通の答えは明快でした。 Embeddingは裏でやってくれる。自分で設定しなくても動く。 具体的には:memory/ディレクトリにMarkdownファイルを置くと自動で監視・インデックス化される- ファイルを変更してから1.5秒後に自動で再インデックスが走る
- Embeddingプロバイダーを指定しなくても、フォールバック順に自動選択してくれる
- インデックスは
~/.openclaw/memory/にSQLiteとして保存.sqlite
検索の仕組み:ハイブリッド方式
単純なベクトル検索ではなく、ベクトル検索(70%)+キーワード検索(BM25 30%)のハイブリッドになっています。 意味的に近いものはベクトルで拾い、キーワードが一致するものはBM25で補う構造です。10,000チャンク規模で100ms未満という数字も出ており、実用的な速度です。Embeddingプロバイダーのフォールバック順
何も設定しない場合、以下の順で自動選択されます:local → OpenAI → Gemini → Voyage → Mistral
APIキーを用意したくない場合は provider: "local" を指定してOllamaで動かすことも可能です。
実際に試す順序
Step 1:まずゼロコンフィグで試す
memory/ディレクトリにMarkdownを置くだけ
状態確認
memory status --deep
検索テスト
docker compose run --rm openclaw-cli memory search --query "テストクエリ"
Step 2:精度を上げたいなら明示的に設定
agents:
defaults:
memorySearch:
provider: "openai"
model: "text-embedding-3-small"
sync: { watch: true }
Step 3:APIキーを使いたくないならローカル
agents:
defaults:
memorySearch:
provider: "local"
local:
modelPath: "all-MiniLM-L6-v2"
Step 4:大量ファイル(1万以上)になったら
candidateMultiplier: 4 以上に設定するとパフォーマンスが改善します。
各AIの独自観点
3つのAIで微妙に違う観点が出てきたのも面白かったです。 Claudeは「ハイブリッド検索の比率が調整可能」という点に着目。ローカルEmbeddingでAPIキー不要運用できることも強調していました。 ChatGPTは「データ品質がクリティカル」という指摘が印象的でした。ゴミを入れたらゴミが出る、という当たり前だけど大事な話。組織導入時はデータクレンジング工程が必要とのこと。 Perplexityが一番実践的で、具体的なYAML設定やCLIコマンドをそのまま出してくれました。Embeddingキャッシュを50,000エントリ(約73MB)に設定する最適化情報なども。まとめ
OpenClawのmemory searchは「難しい設定なし、ファイルを置けば動く」が基本設計です。Embeddingの知識がなくても使い始められるのは敷居が低くていいですね。 精度にこだわりたくなったらprovider: "openai" を設定、APIキーを使いたくなければOllamaでローカル運用、という段階的な使い方ができます。
---
この記事はClaude・ChatGPT・Perplexityへの並列調査結果をもとに作成しました。
