RAG設計 · 実務ガイド

Difyで社内FAQを構築する — チャンク分割と検索精度の実務ガイド

社内ドキュメントが増えるにつれ、「どこに書いてあるか分からない」という問い合わせが情シスに集中する。ExcelやNotionで作ったFAQページは更新が滞り、キーワード検索では欲しい答えにたどり着けないケースも多い。

DifyはRAG(Retrieval-Augmented Generation)を使った問い合わせ対応ボットをローコードで構築できるプラットフォームだ。自社ドキュメントを読み込ませ、自然言語で質問するだけで関連する情報を引き出して回答を生成する。ワークフロー構築はGUIで完結するためプログラミング不要だが、チャンク分割の設定を誤ると的外れな回答ばかり返ってくるという落とし穴がある。

本記事では、Difyで社内FAQボットを構築するときの実務的な手順と、検索精度を上げるための設定を解説する。


なぜDifyが選ばれるのか

社内FAQボットを作る選択肢はいくつかある。Slack botを自作する、ChatGPT APIを直接叩く、既製品のチャットボットを導入するなど様々だ。その中でDifyが選ばれる理由は3つある。

  • ローコードで構築できる:GUIでRAGパイプラインを組めるためワークフロー構築はプログラミング不要。Dify Cloud を使えばインフラ管理も不要。
  • マルチLLM対応:OpenAI / Anthropic / Gemini など主要LLMを切り替えて使える
  • セルフホスト可能:社内機密ドキュメントを外部に出さずに運用できる

🐝 IroHive メモ Difyはオープンソース(Apache 2.0)なので、DockerでVPS上にセルフホストするか、Dify Cloudのマネージドサービスを使うかを選択できる。機密情報を扱う場合はセルフホスト一択。


RAGとチャンク分割の役割

RAGの仕組みを簡単に整理しておく。

  1. 社内ドキュメント(PDF・Word・Notionなど)をDifyに読み込む
  2. ドキュメントを「チャンク」と呼ぶ小さな塊に分割してベクトル化・保存
  3. ユーザーが質問すると、質問に近いチャンクを検索(Retrieve)
  4. 取得したチャンクをコンテキストとしてLLMに渡し、回答を生成(Generate)

このプロセスでボトルネックになりやすいのがステップ2のチャンク分割だ。チャンクが大きすぎると関係ない情報が混入し、小さすぎると文脈が失われる。

チャンクサイズの目安

チャンクサイズオーバーラップ向いているケース
200〜300トークン20〜30トークンQ&A形式・単純な事実の検索
500〜800トークン50〜100トークン社内マニュアル・手順書 ✅ 推奨
1000トークン以上100〜200トークン長文レポート・技術文書の要約

※ Dify の UI では「最大チャンク長」を文字数(characters)で入力します。日本語は概ね 1文字 ≈ 1〜2トークンのため、500〜800文字が上記推奨トークン数に相当。設定画面のラベルを必ずご確認ください。

✅ 推奨設定 社内FAQには500〜800文字・オーバーラップ50〜100文字が最もバランスが良い(トークン換算で約300〜600トークン相当)。オーバーラップを設けることで、チャンクの境界をまたぐ情報も取りこぼさない。


Difyでの設定手順

① ナレッジベースの作成

  1. Dify管理画面 → 「ナレッジ」→「ナレッジを作成」
  2. ドキュメントをアップロード(PDF・TXT・Markdown・Notionページ対応)
  3. チャンク設定:自動ではなくカスタムを選択
  4. チャンクサイズ:600 / オーバーラップ:75 を入力(単位は文字数。バージョンによって表記が異なる場合は設定画面のラベルを確認)
  5. インデックスモード:ハイブリッド検索(ベクトル + キーワード)を選択

② アプリケーションとの接続

  1. 「スタジオ」→ チャットボットアプリを作成(または既存アプリを選択)
  2. 「コンテキスト」セクションで上記ナレッジベースを追加
  3. 「Top K」を 3〜5、「スコアしきい値」を 0.5 に設定

精度を上げるTips

ハイブリッド検索を使う

Difyはベクトル検索(意味的類似性)とキーワード検索(BM25)を組み合わせたハイブリッド検索に対応している。どちらか一方より圧倒的に精度が上がるため、必ずハイブリッドモードを選ぶこと。

Temperatureを下げる

FAQボットは「正確な情報を返す」ことが目的なので、LLMの創造性は不要だ。

  • Temperature0.1〜0.3(低いほど保守的・正確)
  • Max Tokens500〜800(長すぎる回答は読まれない)

システムプロンプトでキャラクターを固定する

「ナレッジベースに情報がない場合は『分かりません』と答えてください」とシステムプロンプトに明記することで、LLMのハルシネーション(でたらめな回答)を抑制できる。


よくある失敗と対処法

症状原因対処法
質問と無関係な回答が返るチャンクサイズが大きすぎる500〜800文字程度に調整
「分かりません」ばかり返るスコアしきい値が高すぎる0.5 → 0.3〜0.4 に下げて再調整
回答の文章が途中で切れるMax Tokens が低すぎるMax Tokens を 800〜1200 に増やす
段落境界付近の情報が欠落するオーバーラップが少ないオーバーラップを 50〜100 に増やす
古い情報で回答されるドキュメントが更新されていない月次でナレッジベースを再インデックス

まとめ

✅ 実践チェックリスト
  • チャンクサイズ:500〜800トークン
  • オーバーラップ:50〜100トークン
  • インデックスモード:ハイブリッド検索
  • Top K:3〜5
  • スコアしきい値:0.5(「分からない」が多ければ 0.3〜0.4 に下げる)
  • Temperature:0.1〜0.3
  • システムプロンプトに「不明な場合は正直に答えよ」を明記

Difyのチャンク設定はデフォルトのままでは精度が出ないケースが多い。本記事の設定値を起点に、自社ドキュメントに合わせて調整してほしい。月次でドキュメントを更新しナレッジベースを再インデックスする運用フローを整えることで、長期的に精度を維持できる。


参考資料

📌 バージョン注記 本記事の手順・設定値は Dify v1.x 系(最新 v1.15.0・2026年7月時点)を参考にしています。Difyは月に複数回アップデートされるため、UIのラベルや設定項目が変わっている場合があります。公式ドキュメントと照合しながらご利用ください。