【Dify】Lesson5-1:RAGアプリ入門|社内FAQチャットボットを作ろう

社内のルール、手順書、福利厚生、申請フローなど、「会社の中にしかない情報」をチャットで答えられたら便利ですよね。
けれど、ChatGPTにそのまま質問しても、社内資料を読んでくれるわけではありません。
そこで登場するのが RAG です。
この記事では、Difyのナレッジ(データセット)を使って、社内資料を根拠に回答する「社内FAQチャットボット」を作ります。
最初にRAGまわりで頻出する用語を整理してから、実際のアプリ開発に入ります。
焦らず、まずは「RAGは何を解決する仕組みなのか」を押さえて進めていきましょう。
Lesson1:Dify入門|環境構築と最初の生成AIアプリ開発
Lesson2:まずは体験|基本的なアプリを作ろう
Lesson3:文章業務を自動化するアプリを開発しよう
Lesson4:ファイル処理で広がるDifyアプリ開発
Lesson5:RAG実践|ナレッジ検索アプリを作ろう
・Lesson5-1:RAGアプリ入門|社内FAQチャットボット ◁今回はここ
・Lesson5-2:ナレッジの詳細設定方法と考え方
・Lesson5-3:賢いRAGアプリを作ろう|クエリ変換とメモリ活用
Lesson6:機能拡張と外部システム連携|ツールを使いこなそう
Lesson7:総仕上げ|実践投入への準備
DifyのRAGとは:ナレッジ検索で根拠付き回答を作る仕組み
RAG(Retrieval Augmented Generation)は、質問に関連する情報をナレッジ(社内FAQや規程など)から検索し、その検索結果を “根拠テキスト” としてLLMに渡したうえで回答を生成する手法です。
つまり、LLMが記憶や推測だけで答えるのではなく、「検索で得た根拠に基づいて答える」状態を作れます。
RAGの基本フロー:検索(Retrieval)→生成(Generation)
RAGの動きはシンプルで、基本は次の3ステップです。
ポイントはLLMがいきなり答えを作るのではなく、先にナレッジ(社内FAQや規程など)から関連部分を取り出して、それを材料に答えることです。
- ユーザーの質問を受け取る
- ナレッジから関連する文章を検索する
- 検索結果(コンテキスト)を根拠にLLMが回答する
この「検索結果=コンテキスト」があることで、回答がふわっとしにくくなり、「それどこに書いてあるの?」に強いアプリになります。
検索結果(コンテキスト)をLLMプロンプトで参照する
DifyのRAGは、ナレッジ検索で見つかった文章が「コンテキスト」としてLLMに渡る仕組みになっています。
今回開発する社内FAQチャットボットも、ワークフローは次の流れです。
ユーザー入力 → 知識検索 → LLM → 回答
LLM側では、プロンプト内に「ナレッジ検索結果(コンテキスト)」を差し込む枠があり、そこに検索結果が入ります。
つまり、LLMは “検索で拾えた文章” を見ながら答えることになります。
実務向け設計:根拠がない場合は「不明」と返すルール
社内向けのFAQで怖いのは、知ったかぶりの回答です。
Difyではプロンプトでルールを明確にできるので、次のような実務向けの動きを作れます。
たとえば今回開発するアプリでは、以下のように設定します。
コンテキストに根拠がないことは推測で補わず、「ナレッジベース内に記載が見つかりません」と出力する
この1文が入るだけで、RAGアプリは一気に “使える道具” に寄ります。
正答率を上げるというより、誤答で信用を落とさない設計ができるのが大きいです。
精度が出ない原因:ナレッジ不足/検索ミス/要約ミス
RAGがうまくいかない原因は、だいたい次のどれかです。
- そもそもナレッジ側に答えが無い
- あるのに検索で拾えていない
- 拾っているのに、LLMがうまく要約できていない
今回は細かい設定の解説はせず、まず「動く社内FAQチャットボット」を完成させます。
そのうえで Lesson5-2、5-3 で、ナレッジの詳細設定やクエリ変換、メモリ活用などを使いながら、検索の当て方と回答の安定感を段階的に上げていきます。
ナレッジベース作成:資料アップロードと検索設定
架空の会社「株式会社でぃふぁい学習館」のナレッジベースを作成します。
専用の資料を3つ用意しましたので、↓↓からダウンロードして下さい。
このzipファイルを解凍すると、以下の3つのファイルが使用できます。
- 01_でぃふぁい学習館_会社ハンドブック.pdf
- 02_でぃふぁい学習館_製品サービス資料.docx
- 03_でぃふぁい学習館_社内規程・申請一覧.xlsx
Difyのトップ画面上部にある「ナレッジ」をクリックして下さい。
左側の「+ナレッジベースを作成」をクリックし、先ほどの3つの資料をドラッグ&ドロップしましょう。

