Cloudflare AI Search で Mackerel ドキュメントを検索するチャットボットを作った

この記事は Mackerel Advent Calendar 2025 20日目の記事です。


最近は日々の生活を便利にするサイトやスクリプトを動かすために Cloudflare の Workers や Cron Triggers を使っている。CLI ツールである Wrangler を使うと気軽にデプロイやリソースの操作ができて便利だし、いい感じにエコシステムが整っていて KV(Key-Value ストア)、D1(SQL データベース)、R2(オブジェクトストレージ)あたりとの連携も簡単にできる。そんな Cloudflare を使い今回は Mackerel のドキュメントを検索できるチャットボットを作ってみた。

コードは以下のリポジトリにありますが、Cloudflare と Slack での Web コンソール上の設定も必要なため、そのまますぐに動作する状態にはなっていません。

github.com

仕組みを簡単に説明するとこんな感じ。

  • Mackerel のドキュメントを R2 に保存
    • 加工などはせず公開されている Markdown をそのまま同期。お試しということで定期実行の仕組みまでは作らず素朴に手元から同期している
  • AI Search のデータソースとして上記 R2 を指定
    • ベクトル化やインデックス作成は AI Search が自動的にやってくれる。こちらもお試しということでベクトル化や回答生成のモデルはデフォルトのものを使っている
  • Workers でエンドポイントを実装し Slack の slash command からのリクエストを受け、AI Search にクエリを投げて回答を生成

構成
構成

動作イメージはこんな感じ。

サバオ

モデル選定やシステムプロンプトの調整は行っていないため、回答品質の評価はまだできていない。一方で、未使用だった Cloudflare の機能を試す良い機会にはなった。ただし、ドキュメント検索と回答生成は AI Search に任せきりで、その部分は素振りになっていないので精度のチューニングをしつつ学んでいきたい。