Engineer Post||5 min

チャットボット 正答率の測定と改善設計|RAG精度とハーネス評価ループの実装ガイド

チャットボット 正答率の測定と改善設計|RAG精度とハーネス評価ループの実装ガイド

こんにちは!株式会社雲海設計の技術部です。

「社内チャットボットをリリースしたが、チャットボット 正答率を経営層に聞かれて答えられない」「PoCでは良かったのに本番投入後に苦情が増えた」「RAGを組んだが、検索が悪いのか生成が悪いのか切り分けられない」——2026年7月現在、チャットボット 正答率の測定と改善に関する相談が、技術部に月10件超のペースで寄せられています。本記事では、正答率の定義・測定・改善のループを、RAG精度指標とハーネス評価の実装目線で整理します。

  • TL;DR

  • チャットボット 正答率は単一の数字では語れない。「検索精度」「生成忠実度」「業務要件充足率」の3層で分解して測るのが2026年の実装定石

  • RAG構成ではRecall@k・MRR・Faithfulness・Answer Relevancyの4指標を最低限押さえる。特にFaithfulness(参照根拠との一致度)はハルシネーション検出の一次防衛線

  • 測定は評価データセット×自動採点×回帰テストの三点セットでハーネス化する。手動レビューだけの運用は50件超で破綻

  • 目標正答率は業務によって異なる。FAQ型で85%以上、専門判断支援型で70%以上が実務目安。100%を狙わず、不確実性の可視化で運用回避を組む

  • 改善はプロンプト調整の前にチャンク設計・埋め込みモデル・リランカーの順で当てる。生成側をいじるのは検索精度を確保した後

チャットボット精度を測定する三層評価スタック(検索精度・生成忠実性・ビジネス要件)とハーネス評価ループの関連図
チャットボット精度を測定する三層評価スタック(検索精度・生成忠実性・ビジネス要件)とハーネス評価ループの関連図

なぜ今、チャットボット 正答率の議論が再燃しているのか?

結論から言うと、2025年に業務投入されたRAGチャットボットが本番で精度崩壊するケースが顕在化し、経営側がKPIとしての正答率を求め始めたからです。2025年前半までは「LLMが賢いから何でも答えられる」という前提でPoCが走っていましたが、社内文書量の増加と質問の多様化で、Recall不足やハルシネーションが顕在化しました。

Gartnerの2026年AI導入調査でも、生成AI PoCの約6割が本番移行段階で精度指標の欠如を理由に停滞していると報告されています。裏を返せば、正答率の測定設計を持っているチームだけが本番運用に到達できているということです。

正答率を「1つの数字」で語れない理由

チャットボットの正答率を「85%」のように単一値で報告する運用は、以下の理由で崩壊します。

  • 質問タイプで難易度が違う: FAQ的な単純検索と、複数文書横断の判断支援では正答率の絶対水準が変わる

  • 正解の定義が揺れる: 「回答が事実として正しい」と「業務で使える回答である」は別物

  • 検索と生成のどちらが悪いか分からない: 単一値では改善レバーを打てない

そこで実装現場では、正答率を3層に分解して測定する方式が定着しつつあります。


チャットボット 正答率を分解する3層フレーム

結論として、チャットボット 正答率は「検索精度」「生成忠実度」「業務要件充足率」の3層で測るのが実装現場の定石です。それぞれ独立に測ることで、改善レバーが明確になります。

問い代表指標改善レバー
検索精度正しい根拠文書を引けたかRecall@k, MRR, nDCGチャンク設計・埋め込みモデル・リランカー
生成忠実度根拠に沿った回答かFaithfulness, Groundednessプロンプト設計・モデル選定・温度設定
業務要件充足率業務で使える回答かAnswer Relevancy, タスク成功率回答フォーマット・ガードレール・エスカレーション

検索精度層: Recall@kとMRRを最優先

