はじめに
Difyではいくつかのアプリケーションタイプに基づいて、簡単にアプリケーションを作成することができます。
今日はその一つの「ワークフロー」を利用して、RAGの基本動作を実装してみます。
ワークフローでRAGを実装することで、この構成を応用し、より複雑なRAGベースのアプリケーションにも展開できます。
まずは基本を押さえるためにシンプルなワークフローを作ってみます。
Difyのアプリケーションタイプ
Difyでは、いくつかの型から選んでアプリケーションが作成できます。
主なアプリケーションタイプは次のとおりです。
種類 | 説明 |
---|---|
チャットボット | 簡単なセットアップの LLM ベースのチャットボット |
エージェント | 推論と自律的なツールの使用を備えたインテリジェントエージェント |
チャットフロー | メモリを使用した複雑なマルチターン対話のワークフロー |
ワークフロー | インテリジェントな自動化のためのエージェントフロー |
テキストジェネレーター | プロンプトに基づいて高品質のテキストを自動生成するワークフロー |
手順
0. 全体の流れ
以下のような4つのノードで構成された、シンプルなフローを作成します。
開始
↓
知識検索
↓
LLM
↓
終了
1. ナレッジベースに対象ドキュメントを登録
事前に参照するドキュメントをナレッジベースに登録しておきます。
2. ワークフローの作成
「最初から作成」をクリックして、その中から「ワークフロー」の形でアプリケーションを作成します。
3. ノードの追加
4. 開始
開始ノードを設定します。
「入力フィールド」セクションで➕をクリックし、以下の内容で入力フィールドを追加します。
5. 知識検索
ナレッジベースから必要な情報を検索する「知識検索」のノードを設定します。
ナレッジベースの➕を押します。
登録されている一覧が表示されるので、1. で登録したドキュメントを選択して追加をクリックします。
ここまで設定できたら、一度知識検索のノードだけでテストしてみます。
知識検索ノードで出力されたデータがどのような構造になっているか、設定画面の「出力変数」から確認することができます。
result Array[Object]
オブジェクトの配列として返されることが分かります。
この後のLLMで使っていきます。
6. LLM
知識検索ノードで得られた複数の検索結果をLLMに渡し、ユーザーの質問に対する適切な回答を生成します。
- AIモデル:任意(ここではOCI Generative AIのGrok-4を選択しました。)
- コンテキスト:
知識検索/result Array[Object]
※このコンテキストをユーザープロンプトに含めておきます - システムプロンプト:例)
あなたは人事部の担当者です。社内規定に基づき、従業員の質問に正確かつ丁寧に答えてください。必要に応じて箇条書きや簡潔な説明で補足してください。
- ユーザープロンプト:例)
#ユーザーからの質問
{{#開始.query#}}
#社内規定
{{#context#}}
7. 終了
最後のノードです!
LLMノードで出力された回答を出力変数に設定します。
8. 完成!
無事アプリが完成しました。
早速試してみます。
▶️実行からテストランしてみるか、もしくは公開するから「更新を公開」してアプリを実行から実際のアプリケーション画面で試してみます。
休暇の種類について尋ねたところ、いくつかある休暇制度を簡潔にまとめてくれました。
成功です!
おわりに
本記事で紹介した構成は、RAGの基本的な活用方法です。
次はさらに複雑なワークフローや他のノードを使ったアプリに挑戦していきます。