連載の現在地:Phase 4「品質」(1 / 3本目) — 「おもちゃ」から「業務で使える精度」へ育てる
1. 公開 → 2. 費用と安定 → 3. 安全 → 4. 品質 → 5. 自動化

こんな悩みの人へ

社内のマニュアルや規程について、同じ質問に何度も答えている。ChatGPTに資料を貼れば答えてくれるが、毎回貼るのは手間で、管理もできない。「RAG」という言葉は聞くけれど、何を用意すれば作れるのか分からない。そんな方に向けた記事です。

結論

小さく始めるなら、CloudflareのAI Searchがおすすめです。R2(ファイル置き場)などをデータソースとして接続し、索引・検索・回答生成を設定すると、文書の取り込みから質問への回答までをまとめて構成できます。ベクトルデータベースや、文書を細かく分ける処理を自分で作る必要はありません。

ただし、精度には文書の状態も大きく影響します。古い版と新しい版が混ざっている、表や画像に大事な情報がある、といった場合は、先に文書を整えます。

全体の流れは次のとおりです。自分で作るのは、両端の「文書を置く」と「画面から呼ぶ」部分だけです。

[準備]  文書をR2に置く --> AI Searchが自動で分割・索引づくり

[質問]  社員 --> [Access(ログイン)] --> [Workers] --> [AI Search]
                                                        1. 質問に関係する部分を検索
                                                        2. その部分をもとに回答を作成
                                                           |
        社員 <---------- 回答 + 参照した文書 --------------+

なぜ「AIに資料を読ませる」は難しいのか

AIに資料を読ませるのが難しいのは、まず、AIが一度に読める量に限りがあるからです。社内の文書をすべて、質問のたびに渡すことはできません。そこで、質問に関係する部分だけを探してから渡す仕組み(RAG)が必要になります。

ところが、この「探す仕組み」を作るのが大変です。文書を細かく分け、意味で検索できる形に変換してデータベースに入れ、更新があれば作り直す。この部分の作り込みに手間がかかります。

さらに、答えの質は元の文書で決まります。矛盾した文書があれば、AIも矛盾した答えを返します。

AI Searchは、このうち「探す仕組み」の部分を引き受けてくれるサービスです。

解決策の比較

方法

費用

手間

向いている状況

Cloudflare AI Search

全プランで利用可。月ごとの無料枠と従量課金

少ない

まず試したい。文書がPDFやテキスト中心

Vectorize + Workers AIで自作

無料枠あり

多い

分け方や検索方法を細かく調整したい

ChatGPT・Claudeのプロジェクト機能に文書を入れる

各サービスの料金

少ない

使う人が少なく、社内システムに組み込まない

既存のグループウェアの検索・AI機能

契約内容による

少ない

文書がすでにそのサービスにまとまっている

AI Searchは2026年11月1日から課金が始まりました。アカウントごとに毎月、取り込み500万トークン、ストレージ10GB月、意味検索1,000回、全文検索1,000回が含まれます。超過分は、取り込み100万トークンあたり0.75ドル、ストレージ1GB月あたり2ドル、意味・ベクトル・ハイブリッド検索1,000回あたり0.75ドル、全文検索1,000回あたり0.10ドルです。画像処理は追加料金、回答生成などのモデル利用料は別途かかります。料金と上限を参照してください。

どれを選ぶか

使うのが数人で、試しに使ってみたいだけなら、ChatGPTやClaudeのプロジェクト機能で十分なことが多いです。社内ツールや自社サービスに組み込みたいならAI Search、検索の精度を突き詰めたい場合や、独自の分け方が必要な場合は、Vectorizeで自作します。

作る前に決めること

仕組みより先に、次の3点を決めておきます。ここを飛ばすと、作ったあとで「答えが信用できない」ということになりがちです。

まず、答えさせる範囲です。たとえば「就業規則と経費精算のマニュアルだけ」のように、最初は狭く始めます。次に、正しい版の置き場所を決めます。古い版はフォルダから外し、ファイル名に版や日付を入れておきます。最後に、答えられないときの返し方です。「該当する記載が見つかりません。担当は総務の○○です」のように決めておきます。

手順

前提:Cloudflareのアカウント。

  1. ダッシュボードで「R2」を開き、バケット(例:company-docs)を作成して、文書をアップロードします。PDF、テキスト、Markdownなどが使えます。スキャンしたPDFや画像は、対応形式と上限を確認し、必要に応じてOCRを有効にします。OCRの画像処理には追加料金がかかります。
  2. ダッシュボードで「AI Search」を開き、「Create Instance」から新しいインスタンスを作成します。データソースに、1のバケットを選びます。Webサイトをデータソースにすることもできます。
  3. 索引づくりが終わるのを待ちます。文書の量によって時間がかかります。
  4. インスタンスの「Playground」タブで「Chat」または「Search」を選び、質問を入力して、答えと参照された文書を確認します。ここで10問ほど、答えが分かっている質問を試します。 間違った答えが出たら、文書の版・読み取り結果・検索結果・モデルの設定を順に確認します。文書だけが原因とは限りません。
  5. アプリに組み込みます。AI Searchは、Workersのバインディング、REST API、MCPサーバーのいずれかで呼び出せます。社内のチャットツールから使う、既存の社内ポータルに検索窓を置く、といった形にできます。Workersに組み込む例は、以下に示します。
  6. 社内向けに公開する場合は、Cloudflare Accessなどで、ログインした社員だけが使えるようにします。

Workersで呼ぶ場合は、既存の wrangler.jsonc に次のバインディングを追加します。instance_name は、デフォルトの名前空間に作成したインスタンスの名前です。例では company-docs としています。

