RAGを試すだけでも、ストレージ、文書分割、Embedding、ベクトルDB、検索API、生成モデル、ログを組み合わせる必要があります。Cloudflare AI Searchは、この検索基盤をマネージドにまとめて提供します。
この記事では、Built-in storageへ検証文書をアップロードし、Playgroundで確認した後、Cloudflare Workerから現行のAI Search bindingを使って検索・回答するところまでを作ります。
2026年8月18日時点でAI Searchはopen betaです。無料枠や課金条件は変更される可能性があります。公開前・導入前に公式のLimits & pricingを再確認してください。
今回、実際に確認したこと
Cloudflare DashboardでAI Search instanceを作り、Built-in storageへのファイル登録とPlaygroundのSearchまで実行しました。顧客データは使わず、架空の「サンプル株式会社」のMarkdown文書3件だけで検証しています。
| 項目 | 検証内容 |
|---|---|
| Instance | 検証用instance、Built-in storage |
| 文書 | 出張旅費規程、情報セキュリティ規程、入社初日ガイド |
| 質問 | 国内出張の宿泊費上限と精算期限 |
| 検索結果 | 01_出張旅費規程.md |
| スコア | 0.761 |
| 該当内容 | 1泊12,000円、帰着日の翌日から5営業日以内 |
完成構成
社内用途ではAI SearchのPublic Endpointをそのまま公開せず、Cloudflare Accessで認証したWorker経由に限定する構成を想定します。
1. AI Search instanceを作る
Cloudflare dashboardで次の順に進みます。
-
AI → AI Searchを開く -
Create Instanceを選ぶ - 例として
internal-docs-pocと命名する - データソースを選ぶ
- 設定内容を確認して作成する
データソースは主に次の3種類です。
| データソース | 使いどころ |
|---|---|
| Built-in storage | 少数ファイルをすぐ試す |
| R2 bucket | 既存のR2文書を継続同期する |
| Website | 自社サイトやドキュメントをクロールする |
今回はBuilt-in storageを使います。
2. 架空の社内文書をアップロードする
作成したinstanceのItemsタブから、架空企業の規程・手順書をアップロードします。アップロード後は自動でインデックスされます。
travel-policy.md
security-policy.md
onboarding-guide.md
completedになる前に質問すると結果が安定しないため、ItemsまたはStatsで処理状況を確認します。
今回は3件すべてのアップロード成功を確認してから、同期とインデックス作成を開始しました。
現行のWorkers Freeでは、AI Searchのファイルサイズ上限は1ファイル4MB、月間クエリは20,000件などの制限があります。大きなPDFは章単位に分ける、画像中心のPDFは事前にOCRする、といった前処理が必要です。
3. Playgroundで検索と回答を分けて試す
PlaygroundにはSearchとChatがあります。
- Search: 関連チャンクとスコアを確認する
- Chat: 検索結果を使った生成回答を確認する
最初はSearchで次を確認します。
国内出張の宿泊費上限はいくらですか?
正しい文書が返らない状態でChatのプロンプトを調整しても改善しません。まず検索、次に生成の順で原因を分けます。
実際のSearchでは、国内出張の宿泊費上限と精算期限に対して01_出張旅費規程.mdがスコア0.761で返りました。表示されたチャンクに、宿泊費上限と精算期限の両方が含まれることも確認しています。
なお、インデックス作成直後にChatを試したときは該当文書なしになりました。同期中の結果をそのまま評価せず、Itemsの処理完了後に同じ質問を再実行するのが安全です。
4. Workerプロジェクトを作る
npm create cloudflare@latest -- internal-docs-rag
cd internal-docs-rag
wrangler.jsoncにinstance bindingを追加します。
{
"$schema": "./node_modules/wrangler/config-schema.json",
"name": "internal-docs-rag",
"main": "src/index.ts",
"compatibility_date": "2026-08-17",
"ai_search": [
{
"binding": "INTERNAL_DOCS",
"instance_name": "internal-docs-poc",
"remote": true
}
]
}
remote: trueを指定すると、ローカル開発中もデプロイ済みのAI Search instanceへ接続できます。
旧AutoRAGの
env.AI.autorag()はlegacyです。新規実装ではai_searchまたはai_search_namespacesbindingを使います。
5. 検索APIを実装する
まずは生成を行わず、検索チャンクだけを返します。
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const url = new URL(request.url);
const query = url.searchParams.get("q")?.trim();
if (!query || query.length > 500) {
return Response.json({ error: "invalid query" }, { status: 400 });
}
const result = await env.INTERNAL_DOCS.search({
messages: [{ role: "user", content: query }],
ai_search_options: {
retrieval: {
retrieval_type: "hybrid",
max_num_results: 5,
match_threshold: 0.4
}
}
});
return Response.json({
query: result.search_query,
sources: result.chunks.map((chunk) => ({
file: chunk.item.key,
score: chunk.score,
text: chunk.text
}))
});
}
};
先にwrangler typesを実行し、bindingを含むEnv型を生成してください。
6. RAG回答と引用元を返す
次にchatCompletions()で回答を生成します。レスポンスのchunksを捨てず、回答と一緒にクライアントへ返すのがポイントです。
const result = await env.INTERNAL_DOCS.chatCompletions({
messages: [
{
role: "system",
content: "登録文書だけを根拠に回答し、根拠がなければ不明と答えてください。"
},
{ role: "user", content: query }
],
ai_search_options: {
retrieval: { max_num_results: 5 },
query_rewrite: { enabled: true }
}
});
return Response.json({
answer: result.choices[0]?.message.content ?? "",
citations: result.chunks.map((chunk) => ({
source: chunk.item.key,
score: chunk.score
})),
usage: result.usage
});
画面側では、回答本文の下にファイル名を表示し、利用者が根拠を確認できるようにします。
7. 社内向けに閉じる
Public Endpointは認証なしで使えるため、社内文書用では無効のままにします。Workerの前にCloudflare Accessを置き、会社のIdPまたは許可したメールドメインで認証します。
さらに次を実施します。
- CORSを自社フロントエンドに限定する
- Workerで入力長、HTTP method、Content-Typeを検証する
- ユーザーまたは部署を監査ログへ残す
- AI Gatewayでモデル利用量、コスト、エラーを監視する
- DLP・Guardrailsの適用可否を検討する
- 機密度ごとにinstanceまたはnamespaceを分離する
AI Searchに接続したAI Gatewayでは、埋め込み呼び出しまで通るため、Gateway側の一般的なキャッシュや厳しいレート制限がインデックス処理を妨げる場合があります。検索結果のキャッシュにはAI Search側のSimilarity cacheを使い、Gateway設定は公式の注意事項に従います。
8. コストを見るときの注意
2026年8月18日時点では、AI Searchはopen betaの範囲内で無料ですが、Workers AIとAI Gateway経由のモデル推論などは別計算です。「RAG全体が無料」という意味ではありません。
PoCでは次を分けて記録します。
- 初回・更新時のEmbedding
- 1質問あたりの検索
- Query rewritingとReranking
- 回答生成モデルの入力・出力トークン
- Workerリクエスト
- ログ保持や外部モデルの費用
まとめ
Cloudflare AI Searchは、R2、Vectorize、文書分割、検索APIを個別に組み合わせる手間を減らし、小さなRAGを早く試すのに向いています。検索結果のchunksに引用元とスコアが含まれるため、根拠表示も実装しやすい構成です。
一方、open betaの仕様・料金変更、ファイルサイズ制限、文書ごとの権限制御は事前に確認が必要です。まずは公開情報または低機密の文書でPoCし、Access、Worker、監査ログまで含めて評価すると安全です。
導入判断・費用・制限を比較したい方へ
低コスト化できる範囲、open betaの注意点、認証、文書ACL、PoCの概算はRoot on公式ブログの「低コストで社内文書RAGを作る」 に整理しています。



