第8章の最後は、第7章で学んだAIの知識を形にします。作るのは、自分が用意した資料にもとづいて答えるAIです。
一般的なチャットAIは、あなたの会社のマニュアルも、あなたが書いたメモも知りません。そこに自分の資料を渡し、その内容にもとづいて答えさせる仕組みがRAGでした。そしてAI Searchは、その面倒な部分をまるごと引き受けてくれるサービスです。
驚くべきことに、最初の動くものを作るのに、コードは1行も要りません。ファイルをアップロードして、質問するだけです。そこから先、自分のアプリに組み込む段階になって初めてコードが登場します。
このページで分かること
- AI Searchでインスタンスを作り、資料を読み込ませる手順
- コードを書かずに動作を確認する方法
- Workersから呼び出して、自分のアプリに組み込む方法
- 精度が出ないときに、どこを疑い、どう直すか
- 費用と、公開するときの注意点
何を作るのか
作るものの全体像を先に示します。

第7章のRAGとは?で説明したとおり、RAGには「準備」と「実行」の2段階がありました。
- 準備:資料を分割し、意味をベクトルに変換し、検索できる形で保存する
- 実行:質問をベクトルに変換し、近い断片を探し、それをAIに渡して答えさせる
このすべてをAI Searchが自動で行います。 自分でVectorizeにインデックスを作る必要も、分割の方法を考える必要も、埋め込みモデルを選ぶ必要もありません。
用途としては、次のようなものが考えられます。
- 社内マニュアルに答える問い合わせ窓口
- 製品ドキュメントの検索アシスタント
- 自分のブログ記事全体を対象にした検索
- 議事録や仕様書から必要な情報を引き出す道具
手順1:インスタンスを作る
Cloudflareのダッシュボードで AI Search を開き、Create Instance を選びます。
インスタンスに名前を付けます(my-docs など)。この名前は、あとでコードから呼び出すときに使うので、分かりやすいものにしてください。
データソースは3種類から選べます。
| データソース | 向いている用途 |
|---|---|
| 内蔵ストレージ | 手元のPDFやWord文書をアップロードする |
| Webサイト | 公開しているサイトをクロールして対象にする |
| R2バケット | 既にR2にファイルを置いている場合 |
最初は内蔵ストレージが最も簡単です。作成時に選ばなくても、あとから設定できます。
手順2:資料をアップロードする
インスタンスの Items タブを開き、ファイルをアップロードします。
アップロードすると、AI Searchが自動でインデックスを作ります。 ここが従来との最大の違いです。以前であれば、次の作業を自分で書く必要がありました。
- PDFからテキストを取り出す
- 適切な長さに分割する
- 分割した各断片を埋め込みモデルでベクトルに変換する
- ベクトルデータベースに保存する
- メタデータを付けて管理する
これがファイルを置くだけになります。
対応するファイル形式
PDF・Word・Excel・PowerPointなどのオフィス文書は、自動でMarkdownに変換されたうえで処理されます。テキストファイルやMarkdownはそのまま扱えます。
1ファイルあたり4MBまでです。大きなPDFは分割してからアップロードしてください。
インデックスができるまで待つ
アップロード直後は、まだ検索できません。処理が終わるまで、ファイル数に応じて数十秒から数分かかります。Items タブで状態を確認できます。
手順3:コードを書かずに試す
Playground タブを開きます。ここで、実際に質問できます。
モードが2つあります。
- Search:関連する断片を探して返す(検索結果に近い)
- Chat:見つけた断片をもとに、AIが文章で答える(RAGそのもの)
まず Chat で、資料に書かれている内容を質問してみてください。資料にもとづいた答えが返ってくれば、RAGが動いています。
ここが重要な確認ポイントです。この時点で、あなたは次のものを一切用意していません。
- サーバー
- ベクトルデータベース
- 埋め込みモデルの選定と呼び出しコード
- 分割処理のロジック
- 検索と生成をつなぐプログラム
第7章で学んだ仕組みが、設定だけで動いている状態です。
手順4:自分のアプリから呼び出す
Playgroundで満足のいく答えが返るようになったら、いよいよコードから使います。
前々ページの初めてのWorkers開発で作ったプロジェクトに、バインディングを足すだけです。
wrangler.jsonc に次を追加します。
{
"name": "my-rag-app",
"main": "src/index.js",
"compatibility_date": "2026-08-20",
"ai_search_namespaces": [
{
"binding": "AI_SEARCH",
"namespace": "my-namespace",
"remote": true
}
]
}
remote: true を付けているのは、AI Searchがローカルでは動かないためです。wrangler dev での開発中も、本番のインスタンスに問い合わせます。
コードはこう書きます。
export default {
async fetch(request, env) {
const url = new URL(request.url);
const question = url.searchParams.get("q");
if (!question) {
return new Response("?q=質問 を付けてください", {
headers: { "Content-Type": "text/plain; charset=utf-8" },
});
}
const instance = env.AI_SEARCH.get("my-docs");
const answer = await instance.chatCompletions({
messages: [
{ role: "system", content: "社内マニュアルにもとづいて、簡潔に答えてください。" },
{ role: "user", content: question },
],
});
return Response.json(answer);
},
};
chatCompletions を呼ぶと、検索と生成の両方が行われた結果が返ります。答えの文章と一緒に、根拠として使われた断片も返ってくるので、「どの資料のどこに書いてあったか」を画面に出せます。
答えの生成は不要で、関連する箇所だけ知りたい場合は search を使います。
const results = await instance.search({
messages: [{ role: "user", content: question }],
});
インスタンスを1つだけ使うなら、ai_search_namespaces の代わりに ai_search でインスタンス名を直接指定する書き方もあります。
画面を付ける
前のページで学んだ静的アセット機能と組み合わせれば、チャット画面付きのアプリが1つのプロジェクトで完結します。
"assets": {
"directory": "./public",
"binding": "ASSETS"
}
/api/ask へのアクセスだけAI Searchに渡し、それ以外はHTMLを返す――という構成です。書き方は静的サイトをCloudflareで公開するで扱ったとおりです。
精度が出ないときにどこを疑うか

