クエリ結果の精度評価

LLMフレームワークLlamaIndexにおける「クエリ結果の精度評価」は、検索拡張生成(RAG: Retrieval-Augmented Generation)のシステムが返す回答がユーザーの期待にどれだけ合致しているか、すなわち情報検索と生成の正確性・妥当性を定量的・定性的に分析するプロセスです。以下に、その詳細を解説します。


1. 評価の目的

クエリ結果の精度評価は主に以下の目的で実施されます:

  • 検索精度の確認:Retrieverが関連性の高い文書を取得できているか。

  • 生成精度の確認:LLMによる応答が質問意図に合致し、根拠に基づいているか。

  • システム全体の性能向上:問題のある部分(文書、クエリ、Retriever、LLMなど)を特定し改善。


2. 評価指標(メトリクス)

LlamaIndexでは以下のような定量的・定性的な指標を用いて評価します:

定量的評価(Quantitative)

指標名 説明
Precision 検索された文書のうち正しい文書の割合
Recall 正しい文書のうち実際に検索された割合
F1 Score PrecisionとRecallの調和平均
ROUGE / BLEU 生成された応答と理想応答の重なり具合(自然言語生成の評価)
Hit Rate @k 上位k件に正解文書が含まれている確率

定性的評価(Qualitative)

評価観点 説明
Relevance 検索された文書がクエリにどれだけ関連しているか
Faithfulness LLMの応答が取得した文書に忠実であるか(ハルシネーションの有無)
Helpfulness 応答が実際にユーザーの質問に役立つか
Clarity 応答の読みやすさ、明瞭さ

3. 評価の方法

(1) 手動評価(Human Evaluation)

  • 評価者が、クエリ・検索結果・生成結果を読み、上述の観点に基づいてスコアを付ける。

  • 小規模な検証やデバッグ段階に有効。

(2) 自動評価(Automated Evaluation)

  • 評価スクリプトやツールを用いて大量のクエリに対する精度を測定。

  • LlamaIndexではQueryResponseEvaluatorなどのモジュールが提供されており、以下のような利用が可能です。

python
from llama_index.evaluation import QueryResponseEvaluator evaluator = QueryResponseEvaluator() score = evaluator.evaluate(query="日本の首都は?", response="日本の首都は東京です。") print(score)
  • OpenAIやClaudeなどのLLMを使った「LLMベースの評価」も可能(後述の自己反省的評価)。


4. 評価のための設定とログ活用

LlamaIndexでは以下を活用して評価基盤を整備できます:

  • Query Logs:過去のクエリとレスポンスの記録を用いてバッチ評価

  • Ground Truth(理想回答)との比較:手動または自動で参照データと照合

  • 評価用データセットの準備:例えばCSVで以下のように整理

    graphql
    query,response,reference "富士山の高さは?","富士山は3776mです。","富士山は標高3776メートルです。"

5. 自己評価・LLMによる評価

  • 評価用のLLM(OpenAI, Claudeなど)に以下のようなプロンプトを使い、応答の質を自己評価させる技法が用いられます。

python
prompt = f""" ユーザーの質問: {query} システムの応答: {response} 期待される情報: {ground_truth} この応答は、質問に正確に答えているか5点満点で評価してください。 """

6. 実践的な評価パイプライン構築例

  1. ユーザーのクエリログを収集

  2. Retrieverによる取得文書とLLM応答を保存

  3. 評価関数(ROUGE、LLMプロンプトベースなど)を適用

  4. スコア集計し、Retrieverやプロンプト設計にフィードバック


まとめ

LlamaIndexにおける「クエリ結果の精度評価」は、単なるレスポンスの良し悪しを判断するだけでなく、システム全体の最適化につながる極めて重要な工程です。評価は、定量・定性の両面からアプローチされ、自動化と人手による確認を組み合わせることで、より堅牢なRAGアプリケーションが実現できます。

ChatGPT4o 生成日:2025/06/14