RAG評価 · 実務ガイド

DifyのFAQボットを数値で評価する — 精度測定と改善サイクルの実務ガイド

DifyでFAQボットを構築し、社内に展開した後で「なんとなく答えがズレることがある」「たまに見当違いな回答が返る」という声が上がることは多い。しかし「なんとなく」のままでは改善できない。どのパラメータを変えれば効果が出るのか、ドキュメントを追加すれば解消するのか、判断できないからだ。

本記事では、Difyを使った社内FAQボットの精度を数値で把握する方法と、測定結果をもとにした改善サイクルの回し方を解説する。専用の評価ツールは不要で、スプレッドシートとDifyの標準機能だけで実践できる。


なぜ定量評価が必要か

感覚的な評価だけで運用を続けると、次の3つの問題が積み重なる。

⚠️ チューニングの効果が確認できない
チャンクサイズやスコアしきい値を変更しても「良くなった気がする」止まりで、実際に改善しているか分からない。悪化しても気づけない。
⚠️ ドキュメントの陳腐化に気づけない
社内規程や手順書が改訂されても、FAQボットの回答精度が落ちていることを検知する仕組みがない。古い情報で回答され続ける。
⚠️ 経営・上位層への報告ができない
「使えてます」以上の根拠を示せないと、ツールへの投資継続の判断が難しくなる。数値があれば「Hit Rate 72% → 88%」と改善を報告できる。

🐝 IroHive メモ RAGシステムの評価は本来 RAGAS などの評価フレームワークを使うのが理想だが、情シス業務で毎月ライブラリを走らせるのは現実的でない。本記事ではツールなし・スプレッドシートのみで実践できる方法に絞る。


評価の3軸

RAGシステムの精度評価は「検索」と「生成」の2段階に分解して考えると整理しやすい。情シス視点ではここに「ユーザー体験」を加えた3軸で見るのが実用的だ。

🔍
① 検索精度(Retrieval)
質問に関係する正しいチャンクを取得できているか。
主な指標:Hit Rate
💬
② 回答品質(Generation)
取得したチャンクから正確な回答を生成できているか。
主な指標:回答一致率
👤
③ ユーザー体験
回答が実用的・簡潔で、ユーザーが「役に立った」と感じるか。
主な指標:拒否率・サムズアップ率

③は定性的になりがちだが、Difyの「いいね/よくない」ボタン(後述のアノテーション)や「分かりません」の回答率(拒否率)で定量化できる。


テスト質問セットの作り方

評価の土台となるのがゴールドセット(Gold Set)と呼ばれるテスト質問集だ。「正解が明確な質問と回答のペア」を20〜30問用意し、毎月同じセットで測定することで変化を追う。

質問の4タイプ

事実確認型
「有給休暇の付与日数は入社後何ヶ月から?」
明確な答えがドキュメントに存在する。もっとも多く用意する(全体の40%目安)
手順確認型
「経費精算の申請期限と提出先を教えて」
複数の情報を組み合わせて答える質問。チャンクをまたぐ検索の評価になる(30%目安)
あいまい型
「休みを取りたいときはどうすればいい?」
ユーザーが実際に打つような口語的な質問。ハイブリッド検索の効果を評価できる(20%目安)
NG型
「来月の株価はどうなりますか?」
ナレッジベースにない情報。正解は「分かりません」。拒否率の評価に使う(10%目安)
✅ ゴールドセット作成のコツ
  • 実際に社員から届いた問い合わせメールを参考にすると現実的な質問になる
  • 正解(期待する回答)は「〇〇文書 第3条に記載の通り、〜」と根拠も併記する
  • スプレッドシートで「質問 / 期待回答 / ソース文書 / Hit Rate / 回答判定」を管理する

サンプル質問セット(7問)

以下は就業規則・経費・テレワーク規程を想定したサンプルだ。自社の質問に置き換えて使ってほしい。

