# 検索インフラはもう作らなくていい！Cloudflare AI Search が来たよ！

やっほー、しぃちゃんだよ！今日はエージェントを作ってる人がちょっとうれしくなるニュースを持ってきたよ。エージェントに「検索」をまるっと任せられる、新しい部品のお話なの！

## なにが発表されたの？

Cloudflare が [AI Search](https://developers.cloudflare.com/ai-search/) を発表したよ。これは前に [AutoRAG](https://blog.cloudflare.com/introducing-autorag-on-cloudflare/) って呼ばれてたサービスの新しい名前で、エージェントのための検索プリミティブ、つまり「検索の部品」なの。ソースは Cloudflare の Blog だよ。

## 今までどうだったの？

エージェントに社内ドキュメントとか過去のやり取りを検索させたいとき、今まではベクトルデータベースを用意して、ストレージを用意して、埋め込み(embeddings)を作る仕組みを組んで……と、検索インフラをぜんぶ自前で組み立てる必要があったの。しかもエージェントごと・お客さんごとに検索先を分けたいとなると、さらに大変だったんだよ。

## これで何が変わるの？

AI Search のインスタンスには、[R2](https://www.cloudflare.com/developer-platform/products/r2/) と [Vectorize](https://www.cloudflare.com/developer-platform/products/vectorize/) を土台にしたストレージとベクトルインデックスが最初から入ってるの。だからバケットを別に用意しなくても、API でファイルをアップロードしたらすぐにインデックスされるよ。

しかも `ai_search_namespaces` バインディングを使うと、実行中(ランタイム)にインスタンスを動的に作れるの。デプロイし直さなくても、エージェントごと・お客さんごと・テナントごとにインスタンスをポンポン増やせちゃう。複数のインスタンスをまたいで一度に検索して、ひとつのランク付き結果として受け取ることもできるよ。

だからマルチテナントな SaaS を作ってる人や、エージェントに検索させたい人には、インフラ構築の手間がごっそり消えるうれしさがあるの。

## 深く潜ってみよう

まず検索の仕組み。AI Search は意味で探す semantic(ベクトル)検索と、キーワードで探す BM25 検索を並列で走らせて、両方の結果を融合するハイブリッド検索なの。ベクトルだけだと専門用語を取りこぼしがちだし、キーワードだけだと意味を汲めない。その弱点をお互いに補い合う作戦だよ。

検索パイプラインはこんな段取り:

- トークナイズ:自然言語なら Porter stemmer、コードなら trigram を選べる
- キーワードマッチ:BM25 の候補選びを AND / OR モードで切り替え
- 融合:reciprocal rank fusion (RRF) か max fusion でベクトルとキーワードの結果をまとめる
- リランキング:お好みで cross-encoder のかけ直しができる(モデルは `@cf/baai/bge-reranker-base`)

データの取り込み元は R2 バケットと Web サイト。Web サイトは Browser Run で巡回(クロール)する仕組みが組み込みになってて、ベータの間クロールは無料だよ。

ドキュメントには [カスタムメタデータ](https://developers.cloudflare.com/ai-search/configuration/indexing/metadata/) を付けられて、フィールドでランキングをブーストできるの。たとえば timestamp でブーストすれば、新しい結果を上に出せるよ(timestamp は最初から全アイテムに入ってるの)。

使い始めはコマンド一発:

```bash
npx wrangler ai-search create my-search
```

コードからだと、こんな感じでインスタンスを作って検索できるよ:

```javascript
const instance = await env.AI_SEARCH.create({ id: "my-instance" });
const results = await instance.search({ query: "検索したい語" });
```

記事ではカスタマーサポートのエージェント例が紹介されてるよ。みんなが参照する共有の product-knowledge インスタンス(R2 のドキュメント)と、お客さんごとの解決履歴を貯めるインスタンスを分けて、search_knowledge_base(両方を検索)と save_resolution(要約をすぐインデックス)の 2 つのツールを持たせるの。いつ検索して・いつ保存するかは LLM が判断する形で、LLM には [Workers AI](https://www.cloudflare.com/developer-platform/products/workers-ai/) 経由の Kimi K2.5 を使ってるよ。

気になる料金は、いまはオープンベータで無料。制限はこんな感じだよ:

| 制限 | Workers 無料 | Workers 有料 |
| --- | --- | --- |
| アカウントあたりのインスタンス数 | 100 | 5,000 |
| インスタンスあたりのファイル数 | 100,000 | 100 万(ハイブリッドは 50 万) |
| 最大ファイルサイズ | 4 MB | 4 MB |
| 月あたりのクエリ数 | 20,000 | 無制限 |
| 1 日あたりのクロールページ数 | 500 | 無制限 |

課金が始まるときは 30 日前にお知らせがあって、いまあるインスタンスはそのまま使えるって書いてあるよ。

## まとめ

- AI Search は旧 AutoRAG、エージェントのための管理された検索プリミティブだよ
- R2 と Vectorize 内蔵で、検索インフラを自分で組まなくていいの
- semantic と BM25 のハイブリッド検索に、融合・リランキング・メタデータブーストまで乗ってる
- ランタイムでインスタンスを増やせて、複数インスタンスを横断検索できる
- いまはオープンベータで無料、`npx wrangler ai-search create` で始められる

エージェントに「調べる力」を持たせたい人、テナントごとに検索を分けたい SaaS 開発者にビシッと刺さる発表だよ！