次へを押すとナレッジベースの設定画面が開きます。
細かい設定のポイントは次の記事(Lesson5-2)で紹介しますので、今回は「検索設定」以外は全てデフォルトのままにしてください。
「検索設定」はハイブリッド検索を指定します。

この意味についても、詳細は次の記事で解説しますので、ここではこのまま保存してください。
実装手順:社内FAQチャットボットを作ろう
架空の会社「株式会社でぃふぁい学習館」の社内FAQチャットボットを開発していきます。
今回作成するアプリの全体構成は次の通りです。

全てのノードの配置
Difyの開発画面から「最初から作成」を選択。アプリタイプは「チャットフロー」、アプリ名は「社内FAQチャットボット」としましょう。

開始ノードは「ユーザー入力」を選択します。

開発画面が表示されたら、まずは全てのノードを先に配置してしまいましょう。
[ユーザー入力] → [知識検索] → [LLM] → [回答]

今回はユーザー入力ノードは何も設定せずそのまま使います。
知識検索ノード:クエリ変数と参照ナレッジの指定
知識検索(Knowledge Retrieval)ノードは、ナレッジベースから質問に関連する情報を検索して、下流のLLMノードへコンテキストとして渡すためのノードです。

- クエリテキスト:ユーザー入力のシステム変数query
- 「+」をクリックして3つの資料を選択
LLMノード設定:コンテキスト指定とプロンプト例
LLMノードは、知識検索ノードからコンテキストを受け取り、それをもとに考えるように設定します。

- コンテキスト:知識検索ノードの出力変数resultを選択
SYSTEM部には以下のプロンプトをコピペしてください。
- プロンプト
-
# 役割 あなたは「でぃふぁい学習館(架空の会社)」の社内アシスタントです。 この会話とナレッジベースの内容は学習用サンプルであり、実在の企業・制度とは無関係です。 # 重要ルール(必須) - これから与える【コンテキスト】に書かれている内容だけを根拠に回答してください。 - コンテキストに根拠がないことは推測で補わず、「ナレッジベース内に記載が見つかりません」と明確に言ってください。 - ユーザーが次に何を確認すれば解決するか(確認先の資料タイプやキーワード)を1〜3個提案してください。 - 文章は簡潔な日本語。箇条書きを優先。 - でぃふぁい学習館と関係のない質問には回答しないこと。 # コンテキスト(ナレッジ検索結果) ☆☆☆ コンテキスト ☆☆☆ # 質問 ☆☆☆ システム変数query ☆☆☆ # 出力形式 1) 結論(1〜2行) 2) 根拠(コンテキストから要点を箇条書き) 3) 次に確認すべきこと(不足時のみ、1〜3個)

プロンプト内の変数とコンテキストはコピペせず自分で指定してね。
コンテキストは変数と同じように「/」を押せば選択肢に出てくるよ。
回答ノード設定:LLM出力をそのまま返す
最後に、回答ノードを設定しましょう。

- 応答内容にLLMの出力変数textを指定
これで、ナレッジベースを活用した基本的なRAGアプリ「社内FAQチャットボット」は完成です。
実際にアプリを公開し、何か質問してみましょう。
まとめ:基本的なRAGアプリ完成
今回は社内FAQチャットボットを題材に、DifyでRAGアプリを作るときの基本の考え方を押さえました。
ポイントは「ナレッジ検索で取れた根拠テキストを前提に、LLMに回答させる」ことと、根拠が弱いときは無理に答えず、業務で使える振る舞いに寄せることでした。
ここまで完成していれば、あとは運用しながら精度を上げていく段階に入れます。
特にRAGは、モデルの賢さよりも「検索が当たるか」「当たった情報をどう渡すか」で体感品質が大きく変わります。
この後のLessonでは、今回作ったチャットボットを土台に、次のような改善を積み上げていきます。
- ナレッジ設定(分割、メタデータ、検索設定など)を整理して“探しやすい知識庫”にする
- クエリ変換やメモリ活用で、質問の揺れ・文脈のズレに強いRAGに育てる
まずは今回のアプリを実データで試し、想定外の質問や検索ミスがどこで起きるかを観察しておくと、次の改善が一気にやりやすくなります。
- 記事改善アンケート|ご意見をお聞かせください(1分で終わります)
-
本サイトでは、みなさまの学習をよりサポートできるサービスを目指しております。
そのため、みなさまの意見をアンケート形式でお伺いしています。1分だけ、ご協力いただけますと幸いです。
(※)APIキーや個人情報等は入力しないようお願いします。
【Dify】記事改善アンケート