Noタイプ質問期待する回答(要点)ソース文書
1事実確認有給休暇は入社何ヶ月後から使えますか?入社6ヶ月後から付与(10日)就業規則 第○条
2事実確認育児休業の取得期間は最長何年ですか?子が2歳になるまで(最長2年)育児・介護休業規程 第○条
3手順確認経費精算はどのシステムで、申請期限はいつですか?○○システム・翌月5日まで経費精算マニュアル p.3
4手順確認テレワーク申請の手順を教えてください。上長承認→総務へメール→前日17時までテレワーク規程 第4条
5あいまい休みを取りたいときはどうすればいい?有給休暇申請フローへ誘導就業規則 第○条
6あいまいパソコンの調子が悪いんだけどITヘルプデスクへの問い合わせ方法を案内IT機器トラブル対応フロー
7NG型来月の株価はどうなりますか?「この情報はナレッジベースにありません」等の拒否(なし)
🐝 関連ツール

Dify ゴールドセット評価ツール

サンプル7問プリセット済み。ボタンをクリックするだけで Hit Rate・回答一致率・拒否率を自動計算。評価データはブラウザに自動保存、月切り替えで履歴管理、CSV出力も可能。

ブラウザで完結自動計算月次管理CSV出力

Difyのログ確認とアノテーション機能

Difyでは実運用の会話ログを確認し、回答に評価を付ける機能が備わっている。現行(v1.x)では ログ閲覧アノテーション返信 は別々の画面・機能として分かれている点に注意。

📌 UI構成メモ(v1.x 現行) 旧バージョンに存在した「ログ&アノテーション」という統合画面はなくなっており、現在は以下の2箇所に分離されています。

① ログの確認手順

  1. Dify 管理画面 → 対象アプリを選択
  2. 左サイドバーの 「ログ」 をクリック
  3. 会話ログの一覧が表示される。確認したい会話を開くと、各ターンの回答に 👍 / 👎 のフィードバックボタンが表示される

② アノテーション(注釈)の管理

ログで見つけた「正しい回答」を登録しておくと、同じ質問が来たとき RAG より優先して返答させる仕組みが アノテーション返信(注釈) だ。

  1. 対象アプリ → 左サイドバーの 「注釈」 をクリック
  2. 「注釈を追加」ボタンで正解の質問・回答ペアを登録できる
  3. 初回利用時は埋め込みモデルと類似度しきい値(Similarity Threshold)の設定が必要

📌 サイドバーの構成(日本語 UI) アプリの左サイドバーには「オーケストレート / API アクセス / ログ / 注釈 / 監視」が並んでいる。ログと注釈はどちらもサイドバーから1クリックで開ける。

🐝 IroHive メモ アノテーション返信は「ナレッジベースに情報がない質問」や「LLMが誤答しやすい質問」を個別に補強するのに有効。月次レビューで 👎 をつけた回答の正解を Annotations に登録していくと、徐々に精度が底上げされる。

評価に使うログの選び方

📋 優先してレビューすべきログ

ユーザーが追加で質問を重ねたターン(1回で解決しなかったサイン) / 「分かりません」で終わっているターン / 回答が異常に長いまたは短いターン

🔁 月次レビューの目安量

月間50会話以下: 全件レビュー / 51〜200会話: ランダム30件 + 👎ログ全件 / 200会話超: 👎ログ全件 + 週次サンプリング20件


3つの定量指標

ゴールドセットをDifyで実行し、結果をスプレッドシートに記録して以下の3指標を算出する。月1回の測定で十分だ。

① Hit Rate(チャンク取得率)

計算式

Hit Rate = 正しいチャンクが取得された質問数 ÷ 総質問数 × 100

確認方法:対象アプリのサイドバー →「オーケストレート」→ 右側のデバッグパネルで質問を送信する。回答の下に「引用と帰属(参照チャンク)」が表示されるので、期待するドキュメントのチャンクが含まれているかを目視で確認し、スプレッドシートに ○/× を記録する。

◎ 90%+
検索設定が適切。チューニング不要
○ 70〜90%
実用範囲内。チャンクサイズ・オーバーラップを微調整
△ 50〜70%
ドキュメント品質またはチャンク設定の見直しが必要
✕ 50%未満
インデックスモードの変更またはドキュメント再整理が必要

② 回答一致率

計算式

回答一致率 = 期待回答と一致した質問数 ÷ 総質問数 × 100

一致の判定基準(3段階):
◎ 完全一致 — 数値・固有名詞を含む内容がすべて合っている
○ 部分一致 — 概ね正しいが補足情報が欠けている
✕ 不一致 — 事実誤認または「分かりません」(期待回答が存在するのに)

