💬
概念 #Dify #RAG #チャットボット #ナレッジベース #ユースケース #LLMOps 📚 Difyユースケース

RAGチャットボット構築(Dify実践)

社内文書・FAQ・マニュアルを知識源にした RAG チャットボットを Dify で構築する手順とポイント。

シナリオ概要

課題: 社内規定・製品マニュアル・FAQが PDF や社内 Wiki に散在しており、従業員や顧客が正確な情報にたどり着けない。

解決策: Dify で RAG チャットボットを構築。自然言語で質問すると、文書を検索して根拠のある回答を返す。

ユーザー「有給休暇の申請はいつまでにすればいい?」
  → ナレッジベース検索 → 就業規則PDF p.23 がヒット
  → LLM「就業規則第5条によると、有給休暇は取得希望日の3営業日前までに
          所定のフォームで申請する必要があります。(出典: 就業規則2024.pdf)」

使用する Dify 機能

機能役割
ナレッジベース・RAG文書のインデックス化・検索
モデルプロバイダーLLM 選択(GPT-4o / Claude 等)
概要・アプリ種別Chatflow を選択
変数システム会話変数で文脈を保持

ワークフロー設計

Chatflow 構成:

[Start]
  │ {{sys.query}}: ユーザーの質問

[Question Classifier]
  │ ← 質問を分類
  ├── 「文書に関する質問」→ RAG フロー
  └── 「雑談・無関係」  → 丁寧に断るフロー

[RAG フロー]


[Knowledge Retrieval]
  │ top_k=5 / ハイブリッド検索 / score_threshold=0.5
  │ {{retrieval.context}}: 検索結果チャンク

[LLM]
  │ system: "文書に基づいて正確に回答。根拠がなければ「わかりません」と答える"
  │ context: {{retrieval.context}}
  │ user: {{sys.query}}
  │ {{llm.text}}: 回答

[Answer](出典表示オン)
  出力: {{llm.text}} + 出典ファイル名・ページ

[雑談フロー]


[Answer]
  出力: "ご質問いただきありがとうございます。この bot は〇〇に関する質問にお答えします。"

ナレッジベースの設定

チャンキング設定

文書の種類に合わせて選択:

FAQ ドキュメント:
  → Q&A ペアチャンキング(質問に対して直接ヒットしやすい)

技術マニュアル・長い手順書:
  → 親子チャンキング
: 1000トークン(LLMへ渡す)
: 200トークン(検索に使う)

一般的な社内規定・メール:
  → 一般チャンキング(500〜800トークン推奨)

インデックスと検索設定

インデックスモード: 高品質(ベクトル埋め込み)
埋め込みモデル: text-embedding-3-small(コスト重視)
             または text-embedding-3-large(精度重視)

検索方法: ハイブリッド(ベクトル70% + 全文30%)
  → 固有名詞(商品名・人名)と意味検索の両方に対応

top_k: 5
score_threshold: 0.4(低すぎると無関係なチャンクが混入)

LLM プロンプト設計

System Prompt:
あなたは{会社名}の社内ボットです。
提供されたコンテキストに基づいて正確に回答してください。

ルール:
1. コンテキストに根拠がある場合のみ回答する
2. 根拠がない場合は「その情報は文書に見つかりませんでした」と回答する
3. 回答は簡潔に(200字以内)
4. 箇条書きで読みやすく構成する

コンテキスト:
{{retrieval.context}}

モデル選択の考え方

低コスト運用(社内ツール・頻繁なアクセス):
  → GPT-4o mini / Claude 3 Haiku
  → 精度は少し落ちるが1/10程度のコスト

高精度優先(顧客向け・正確性が重要):
  → GPT-4o / Claude 3.5 Sonnet
  → FAQチャットボットなら十分な精度

完全プライベート(社外秘文書):
  → Ollama + Llama 3.1(ローカル)
  → API に文書内容が送られないことを保証

実装のポイント

1. ハルシネーション対策

プロンプトに「根拠がない場合は答えない」制約を入れる。
出典表示を必須にして、ユーザーが検証できるようにする。
→ [Answer ノード] の「引用を表示」を ON

2. 会話文脈の利用

Chatflow の会話変数で直前の質問を保持:

Turn 1: 「有給の申請期限は?」→ 3営業日前
Turn 2: 「それを過ぎた場合は?」← この "それ" が何かを会話変数で保持

[Variable Assigner]: conversation.last_topic = {{sys.query}}

LLM プロンプトに追加:
「前の話題({{conversation.last_topic}})の文脈も考慮して回答してください」

3. 文書の鮮度管理

ナレッジベースの文書は定期的に更新が必要:
  - Notion 統合 → ページを更新すると自動再インデックス
  - APIでの文書更新 → CI/CDパイプラインで自動化可能
  - 手動更新 → リリース時にナレッジベースを更新するプロセスを定義

参考:他のユースケース

  1. 1. 💬RAGチャットボット構築(Dify実践)
  2. 2. 📄PDFドキュメント分析パイプライン(Dify実践)
  3. 3. 🎧カスタマーサポートボット(Dify実践)
  4. 4. コンテンツ一括生成(Dify実践)
  5. 5. 🔎コードレビュー自動化(Dify実践)
  6. 6. 🗂️構造化データ抽出ワークフロー(Dify実践)
  7. 7. 🕸️マルチエージェントオーケストレーション(Dify実践)
  8. 8. 📱SNSコンテンツ多チャンネル自動生成(Dify実践)
  9. 9. 🧾経費精算・領収書OCR処理(Dify実践)
  10. 10. 📝会議議事録・タスク自動抽出(Dify実践)
  11. 11. 👥HR採用・オンボーディング自動化(Dify実践)
  12. 12. 🏭製造業:作業マニュアルQAボット(Dify実践)
  13. 13. 🎓教育:クイズ・学習教材自動生成(Dify実践)
  14. 14. 🔬ディープリサーチワークフロー(Dify実践)
  15. 15. 💬Slack社内ナレッジボット(Dify実践)
  16. 16. 📡競合情報・ニュースモニタリング(Dify実践)
  17. 17. 📋営業提案書自動生成(Dify実践)
  18. 18. 🏥医療・ヘルスケア向けDify活用(患者FAQ・文書処理)
  19. 19. 🏦金融・保険向けDify活用(レポート分析・審査支援)
  20. 20. 🏠不動産向けDify活用(物件説明生成・顧客マッチング)
  21. 21. ⚖️法律・リーガルテック向けDify活用(契約書レビュー・法令検索)
  22. 22. 🍽️小売・飲食向けDify活用(メニュー生成・クレーム対応・在庫Q&A)
  23. 23. 🏛️行政・公共向けDify活用(市民FAQ・申請ガイド)

出典: Dify公式ドキュメント https://docs.dify.ai