【Dify】Lesson1-4:RAG入門|ナレッジベースを作ろう

前回(Lesson1-3)では、Difyで初めてのチャットボットを作り、プロンプトや変数の使い方に触れました。
ただ、チャットボットを実務で使おうとすると「社内ルール」「自社商品の説明」「業務手順書」など、決まった情報を元に回答してほしい場面が多いですよね。
そこで登場するのが RAG(検索拡張生成)です。
RAGを使うと、あなたが用意した資料(CSVやPDFなど)を「ナレッジベース」として登録し、ユーザーの質問に合わせて必要な情報を探してから回答できるようになります。
この記事を読むことで、ただの雑談チャットではなく、「根拠のある回答ができる業務向けチャットボット」に一歩近づくことができます。
Lesson1:Dify入門|環境構築と最初の生成AIアプリ開発
・Lesson1-1:生成AIアプリ開発の入り口|Difyとは何かを知ろう
・Lesson1-2:Difyを使う準備|環境構築とセットアップ
・Lesson1-3:Difyの入り口|初めてのチャットボットを作ろう
・Lesson1-4:RAG入門|ナレッジベースを作ろう ◁今回はここ
・Lesson1-5:作ったアプリを公開しよう|方法と注意点まとめ
Lesson2:まずは体験|基本的なアプリを作ろう
Lesson3:テキスト処理を行いアプリ開発
Lesson4:ファイル処理を行いアプリ開発
Lesson5:RAGアプリの開発
Lesson6:機能拡張と外部連携
Lesson7:AIエージェントを活用したアプリ開発
Lesson8:実務投入への総仕上げ
チャットボットにナレッジベースを追加しよう
ここからは、前回作ったシンプルなチャットボットに「知識」を持たせていきます。
Difyでは、PDFやCSVなどの資料をナレッジとして登録し、質問に応じて必要な部分を探して回答に使えるようにできます。
学習用の資料を用意しましたので今回はそれを使ってください。
この仕組みを理解するうえで、まずは3つの言葉だけ押さえておきましょう。細かい理屈はあとでOKです。
ここでは「何となくイメージできる」ことを優先します。
用語説明|RAG、ナレッジベース、コンテキスト
これから出てくる用語は、次のように覚えると混乱しにくいです。
言葉の定義はざっくりで大丈夫です。
| 用語 | ひとことで言うと | イメージ |
|---|---|---|
| RAG | 資料を検索してから答える仕組み | 「探して→答える」 |
| ナレッジベース | 参照させたい資料置き場 | 「資料の本棚」 |
| コンテキスト | 今回の回答のために渡される情報 | 「今見ているページ」 |
RAGは、チャットボットが回答するときに「ナレッジベース(本棚)」から関係ありそうな情報を探して、見つけた内容(コンテキスト)を手元に置いた状態で答える、というシステムです。
つまり、ナレッジベースを追加すると、チャットボットは「自分の知識だけで頑張って答える」から、「資料を根拠にして答える」へ進化します。
ここが実務で使えるかどうかの大きな分かれ目です。
ナレッジベースの作成方法
それでは、ナレッジベースを作成しましょう。
前回制作した「Dify学習アシスタント」に「Dify関連単語とその意味」をまとめた資料を覚えさせ、それを根拠に回答してもらうように修正していきます。
実務では、ここで会社独自の規定資料などを使用することになりますね。
資料は↓↓からダウンロードして下さい。
Difyのトップ画面上部の「ナレッジ」から、左側の「+ナレッジベースを作成」をクリックしてください。

「テキストファイルからインポート」を選択し、資料をドラッグアンドドロップしましょう。

「次へ→」を押します。
チャンク設定は「汎用」、インデックス方法は「経済的」を選択しましょう。

これらの設定の細かい意味は、今後の学習で少しずつ理解していきますので、ここでは分からなくてもOKです。
これでナレッジベースが完成しました。

アプリからナレッジベースを参照しよう
「Dify学習アシスタント」アプリを修正していきましょう。
開発画面を開き、コンテキストの部分の「+追加」をクリックし、資料を追加してください。

それだけで、ナレッジベースを参照できるようになりました。
ただし、これではまだ「参照してくれるかどうか」が分からないので、その他の部分も修正していきます。
変数の修正
変数roleのオプションは、前回は「Dify」と「Python」に設定しましたが、これを「一般」と「辞書」に修正してください。

このあと、「辞書」が選ばれたときにナレッジベースを参照するように設定していきます。
プロンプトの修正
プロンプトを、以下のように修正してください。
# 役割 - あなたはDifyの専門家です。ユーザーの質問に対して、分かりやすく回答して下さい。 - ユーザーが明示的に別言語を指定しない限り、回答は日本語で行うこと。 # 命令 - Difyと無関係な質問には回答しないでください。 - 変数roleの値が「辞書」の場合は、必ずコンテキストに基づいて回答してください。 - 変数roleの値が「辞書」の場合は、冒頭でコンテキストの要点を1〜2文で提示し、その後「より詳しい解説が必要か」をユーザーに尋ねてください。
前回より少し細かくなりましたね。
このように「役割」と「命令」にわけて書く方法は基本ですので、是非覚えてください。

「#」や「-」を使う書き方も基本。
ネット上の技術資料はこの書き方がされたものが多いから、それを学習したLLMにも、この書き方が一番伝わりやすいよ。
オープナーの修正
変数を変えたので、このままだとオープナーの文言が意味不明になってしまいます。
以下のように修正しましょう。
Difyについてやさしく解説します!
また、これでナレッジベースを活用したアプリは完成です。
ぜひ実際に起動し、挙動を確認してみましょう。
まとめ
この記事では、チャットボットに「ナレッジベース」を追加し、RAGの仕組みで“資料を根拠に答える”アプリへ進化させる準備をしました。
ポイントは3つだけ押さえておけばOKです。
ナレッジベースは「参照させたい資料の置き場」、コンテキストは「今回の回答のために取り出された情報」、そしてRAGは「取り出してから答える流れ」でした。
ここまでできると、社内マニュアルやFAQ、業務手順書など、仕事で使えるデータをそのまま活かしたチャットボット作りに一気に近づきます。