RAGで期待した答えが返らないとき、原因は検索側か生成側のどちらかにあります。この切り分けが最も重要です。
まず Search モードで確認する
Playgroundの Search モードで同じ質問をしてください。
関連する断片が出てこない場合 → 検索の問題です。AIの責任ではありません。
- 資料に書かれていない:そもそも情報が無ければ答えられません。まずこれを疑ってください
- 言葉が違う:資料が「有給休暇」で、質問が「休みの取り方」だと、一致しにくくなります
- 表や画像の中にある:図の中の文字や、複雑な表のレイアウトは、うまく取り出せないことがあります
- 1ファイルが大きすぎる:関係のない内容が同じ断片に混ざり、検索の精度が落ちます
関連する断片は出ているのに、答えがおかしい場合 → 生成の問題です。
- システムプロンプトで指示を明確にする(「資料に書かれていないことは答えないでください」など)
- より大きなモデルを指定する
資料の作り方が結果を左右する
RAGの品質は、渡す資料の質でほぼ決まります。これは第7章でも触れた点ですが、実際に作ってみると痛感します。
- 見出しを付ける:どこに何が書いてあるかが構造として分かると、分割の精度が上がります
- 1ファイル1テーマにする:あらゆる内容が詰まった巨大なファイルは、検索を難しくします
- 略語を展開しておく:社内でしか通じない略語は、初出時に正式名称を併記します
- 古い資料を混ぜない:矛盾する情報があると、AIはどちらかを選んでしまいます。間違った資料を消すことが、最も効果の高い改善であることも多いです
費用について
2026年8月時点で、AI Search自体はオープンベータであり、無料で使えます。
ただし、内部で使われるWorkers AI(埋め込みと生成)とAI Gatewayの利用分は課金対象です。Workers AIには1日1万Neuronの無料枠があるので、個人の試用であればこの範囲に収まることが多いはずです。
主な上限は次のとおりです。
| 項目 | Free | Paid |
|---|---|---|
| インスタンス数 | 100 | 5,000 |
| ファイル数 | 10万 | 100万 |
| 月間クエリ数 | 2万 | 無制限 |
| Webサイトのクロール | 1日500ページ | ― |
ベータであることには注意が必要です。仕様が変わる可能性があります。実際、このサービスは2025年に AutoRAG という名前で始まり、その後 AI Search に改称され、2026年6月には内部構造が刷新されています。本番の業務に組み込む場合は、この前提を理解したうえで判断してください。
公開するときの注意
作ったものを外部に公開する場合、必ず考えるべきことが2つあります。
誰でも使える状態にしない
社内マニュアルに答えるAIを無防備に公開すると、社内文書の中身を誰でも引き出せることになります。「マニュアルの内容を全部教えて」と聞かれれば、AIは素直に答えます。
対策はCloudflare Accessを前に置くことです。3ページ前の手順がそのまま使えます。AI SearchはMCPサーバーとしても公開でき、その場合もAccessで保護できます。
費用の上限をかける
AIを呼ぶ機能を公開すると、悪意がなくても費用が膨らむことがあります。誰かがスクリプトで大量に質問すれば、その分だけ課金されます。
AI Gatewayでレート制限と支出上限を設定してください。あわせてRate Limitingでリクエスト数そのものを絞り、フォームにはTurnstileを入れておくと安心です。
初心者が注意するポイント
- まずPlaygroundで確認する:コードを書く前に、資料と質問の相性を確かめてください。ここで答えられないものは、コードを書いても答えられません
- 資料を更新したら再インデックスされるまで待つ:ファイルを差し替えても、即座に反映されるわけではありません
- 答えの根拠を必ず画面に出す:どの資料から答えたかを表示すると、利用者が正しさを判断できます。RAGを実用に使うなら必須です
- 「知らない」と答えさせる:システムプロンプトで「資料に無いことは答えない」と明示しないと、AIは推測で埋めようとします
- 機密文書を入れる前に権限を確認する:アップロードした資料は、そのAIを使える人全員が事実上参照できます
remote: trueを忘れない:ローカル開発で動かないときの典型的な原因です- ベータであることを前提に設計する:仕様変更に耐えられるよう、AI Searchを呼ぶ部分は自分のコードの中で1か所にまとめておくと、後々困りません
関連サービス
- AI Searchとは?:仕組みと制限の解説(このページの前提)
- RAGとは?:なぜこの構成で答えられるのか
- Vectorizeとは?:自分で組む場合の中核部品
- Workers AIとは?:埋め込みと生成を担当する
- AI Gatewayとは?:費用の上限と記録
- Cloudflare Accessとは?:公開時の保護
- Agentsとは?:この検索機能を道具としてAIに持たせる
まとめ
- AI Searchを使えば、RAGの準備工程(分割・ベクトル化・保存)をすべて任せられる
- 手順は「インスタンスを作る → ファイルをアップロードする → Playgroundで試す」の3段階。ここまでコードは不要
- 対応形式はPDF・オフィス文書など。1ファイル4MBまで。オフィス文書は自動でMarkdownに変換される
- アプリに組み込むときは
ai_search_namespacesのバインディングを足し、chatCompletionsかsearchを呼ぶ - ローカル開発では
remote: trueが必要 - 精度が出ないときは、まずSearchモードで検索側か生成側かを切り分ける
- RAGの品質は資料の質で決まる。見出しを付け、1ファイル1テーマにし、古い資料を消す
- ベータのため無料だが、Workers AIとAI Gatewayの利用分は課金される。仕様変更の可能性も前提にする
- 公開するならAccessで保護し、AI Gatewayで費用の上限をかける
これで第8章「実践」は完結です。WordPressの接続、NASの公開、認証の追加、Workersの開発、静的サイトの公開、独自ドメインのメール、そしてRAG――Cloudflareでできることの主要な形を、ひととおり自分の手で作れる状態になりました。
最後の第9章では、視点を運用に移します。無料プランで実際どこまでできるのか、他社サービスと比べてどうなのか、そして導入時につまずきやすい点とその対処を扱います。
次に読む
※本記事の情報は 2026年8月時点のものです。