「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への並列調査結果をもとに作成しました。