DifyはノーコードでAIアプリケーションを開発することができる便利なツールですが、Difyでの開発にRAGを使用したいなと感じたことはありませんか?
今回PROMPTYでは、DifyでRAGを使用する方法を設定項目から実際の作成手順まで徹底解説します。
ぜひ最後までご覧ください。
Difyとは
DifyはAIアプリケーションを作成することができるプラットフォームです。現在ではオープンソース版とクラウド版の2つの提供形態があります。
Difyの大きな特徴として、ノーコードでAIアプリケーションを作成することができます。これにより、プログラミングに触れたことのない方でも簡単にAIアプリケーションを作成することができます。
また、Difyは商用利用も原則可能であり、一部例外のケースを除き作成したAIアプリケーションを販売等することができます。
Difyの商用利用に関して詳しく知りたい方はこちらの記事もご覧ください。
Difyはノーコードで生成AIツールを作成することができる便利なOSS(オープンソースソフトウェア)ですが、商用利用が可能なのか気になりますよね。 今回PROMPTYでは、Difyの商用利用可否について、ケース別に解説します。 […]
RAGとは
RAGとは、Retrieval-Augmented Generationの略で、事前に用意した外部情報を検索し、大規模言語モデル(LLM)にそれを参考にして回答させる技術です。この技術を導入することで、生成AIが社内データといったクローズドな情報に関する質問に回答することができます。
日本語でRetrievalは検索、Augmentedは拡張、Generationは生成であることから、RAGは「検索拡張生成」とよばれることもあります。
ナレッジの作成
これから、RAGを使用したチャットボット・ワークフローを作成していきます。
まず最初に、LLMが参考にする情報として、登録したい資料をナレッジとしてDifyに残すという作業を行います。
①登録したい資料の用意
一番最初に、登録したい資料を用意しましょう。
今回は、内閣府統計局の出している『世界の統計』を用意しました。
この統計では、多くの国々の様々な統計を扱っています。
②資料のアップロード
資料の用意ができたら、画面上にある「ナレッジ」を選択します。
画面が遷移したら、画面左の「ナレッジを作成」をクリックしてください。

「ナレッジを作成」をクリックすると下記のような画面が表示されます。
赤枠の中の「ファイルをドラック&ドロップするか参照」という所に資料をアップロードし、「次へ」をクリックしてください。

③RAGの設定
「次へ」を選択したら下記のような画面になります。
この画面では、RAGに関する設定を行うことができます。
RAGの設定項目には「チャンク設定」「インデックス方法」「埋め込みモデル」「検索設定」があり、埋め込みモデルは、「インデックス方法」を”高品質”に設定することで表示されます。

これらの設定が完了すれば「保存して終了」をクリックしてください。これでナレッジを作成されました。
③-1 チャンク設定
チャンクとは、長い文章やドキュメントなどの情報を適切なサイズの短いブロックに分割したものをいいます。
チャンク識別子 | 各チャンクを個別に識別するためのID |
最大チャンク長 | 1チャンクあたりの最大トークン数を設定 |
チャンクのオーバーラップ | チャンク間で重複させるトークン数を設定(文脈の繋がり維持に必要) |
今回、ここは全て初期設定のまま進めます。
③-2 インデックス方法の選択
インデックス方法とはアップロードしたドキュメントやデータを検索しやすくするための処理方法のことです。
モード | 概要 | 精度 | 処理時間 |
高品質 | OpenAIなどの外部APIを用いてベクトル化を行う | 高精度 | 処理に時間がかかる |
経済的 | APIを使用せずにベクトル化を行う | 高品質と比べ、精度は低い | 処理に時間がかからない |
今回、ここは「高品質」を選択しました。経済的だと精度が低く、実用的な利用が難しいからです。
③-3 埋め込みモデルの選択
埋め込みモデルとはテキストを高次元の数値ベクトルに変換するAIモデルのことです。
今回、ここは「text-embedding-3-large」を選択しました。
③-4 検索設定の選択
検索設定は、RAG使用時、ユーザーに対して適切な情報を検索し、生成AIに提供するための設定項目です。
①ベクトル検索 | テキストデータなどを数値ベクトルとして表現し、類似度で情報を検索する方法 |
②全文検索 | ドキュメント内のすべての用語をインデックス化し、その用語に一致するチャンクを見つけ出す方法 |
③ハイブリッド検索 | ベクトル検索と全文検索をどちらも行う、上記2つの検索方法が組み合わさった方法 |
今回、ここは「ハイブリッド検索」を選択しました。
DifyでRAGを使用する方法【チャットボット編】
RAGを使用したチャットボットの作成手順を、実際の画面を交えて説明します。
①チャットボットを作成する
画面上にある「スタジオ」を選択し、表示された画面左の「最初から作成」をクリックしてください。

