SmartHR Tech Blog

SmartHR 開発者ブログ

LLMの精度ってどう測るの?評価指標を調べてみた

こんにちは。AIアシスタントチームでプロダクトエンジニアをしているmizunaoです。
SmartHRでは先日、人事・労務に関する問い合わせにAIが回答するAIアシスタント機能をリリースしました。 この機能では裏側でLLM(大規模言語モデル)を利用していますが、開発にあたって「LLMの精度をどう評価するか?」という課題に直面しました。
実は私たちAIアシスタントチームでも、まだLLMの評価指標を体系的に活用できていない状況で、これから本格的に取り組んでいく必要があります。そこで今回、LLMの評価指標について調査・整理したので紹介します。

LLM評価指標とは?

LLMの出力を評価するには、人の目だけでは限界があります。そこで登場するのがLLM評価指標です。これは入力・出力・コンテキストといった情報をもとに評価器(Scorer)がスコアを算出し、そのスコアが一定の基準(閾値)を満たしているかどうかで出力の妥当性を判断する仕組みです。 以下の図は、LLM評価の一連の流れを簡単に表したものです。 LLM評価の一般的なフロー

図:LLM評価の一般的なフロー(出典: LLM Evaluation Metrics: The Ultimate LLM Evaluation Guide - Confident AI

そもそもLLMの評価ってなんで必要なの?

LLMの回答には、二値分類タスク(例:Yes/Noで答える質問)やOCR(光学文字認識)などを除いて、決まった正解が無い場合が多いです。その際、定性的に人の目で良し悪しを判断することも重要ですが、定量的に精度を測定することも重要です。特にLLMの精度は、入力値やベクトル検索等で取得したコンテキストによって日々変化していきます。リリース時の精度は良かったとしても、時間が経つにつれて精度が悪くなることもあります。そのため、定量的に評価するシステムの構築に加えて、どの評価指標を使うのかを選択することが非常に重要になってきます。

Model‑Based Scores(モデルベース指標)のスコアを基本的には重視するべき

LLM(大規模言語モデル)の精度評価において、文脈性や人間の感覚、好みも含めて評価する場合、Statistical‑Scores(従来型の統計的指標)よりも Model‑Based Scores(モデルベース指標)のスコアを重視したほうが良い結果につながることが多いです。

指標図

出典: LLM Evaluation Metrics: The Ultimate LLM Evaluation Guide - Confident AI

Statistical‑Scores(従来型の統計的指標)

  • BLEU・ROUGE・F1-Scoreなど、参照文と生成文の単語やフレーズの一致率(n-gramベース)をもとにスコアを算出する指標。
  • BERTScore・MoverScoreなど、事前学習済みモデルを使って文をベクトル化し、コサイン類似度や距離指標で意味的な近さを測定する指標も含まれる。
  • 実装がシンプルで再現性が高い一方で、単語の重複や意味の類似性など、表面的な特徴に焦点を当てられており、文脈や意味のニュアンスを十分に捉えられないことがある。

Model‑Based Scores(モデルベース指標)

  • GPT‑4などの強力なLLMを介して、回答の一貫性・根拠性などを多面的にスコアリングする指標。
  • LLM自身が人間の持つ知識と文脈を理解した上で採点するため、人間による評価と非常に近い評価を下すことができるとされている。

評価ライブラリ一覧

Model‑Based Scores(モデルベース指標)で評価を行う場合、自作プロンプトを作成して評価を行うことも可能です。ただ、毎回プロンプトを考えるのは大変で、良し悪しを判断するのも難しいです。そのため最近では、LLMの出力を自動でスコアリングしてくれるライブラリがいくつか公開されており、それらを使うのが簡単でおすすめです。

DeepEval

LLM評価に関するメトリクスが充実していて、ドキュメントもまとまっていて使いやすいです。後ほど紹介するガードレールのチェック指標も充実しています。 (メトリクス一覧

DeepEvalの評価指標一覧

指標 何を評価できるのか 入力
G-Eval G-Eval はCoT (Chain-of-Thoughts) を備えた LLM を使用して、任意のカスタム基準に基づいて LLM 出力を評価するフレームワーク。G-Eval メトリックは、最も汎用性の高いタイプのメトリックで、ほぼすべてのユースケースを人間のような精度で評価できる input, actual_output
DAG(Deep Acyclic Graph) LLM-as-a-judgeを使い、評価用の決定木を簡単に構築するための現在最も汎用性の高いカスタムメトリックです input, actual_output
Answer Relevancy(回答の関連性) 質問に対する回答の関連性を評価する指標 input, actual_output
Faithfulness(忠実性) 回答が提供されたコンテキストにどれだけ忠実であるかを評価する指標 input, actual_output, retrieval_context
Contextual Relevancy(コンテキストの関連性) 提供されたコンテキストが質問にどれだけ関連しているかを評価する指標 input, actual_output, retrieval_context
Contextual Precision(コンテキストの精度) コンテキスト内の情報が質問に対してどれだけ正確であるかを評価する指標 input, actual_output, expected_output, retrieval_context
Contextual Recall(コンテキストの再現率) 質問に関連する情報がコンテキスト内にどれだけ含まれているか(どの程度一致するか)を評価する指標 input, actual_output, expected_output, retrieval_context
Task Completion(タスク完了度) エージェントが指定されたタスクをどれだけ効率的に達成したかを評価する指標 input, actual_output, tools_called
Tool Correctness(ツールの正確性) エージェントが使用するツールの選択と使用方法の正確性を評価する指標 input, actual_output, tools_called, expected_tools
Bias(バイアス) LLMの出力に偏見や差別的な内容が含まれていないかを評価する指標 input, actual_output
Toxicity(有害性) LLMの出力が有害、攻撃的、または不適切でないかを評価する指標 input, actual_output
Summarization(要約) 元のテキストから生成された要約の質を評価する指標 input, actual_output,
Prompt Alignment(プロンプトの整合性) 与えられたプロンプトや指示に、LLMの出力がどれだけ適合しているかを評価する指標 input, actual_output
Hallucination(幻覚) LLMの出力が事実に基づいているか、または虚偽の情報を含んでいないかを評価する指標 input, actual_output, context
Json Correctness(JSONの正確性) LLMが生成したJSON形式の出力が正しい構造と内容を持っているかを評価する指標 input, actual_output
RAGAS Retrieval-Augmented Generation(RAG)システムの全体的な性能を評価する複合指標 input, actual_output, expected_output,retrieval_context
Conversational G-Eval(会話型G-Eval) 会話全体の質を評価するための指標(例えば、チャットボットが会話全体を通じて、カスタム基準に準拠した応答を一貫して生成できるかどうかを簡単に判断できる) input, actual_output
Knowledge Retention(知識保持) 会話中に以前提供された情報が適切に保持され、再利用されているかを評価する指標 input, actual_output
Role Adherence(役割の遵守) LLMが指定された役割(role)をどれだけ遵守できているかを評価する指標 input, actual_output
Conversation Completeness(会話の完結性) 会話全体を通して、ユーザーの意図や要求にどれだけ完全な回答を提供しているかを評価する指標(LLM チャットボットがエンドツーエンドの会話を完了できるかどうかを判断する指標) input, actual_output
Conversation Relevancy(会話の関連性) LLM チャットボットが会話全体を通じて一貫して関連性のある応答を生成できているかどうかを判断する指標 input, actual_output

RAGAS

RAG (Retrieval-Augmented Generation)の性能を定量的に評価するためのフレームワークRAGAS (Retrieval Augmented Generation Assessment)です。以下はRAGASの主要11個の指標です。
question(元の質問), contexts(ベクトル検索結果), answer(生成された回答), ground_truth(正解)

RAGASの評価指標一覧

指標 何を評価できるのか 入力
Faithfulness(忠実性) LLMがコンテキストに忠実に回答を生成したかどうかを表す指標 question, contexts, answer
Answer Relevance (回答の関連性) 質問に対する回答として関連が見られるかを測る指標 question, contexts, answer
Context Precision (コンテキストの精度) コンテキストが質問とどの程度適合するかを測る指標 question, contexts, answer,ground_truth
Context utilization(コンテキストの利用率) コンテキストとして取得できている必要な情報のうちどれだけが利用されたかを測る指標 question, contexts, answer
Context Recall (コンテキストの再現率) 回答に必要な情報がコンテキストに「もれなく」含まれているかを測る question, contexts, answer,ground_truth
Context Entities Recall (コンテキストのキーワードの再現率) 回答に必要なエンティティ(※エンティティとは文章におけるキーワードのこと)がコンテキストにもれなく含まれているかを測る指標 contexts, ground_truth
Noise Sensitivity (ノイズへの敏感性) コンテキストに含まれる誤った情報を取り込んでしまっているかを測る指標 question, contexts, answer,ground_truth
Answer semantic similarity(回答の意味的類似性) 生成された回答と正解の意味的な類似性を評価する指標 question, answer,ground_truth
Answer Correctness (回答の正確性) 生成された回答の正確性を正解と比較して評価する指標 question, answer,ground_truth
Aspect Critique (アスペクト批評) harmfulnessやcorrectnessなどの事前に定義された視点に基づいて評価を行う指標 question, answer,ground_truth
Summarization Score(要約スコア) コンテキストから重要な情報をどれだけうまく取り入れられているかを評価する指標 contexts, summary(answer)

RAGASは、基本となる3つの指標Faithfulness (忠実性)Context Precision (文脈の精度)Answer Relevance (回答の関連性) を使うことで、Ground Truth(正解データ)不要で評価できるように設計されています。ただ、現在ではGround Truthを使った評価指標も追加されており、これらを用いてより精緻に評価することができるようになっています。
※ 表にあるContext Relevance (文脈の関連性)はRAGASの最新バージョンでは削除され、Context Precision (文脈の精度) に置き換えられています。 RAGASの指標関係

出典: 【RAG評価手法】評価できないものは改善できない!?体系的に評価指標をご紹介! | SIOS Tech. Lab

RAGChecker

Amazon(AWS AI)、上海交通大学、西湖大学のグループにより提案されたRAGCheckerはクレームと呼ばれる単一の情報のレベルで分解して算出することができる評価指標です。RAGCheckerはRAGAS等の既存の評価手法に比べて、人間の評価とより高い相関が見られると報告されているようです。 (メトリクス一覧

RAGCheckerの評価指標一覧

モジュール メトリクス 説明 備考
全体 適合率 (Precision) 応答の正確性
再現率 (Recall) 応答の網羅性
F1スコア 応答の全体的な品質
検索 (Retriever) クレーム再現率 (Claim Recall) 検索されたコンテキストにおけるクレームレベルでの再現率
コンテキスト適合率 (Context Precision) 検索されたコンテキスト内の関連チャンクの割合
生成 (Generator) コンテキスト活用度 (Context Utilization) 生成モデルがコンテキストの関連情報をどれだけ効果的に活用しているか
関連ノイズ感受性 (Noise Sensitivity in Relevant) 関連チャンク内のノイズにどれだけ影響を受けるか 低い方が望ましい
無関係ノイズ感受性 (Noise Sensitivity in Irrelevant) 無関係なチャンクのノイズにどれだけ影響を受けるか 低い方が望ましい
幻覚 (Hallucination) 生成モデルが作り出した誤った情報 低い方が望ましい
自己知識の利用 (Self-knowledge) モデルがコンテキストではなく自身の知識を利用する度合い ユーザーの目的によって望ましさが異なる
忠実性 (Faithfulness) 生成モデルが検索されたコンテキストにどれだけ忠実か

Azure AI Evaluation SDK

MIcrosoft AzureにはPrompt FlowというLLMを使ったプロダクトの開発、評価、デプロイ等をワークフローとして可視化して、開発サイクル全体を効率化するために設計された開発ツールがあります。Azure AI Evaluation SDKはPrompt Flowに使われている評価用ライブラリです。 (メトリクス一覧

Azure AI Evaluation SDKの評価指標一覧

指標 何を評価できるのか 評価クラス 入力 カテゴリ
Groundedness(根拠性) 回答がコンテキストに基づいているかを評価 GroundednessEvaluator query(省略可), response, context Performance and quality (AI-assisted)
Groundedness Pro(根拠性) より厳格に回答とコンテキストの整合性・根拠性を評価 GroundednessProEvaluator query, response, context Performance and quality (AI-assisted)
Retrieval(検索性) クエリに対して、提供された「コンテキスト」がどれだけ関連性のある情報を含むかを評価 RetrievalEvaluator query, context Performance and quality (AI-assisted)
Relevance (関連性) 回答がクエリに対してどれだけ的確か(関連性が高いか)を評価 RelevanceEvaluator query, response Performance and quality (AI-assisted)
Coherence(一貫性) 回答内容が論理的にまとまっているか、話の流れや内容の整合性を評価 CoherenceEvaluator query, response Performance and quality (AI-assisted)
Fluency(流暢性) 回答が自然な文章で表現されているか、文法や言い回しの滑らかさを評価 FluencyEvaluator response Performance and quality (AI-assisted)
Similarity(類似性) 生成された回答と「正解テキスト」との意味的・表面的な類似度を測定 SimilarityEvaluator query, response, ground_truth Performance and quality (AI-assisted)
F1Score 回答と正解テキストの間で、精度(Precision)と再現率(Recall)の調和平均を算出 F1ScoreEvaluator response, ground_truth Performance and quality (NLP)
ROUGE 要約や生成タスクにおいて、n-gram の重複度などから正解テキストとの一致度を評価 RougeScoreEvaluator response, ground_truth Performance and quality (NLP)
GLEU 機械翻訳などで、生成テキストと正解テキスト間の重複や誤りを評価(BLEU に似た指標) GleuScoreEvaluator response, ground_truth Performance and quality (NLP)
BLEU 生成テキストと正解テキストとの n-gram 一致度から翻訳・生成品質を評価 BleuScoreEvaluator response, ground_truth Performance and quality (NLP)
METEOR 語彙の一致、同義語・語形変化も考慮して生成テキストと正解テキストの一致度を評価 MeteorScoreEvaluator response, ground_truth Performance and quality (NLP)
Violence(暴力表現) 回答内に暴力的な表現や内容が含まれているかを検出 ViolenceEvaluator query, response Risk and safety (AI-assisted)
Sexual(性的表現) 回答内に性的な内容や表現が含まれているかを検出 SexualEvaluator query, response Risk and safety (AI-assisted)
SelfHarm(自傷表現) 回答に自傷行為や自殺に関連する表現が含まれているかを評価 SelfHarmEvaluator query, response Risk and safety (AI-assisted)
HateUnfairness(憎悪表現) 回答内にヘイトスピーチや不公正な表現があるかを評価 HateUnfairnessEvaluator query, response Risk and safety (AI-assisted)
IndirectAttack(間接攻撃表現) 文脈内で、直接的ではなく、含みのある攻撃や侮辱表現が含まれているかを評価 IndirectAttackEvaluator query, response, context Risk and safety (AI-assisted)
ProtectedMaterial(保護対象表現) 特定の保護対象やセンシティブな話題が含まれているかを検出 ProtectedMaterialEvaluator query, response Risk and safety (AI-assisted)
質問応答(QA)性能評価 クエリとコンテキストに基づき、回答が正解(Ground Truth)とどれだけ一致しているかを評価 QAEvaluator query, response, context,ground_truth Composite
全体的なコンテンツ安全性評価 回答内に有害・不適切な内容(暴力、差別、その他危険な表現など)が含まれていないかを検出 ContentSafetyEvaluator query, response Composite

OpenAI Evals

OpenAI Evals は、OpenAIが開発した言語モデル (LLM) の評価フレームワークです。Accuracy、F1 Scoreなどを測定し、カスタム評価タスクも追加することができます。OpenAI Platformの画面から評価を実行することもできます。

LangChain Evaluation

LangChainに評価するクラスも多く実装されているようです。ただ、LangChainを使った評価を行うなら、LangChainを本番環境で運用する際の便利ツールであるLangSmithを使って評価する方が簡単そうです。

LLM(大規模言語モデル)自体の性能評価ライブラリ

LLM(大規模言語モデル)には有名なGPT-4.1Gemini2.5 flashClaude Sonnet 4などのモデル以外にも様々なモデルがあります。(Hugging Face Open LLM Leaderboard) マイナーなモデルを使う必要がある時や独自モデルを構築する際には、LLM自体の性能評価ライブラリは非常に重要になってきます。

lm-evaluation-harness

  • lm-evaluation-harness は、EleutherAI が開発した言語モデルの評価ライブラリです。GPT-4やLLaMAをはじめ、様々なモデルをGLUE, MMLU, HellaSwagなどのベンチマークで評価することができます。

HELM

HELM (Holistic Evaluation of Language Models) は、スタンフォード大学の Center for Research on Foundation Models (CRFM) が開発した言語モデルの総合評価フレームワークです。精度だけでなく、公平性、堅牢性、効率性など多面的な評価を行います。GPT-4やLLaMAなど様々なモデルを、MMLU, TruthfulQA, HellaSwagなど多様なベンチマークで分析することができます。

PromptBench

PromptBench はMicrosoftが運営するLLMをベンチマークするための統合ライブラリです。さまざまな LLMフレームワーク(Hugging Face、VLLMなど)をサポートしており、タスクを評価するだけでなく、データセットやプロンプトレベルでの耐攻撃性も評価することもできます。 PromptBench

出典: GitHub - microsoft/promptbench: A unified evaluation framework for large language models

評価用LLM

LLMを評価するために特別にチューニングされたモデルもあります。

Prometheus

Prometheusは、他の言語モデルの出力を評価するために開発されたオープンソースの大規模言語モデル(LLM)です。参考資料 (参考回答、スコアルーブリック) が提供された場合、GPT-4の評価機能に匹敵するらしいです。

ガードレール

ガードレールとは、AIが安全かつ倫理的に動作をするように設けられる制約のことです。悪意のあるユーザーがいた場合、有害なプロンプトを投げてこちらの意図しない動作を引き起こそうとしてくる可能性があります。そのため、有害なプロンプトが投げられた際は、LLMに回答させないことが大切です。

ちなみに

Azure OpenAIを使う場合は、コンテンツフィルターがデフォルトで有効になっているため、特に何も設定しなくても重要度レベル中までの有害コンテンツは入力・出力されないよう防止されています。geminiでもデフォルトで安全性フィルターが有効になっています。

Guardrails AI

様々なガードレールのバリデーションを提供しているライブラリです。チェックできるすべての項目は65以上あります。一覧はこちら

Guardrails AIの主要バリデーション項目

バリデーション 内容
Bias Check テキストに人種、性別、性、民族、宗教などに関連するバイアスを含まないことを検証する
Detect PII Microsoft Presidioを使用して、テキスト内に個人情報(PII)が含まれていないか検証する
Grounded AI Hallucination AIが生成した応答にハルシネーション(幻覚)が含まれていないか評価する
Detect Jailbreak モデルの制約を回避しようとする試み(jailbreak)を検出する
Secrets Present テキスト内にAPIキーなどの機密情報が含まれていないかを検出する
Toxic Language テキスト内に有害な言語(毒性、脅迫、侮辱、差別的表現など)が含まれていないことを検証する
Profanity Free テキスト内に卑猥な言葉が含まれていないことをチェックする

Moderation API(Open AI)

OpenAIのModeration APIは、テキストの安全性を評価し、有害なコンテンツ(ヘイト、暴力、自己危害、性的コンテンツなど)を検出できる機能です。client.moderations.createから簡単に使うことができます。(サンプルコード。)

Moderation APIの検出項目一覧

検出項目 説明
hate 人種、民族、宗教、性別、性的指向、障害などに対する憎悪や差別的な表現を検出する
hate/threatening ヘイト表現の中でも、特定の個人やグループに対する脅迫を含む内容を検出する
illicit 違法行為を行う方法に関するアドバイスや指示を与えるコンテンツを検出する。「万引きの方法」などのフレーズがこのカテゴリに該当する
illicit/violent illicitに加えて、暴力や武器の調達に関する言及も含めて検出する
self-harm 自殺、自傷行為、摂食障害などの自傷行為を促進、奨励、または描写するコンテンツを検出する
self-harm/intent ユーザーが自殺、自傷行為、摂食障害などの自傷行為を行っている、または行うつもりであることを表明するコンテンツを検出する
self-harm/instructions 自殺、自傷行為、摂食障害などの自傷行為を奨励したり、そのような行為を行う方法についての指示やアドバイスを与えるコンテンツを検出する
sexual 露骨な性的コンテンツや成人向け表現を検出する
sexual/minors 未成年者に関する性的な内容を特に厳しく検出する
violence 暴力的な表現、攻撃的な言葉、危害を加える意図のある発言を検出する
violence/graphic 特に生々しい暴力描写や残虐なコンテンツを検出する

Human-in-the-loop(人間参加型)による評価も大事

モデルベース指標はCoherence(一貫性)、Fluency(流暢性)、Relevance(関連性)など、有用で定量的な評価を自動で行うことができます。ただ、すべての評価をLLMにまかせてしまうのは危険です。必ず、人手を介した(Human-in-the-loop)評価を行うことも必要です。人間による直接的な判断は、評価者個人のバイアスが評価に影響するため、評価値がバラつくリスクはありますが、やはりある程度は必要だと思います。

まとめ

LLMの精度を評価するためのライブラリや指標はたくさんありますが、最初からすべてを使いこなすのは大変です。チームでも、現在はまだLLM評価のライブラリを本格導入できておらず、オフライン評価のみでリリース後の継続的な精度チェックは今後の課題となっています。

今回の調査を通じて、まずはプロダクトの特性や課題に合わせて重要な評価指標を2〜3項目に絞って始めて、段階的に評価項目を広げていくようにして取り組んでいきたいと考えています。また、今回紹介したようなライブラリを活用して、継続的に精度を監視・改善していく仕組みづくりにも着手していく予定です。

We Are Hiring!

SmartHRでは現在、AIに関連するエンジニアやプロダクトマネージャーを募集しています。まずはカジュアル面談からでも大歓迎ですので、ざっくばらんにお話ししてみませんか!