RAGにおいて検索が失敗している状態でLLMをいくらチューニングしても正答率は上がりません。まず検索層の指標を固定します。

  • Recall@k: 上位k件に正解文書が含まれる割合。k=5, 10で最低80%を目安に

  • MRR (Mean Reciprocal Rank): 正解文書の逆順位平均。0.7以上が実務下限

  • nDCG@k: 順位付き関連度スコア。複数正解がある業務で重要

生成忠実度層: Faithfulnessは必須測定項目

Faithfulness(忠実度)は生成された回答が参照文書の情報のみに基づいているかを測る指標で、ハルシネーション検出の一次防衛線です。Ragasなどの評価フレームワークで実装可能で、LLM-as-a-Judgeで自動採点します。詳しくはRAGの仕組みとハルシネーション抑制記事で解説していますが、Faithfulness 0.85未満は業務投入危険水域と考えてください。

業務要件充足率層: タスク成功率で総合評価

最終的には「その回答で業務が回ったか」が判定基準です。Answer Relevancy(質問への的確性)と、業務シナリオベースのタスク成功率を測ります。単に事実として正しくても「稟議で使えない粒度」ならNGです。


評価ハーネスをどう組むか?実装3ステップ

結論として、正答率の継続測定は「評価データセット」「自動採点パイプライン」「回帰テストCI」の3層ハーネスで組むのが2026年の定石です。手動評価だけの運用は、50件を超えた時点で工数破綻します。

ステップ1: 評価データセットを業務仕様から作る

評価データセットは200〜500件を初期セットとし、以下の構造で用意します。

{
  "id": "q_001",
  "question": "新入社員の有給付与日数と付与タイミングは?",
  "expected_docs": ["就業規則_v3.pdf#p12", "人事FAQ.md#annual-leave"],
  "expected_answer_points": [
    "入社日から6ヶ月経過後に10日付与",
    "以降1年ごとに増加、最大20日"
  ],
  "category": "HR-FAQ",
  "difficulty": "easy"
}

ポイントはexpected_answer_pointsを完全一致ではなく「含めるべき論点」の箇条書きで持つことです。表現揺れをLLM-as-a-Judgeが吸収します。

ステップ2: 自動採点パイプラインを構築する

Ragas・DeepEval・promptfooなどのOSSを使うのが早道です。以下は簡略化した採点ループの例です。

from ragas import evaluate
from ragas.metrics import (
    context_recall,
    faithfulness,
    answer_relevancy,
)

result = evaluate(
    dataset=eval_dataset,
    metrics=[
        context_recall,      # 検索精度
        faithfulness,        # 生成忠実度
        answer_relevancy,    # 業務要件
    ],
    llm=judge_llm,  # GPT-4系やClaude Sonnet
)

print(result.to_pandas().describe())

採点用LLM(Judge)は本番用モデルとは別系統を使うのが鉄則です。同じモデルで採点すると自己肯定バイアスがかかります。ハーネス設計の詳細はClaudeハーネス設計の実務ガイドを参照してください。

ステップ3: CIに組み込み回帰テスト化する

プロンプト変更やモデル差し替えのたびに評価ハーネスをCIで自動実行します。各指標に閾値を設定し、下回ったらPRブロックです。

  • context_recall < 0.80 → 警告

  • faithfulness < 0.85 → ブロック

  • answer_relevancy < 0.75 → 警告

この仕組みはClaude CodeでのCI組込パターンで詳しく解説しています。


正答率を上げる改善レバーはどこから当てるか?

結論として、改善は「チャンク設計 → 埋め込みモデル → リランカー → プロンプト → モデル」の順で当てるのが投資対効果の高い順番です。多くのチームがいきなりプロンプト調整から入って迷走しますが、それは検索が壊れているのを生成で挽回しようとする逆張りです。

改善レバー優先順位マトリクス

優先度レバー効果実装コスト
1チャンク設計見直しRecall+10〜20pt
2埋め込みモデル変更Recall+5〜15pt
3リランカー追加MRR+0.1〜0.2
4プロンプト調整Faithfulness+5pt
5生成モデル差し替え各種+3〜10pt高(コスト増)