「最初から作成」をクリックすると下記のような画面が表示されます。
「アプリの種類を選択」でチャットボットを選択して、「アプリのアイコンと名前」で名前とアイコンを決めてください。必要であれば「説明」も記載してください。これらが終われば「作成する」をクリックしてください。

②コンテキストにナレッジを追加
「作成する」をクリックすれば下記のような画面になります。この画面で、先ほど作成したナレッジを参考にして回答を生成するチャットボットを作成できます。
まず、「コンテキスト」という項目の「追加」をクリックしてください。

「追加」をクリックすれば下記のように表示されるので、先ほど作成したナレッジをクリックして「追加」をクリックしてください。

「追加」をクリックすれば、RAGを使用したチャットボットの作成は完了です。
③実際に試してみる

作成したチャットボットを試してみました。今回は、1950年の世界人口を聞いてみました。
「世界の統計」では24億9900万人となっています。下記画像が実際に試してみた画像です。

「世界の統計」通りの回答をしていますね。また、引用もしてくれています。
作成したチャットボットが正しくRAGを使用していることが確認できました。
DifyでRAGを使用する方法【チャットフロー編】
次に、チャットフロー内でRAGを使用する方法を説明します。
チャットフローとは、一連の会話の流れのことを指します。似ている言葉に「ワークフロー」がありあますが、こちらは一連の仕事の流れを指す言葉となっています。
これが元々のこれらの言葉の意味ですが、Difyではこれらはアプリケーションの種類として登場します。Difyにおけるこれらの違いを表にまとめました。ぜひ参考にしてください。
チャットフロー | ワークフロー | |
目的 | 会話の流れを作る | 業務プロセスを自動化 |
入力の種類 | ユーザーのメッセージ | 外部イベントやシステムのデータ |
使用例 | FAQボット、接客AI | ECの注文処理、データ集計 |
①チャットフローを作成する
画面上にある「スタジオ」を選択し、画面左の「最初から作成」をクリックしてください。
こちらはチャットボットの作成手順と同様です。

「最初から作成」をクリックすると下記のような画面に遷移します。
「アプリの種類を選択」でチャットボットを選択して、「アプリのアイコンと名前」で名前とアイコンを決めてください。
必要であれば「説明」も記載し、これらが終われば「作成する」をクリックします。

② チャットフロー内に知識取得の項目を追加
「作成する」をクリックすれば下記のような画面になります。この画面がフローの編集画面となります。

開始ノードとLLMノードの間に「知識取得」の項目を作成します。
まず、「開始」と「LLM」を繋ぐ線にカーソルを合わせ、「+」をクリックしてください。
下記のような画面になると思いますので、「知識取得」をクリックしてください。

③「知識取得」内にナレッジを追加
「知識取得」が追加できれば下記のような画面になります。
「知識取得」内の「ナレッジ」の横にある「+」を押して先ほど作成したナレッジを追加してください。

これにて、チャットフロー内に作成したナレッジを追加することができました。
実際に「LLM」を設定することで「世界の統計」の内容を回答するチャットボットを作成してみます。
④実際に試してみる
まず、「LLM」をクリックしてください。
そして、「コンテキスト」の下にある「変数の設定」をクリックし、一番下の「result」をクリックしてください。

次に「LLM」の「SYSTEM」内にプロンプトを記入してください。今回は下記のように入力しました。
コンテキストの内容からユーザーの質問に回答してください
最後に、「SYSTEM」の横にある{x}をクリック→「コンテキスト」をクリックしてください。

これにて「LLM」の設定は終わりました。
画面右上の「プレビュー」から実際に試すことができます。

「世界の統計」を参照して回答していることが確認できます。
また、参照元文書を引用で示すため、複数文書を登録した際にも依拠した内容を簡単に確認できます。
これで、作成したワークフロー内でRAGを使用していることが確認できました。
最初はテンプレートのカスタムから始めるのがおすすめ
今回は簡単な部分にしか触れませんでしたが、最初からRAGの設定をして、ノードも一から構築してとなるとDifyを始めてすぐの方は難しく感じることがあるかもしれません。
Difyには、RAGを使えるテンプレートがあるため、一旦そのテンプレートを触ってみて感覚を掴んだり、自分の作りたいフローに似ているテンプレートをカスタムする形で使用することがおすすめです。
まとめ
今回PROMPTYでは、DifyでRAGを使用する方法についてを解説しましたが、いかがだったでしょうか。
以下がDifyでRAGを使用する方法に関するまとめです。
- DifyではRAGを使用することができる
- DifyでRAGを使用する方法は、以下の2つ
1:LLMが参考にする情報として、登録したい資料をナレッジとしてDifyに残す
2:残したナレッジを「チャットボット」や「チャットフロー」に組み込む - 最初はテンプレートのカスタムから始めるのがおすすめ
最後に、PROMPTYでは他の生成AI関連のサービスに関しての記事も多く取り扱っていますので、是非ご覧ください。