✅ 一致率のスプレッドシート例 各行に「質問 / 期待回答 / 実際の回答 / 判定(◎/○/✕)」を記録し、◎=2点・○=1点・✕=0点 で合計点を満点(質問数×2)で割ると 0〜100% のスコアになる。毎月同じシートに列を追加していくだけで推移グラフが作れる。

③ 拒否率(「分かりません」率)

計算式

拒否率 = 「分かりません」と返した質問数 ÷ 総質問数 × 100

解釈のポイント:NG型質問での拒否は正常(正解)。事実確認型・手順確認型での拒否が高い場合は、スコアしきい値が高すぎるか、ドキュメントにその情報が含まれていない。

拒否率が高い → スコアしきい値を下げる
現象
正解があるのに「分かりません」が多い
対処
スコアしきい値を 0.5 → 0.35 程度に下げる
拒否率が低すぎる(5%未満)→ NG型を増やして検証
現象
何でも答えてしまう(ハルシネーションの疑い)
対処
システムプロンプトに「ナレッジに情報がない場合は正直に言う」を追記

改善サイクルの回し方

月1回の評価を定着させるには「やること」を最小限に絞ることが重要だ。以下のルーティンを基本として自社に合わせて調整してほしい。

月次評価ルーティン(所要時間:約60〜90分)

1
ゴールドセット実行(30分)
デバッグモードでテスト質問を順番に送信し、Hit Rate・回答判定をスプレッドシートに記録
2
ログレビュー・アノテーション登録(20分)
サイドバーの「ログ」で先月の👎ログと長いターンの会話を確認。改善済み回答は「注釈」に登録
3
指標確認・原因分析(10分)
先月比でHit Rate・回答一致率・拒否率が変化していれば原因を特定(ドキュメント更新/設定変更/新質問パターンのどれか)
4
改善アクション実施(〜30分)
下表の判断基準で1〜2アクションに絞って実施。全部やろうとしない

指標と改善アクションの対応表

指標の状態まず試すアクションそれでも改善しない場合
Hit Rate が低下したtop_k を 3(デフォルト)→ 6 に上げるチャンクサイズを 600→500 に縮小。それでも改善しなければドキュメントを見直し、情報が散在していれば統合する
回答一致率が低下したシステムプロンプトを見直し、回答形式を再指定LLMモデルを変更(GPT-4o-mini → GPT-4o 等)
拒否率が上がったスコアしきい値を 0.5 → 0.35 に下げる該当質問のドキュメントをナレッジベースに追加
拒否率が下がりすぎたシステムプロンプトに不確か情報の扱いを追記スコアしきい値を 0.5 → 0.6 に上げる
全指標が安定しているゴールドセットに新規質問を追加して鮮度維持ナレッジベースの再インデックス(ドキュメント更新確認)

🐝 IroHive メモ パラメータを複数同時に変えると何が効いたか分からなくなる。1回の改善サイクルで変更するのは1〜2項目までと決めておくこと。次回の測定で効果が出ていれば継続、出ていなければ元に戻して別の施策を試す。


まとめ

✅ 実践チェックリスト — 初日にやること
  • 上記CSVテンプレートをダウンロードし、自社の質問でNo.8以降を埋める(まず20問で十分)
  • 質問タイプの比率:事実確認40% / 手順30% / あいまい20% / NG型10%
毎月やること(所要60〜90分)
  • オーケストレート画面のデバッグパネルでゴールドセットを1問ずつ送信 → ○/× と ◎/○/✕ を記録
  • サイドバーの「ログ」で 👎 ログと長いターンの会話を月次レビュー → 改善済み回答を「注釈」に登録
  • 目標:Hit Rate 90%以上 / 回答一致率 80%以上
  • 1サイクルでパラメータ変更は1〜2項目まで(複数同時変更NG)
  • ゴールドセットに2〜3問追加して陳腐化を防ぐ

FAQボットは作って終わりではなく、定期的な計測と小さな改善の積み重ねで精度を維持・向上させるものだ。本記事の3指標とゴールドセットを運用の定番手順として組み込み、月1回60〜90分の評価ルーティンを習慣にしてほしい。


参考資料

📌 バージョン注記 本記事の手順・UI表記は Dify v1.x 系(2026年7月時点)をもとにしています。メニュー名・画面構成はバージョンによって変わる場合があります。公式ドキュメントと照合しながらご利用ください。