雲海設計の現場事例: 製造業FAQで70%→92%

某製造業のお客様で、社内規程FAQボットの正答率が70%で頭打ちになっていた案件がありました。原因分析の結果、PDFを固定長500文字でチャンクしていたため、規程の1条項が3〜4チャンクに分断されており、Recall@5が0.65しかありませんでした。

  1. 条項単位のセマンティックチャンキングに変更 → Recall@5が0.88に

  2. Cohere Rerank v3を追加 → MRRが0.72→0.84に

  3. Faithfulnessガードレールを追加(0.8未満なら「回答不能」を返す) → 誤答率が3%以下に

最終的に業務要件充足率(タスク成功率)は92%まで到達し、月間問い合わせを4割削減できました。

「精度を上げる」という抽象命題は、指標を3層に分解した瞬間に「どこを何ポイント上げるか」という具体的なタスクリストに変わる。——雲海設計 技術部内資料より


目標正答率はどこに置くべきか?

結論として、目標正答率は業務類型で異なり、100%を狙わない設計が現実解です。以下が実務目安です。

業務類型目標タスク成功率Faithfulness下限不確実時の設計
社内FAQ(HR・総務)85〜92%0.90「担当部門へ」誘導
技術ドキュメント検索80〜88%0.85参照リンク明示
専門判断支援(法務・与信)70〜80%0.90人間レビュー必須
顧客向けサポートbot75〜85%0.95有人エスカレーション

重要なのは「答えない選択肢」を実装することです。Faithfulnessが閾値を下回ったら「この質問には自信を持って回答できません」と返し、有人フローに逃がす。この設計を持たないボットは、正答率が高くても事故時のダメージが大きくなります。


よくある質問

Q. チャットボットの正答率はどう定義すればいいですか?

A. 単一指標ではなく、検索精度(Recall@k・MRR)・生成忠実度(Faithfulness)・業務要件充足率(タスク成功率)の3層で定義します。経営報告では業務要件充足率を代表指標として使い、技術改善には3層すべてを見ます。

Q. 評価データセットは何件くらい必要ですか?

A. 初期は200〜500件、本番運用では1000件以上を目安にしてください。カテゴリ・難易度で層化サンプリングすることが重要で、単に量を増やすだけでは代表性が担保できません。

Q. LLM-as-a-Judgeは信頼できますか?

A. 適切に設計すれば実用水準です。ポイントは(1)本番モデルと採点モデルを分ける、(2)採点基準を明示的にプロンプト化する、(3)人間評価と定期的にキャリブレーションする、の3点です。特に(3)を怠ると採点が徐々に緩くなります。

Q. 正答率が上がらないとき、まず何を疑えばいいですか?

A. 順番として、(1)Recall@kが低ければ検索問題、(2)Recallは高いがFaithfulnessが低ければ生成問題、(3)両方高いがタスク成功率が低ければ回答フォーマット・粒度問題です。この切り分けなしにプロンプト調整に走ると迷走します。

Q. 継続的な精度監視はどう組みますか?

A. 本番ログから週次でサンプリングし、評価ハーネスを回します。加えて、ユーザーの「役に立った/立たなかった」フィードバックを集めて評価データセットを継続的に拡張します。データセットは生き物と考え、四半期ごとに見直してください。


まとめ: 正答率は測定設計から始まる

チャットボットの正答率は、「何を測るか」を決めた瞬間に改善が始まる領域です。単一の数字で語らず、3層に分解し、評価ハーネスで自動化する。この設計を持っているチームだけが、PoCから本番運用に橋を渡せています。

雲海設計では、社内チャットボット・RAGシステムの精度改善支援を実装から評価ハーネス構築まで一気通貫で提供しています。「正答率が頭打ちで改善レバーが見えない」「評価ハーネスを内製化したいがノウハウがない」といった課題があれば、DXソリューションITコンサルティングのページ、あるいはお問い合わせからお気軽にご相談ください。

チャットボット 正答率の測定と改善|RAG評価ハーネス設計 | 株式会社 雲海設計