{
  "ai_search": [
    { "binding": "COMPANY_DOCS", "instance_name": "company-docs", "remote": true }
  ]
}

Workerのリクエストハンドラー内では、次のように呼び出せます。npx wrangler types で型を生成します。

// 文書を検索して、AIによる回答文までまとめて作る場合
const answer = await env.COMPANY_DOCS.chatCompletions({
  messages: [{ role: "user", content: "経費精算の締め日はいつですか?" }],
});
return Response.json(answer);

// 回答文を作らず、関連する文書の一覧だけを取り出す場合は search() を使います
// const result = await env.COMPANY_DOCS.search({
//   messages: [{ role: "user", content: "経費精算の締め日はいつですか?" }],
// });

社内向けのQ&Aのように回答文まで返すなら chatCompletions()、検索結果を自分の画面に一覧表示したり、別のモデルに渡して加工したりするなら search() を使います。どちらも実際のインスタンスに接続するため、ローカル開発中の呼び出しも利用量に含まれます。Workersバインディングの仕様を参照してください。

更新日:2026-11-03

つまずきやすい点

表や図の中身は、拾われにくい傾向があります。大事な数値が表や画像の中にしかない場合は、本文にも文章で書き足すと精度が上がります。

文書を更新したのに、古い答えが返ってくることもあります。索引の更新が終わるまでは、古い内容で答えるためです。更新の頻度と、反映のタイミングを確認しておきましょう。

特に注意したいのが、見せてはいけない文書まで答えに出てしまうことです。人事評価や給与などの文書は、別のインスタンスに分けるか、認証した利用者の権限に基づくフィルターをサーバー側で強制します。検索画面をログイン必須にするだけでは、文書単位の閲覧権限は実現できません。公開エンドポイントやMCPの公開範囲も確認してください。

そもそもAIにどこまで渡してよいかも、先に決めておく必要があります。個人情報を含む文書の扱いは、社内のルールを決めてから進めてください(ルールの作り方は「次に出やすい悩み」で紹介します)。

この記事のまとめ:社内文書にAIで答えさせたい。悩み:資料が多く見つからない、AIの答えに根拠が欲しい、見せてはいけない資料。解決の流れ:社内文書を準備→関連する箇所を検索→根拠をもとに回答。進め方:文書を用意→AI Searchを作成→質問と出典を確認→アプリに組み込む。つまずきやすい点:表や図の情報を確認、更新には反映待ちがある、ログインだけでは不足この記事のまとめ:社内文書にAIで答えさせたい。悩み:資料が多く見つからない、AIの答えに根拠が欲しい、見せてはいけない資料。解決の流れ:社内文書を準備→関連する箇所を検索→根拠をもとに回答。進め方:文書を用意→AI Searchを作成→質問と出典を確認→アプリに組み込む。つまずきやすい点:表や図の情報を確認、更新には反映待ちがある、ログインだけでは不足

次に出やすい悩み

動く仕組みができたら、次は「答えが正しいか」を測り、会話として続けられるようにしていきます。Playgroundで試した10問を、継続的な品質チェックに育てたいなら「AIの回答が不安定で、品質をどう測ればいいか分からない」を、「さっきの続きで」と聞かれたときに前の質問を覚えさせたいなら「AIに会話の続きを覚えさせたい」を読んでみてください。個人情報を含む文書まで入れてよいか迷ったときは、Phase 3の「個人情報をどこまでAIに渡していいか分からない」で、ルールの作り方を整理しています。


「まず社内の規程集1つだけで試したい」「権限分けの設計だけ相談したい」といったスモールスタートも、AI・業務アプリ開発とCloudflareインフラ構築で支援しています。

よくある質問

Q. RAGは、社内文書でLLMを追加学習する仕組みですか?

RAGは、質問に関係する文書の箇所を検索し、その内容を根拠としてLLMへ渡す仕組みです。文書を置くだけで、正しい回答が保証されるわけではありません。検索と回答生成の関係はAI Searchの公式資料も参照できます。

Q. 検索画面をログイン必須にすれば、文書ごとの閲覧権限も守れますか?

ログインは入口の保護で、文書ごとの権限は別に制御します。人事や給与などを含む場合は、保存・検索の範囲を分けるか、認証した利用者の権限に基づくフィルターをサーバー側で強制します。公開エンドポイントやMCP経由でも同じ制約が守られるか確認してください。

Q. 文書を更新したのに、古い答えが返るのはなぜですか?

索引の更新が終わっていない可能性があります。元の文書の版、読み取り結果、索引や検索結果を順に確認します。検索結果が新しいのに答えがずれる場合は、LLMへ渡している内容やモデルの設定も調べます。文書だけが原因だと決めつけないようにします。

Q. 最初の動作確認では、何を見ればよいですか?

答えが分かる質問を使い、正しい文書の該当箇所を検索できるか、回答と出典が一致するかを確認します。文書に答えがない質問や、閲覧権限がない利用者の質問も含めます。確認したケースを残し、文書や設定を変えたあとにも同じ条件で比べられるようにします。

執筆者情報

パブロフ株式会社

IT顧問、AI・業務アプリ開発、SESを通じて、企業のIT活用を支援しています。代表の藤澤 昌隆は、2007年からシステム開発・運用に携わり、アクセンチュアでの業務ITコンサルティングを経て、2019年にパブロフ株式会社を設立しました。

AI活用の支援事例として、営業工程を支える7つの業務別AIアプリの構築を公開しています。アプリの開発に加え、入力・出力の形式、評価基準、テストケースの整備にも取り組んでいます。

記事の内容に関するご質問や誤りのご指摘は、お問い合わせ窓口へお寄せください。

参考資料