【ITニュース解説】RAG Evaluation in Java: A Comprehensive Guide
2025年09月06日に「Dev.to」が公開したITニュース「RAG Evaluation in Java: A Comprehensive Guide」について初心者にもわかりやすいように丁寧に解説しています。
ITニュース概要
RAGは、LLMが知識ベースから関連文書を検索し、より正確な応答を生成する技術だ。その性能評価は重要で、PrecisionやRecallなどの指標で文書の関連性や取得率を測る。低評価の場合、埋め込みモデルや検索戦略の見直しが必要となる。
ITニュース解説
Retrieval-Augmented Generation (RAG) は、大規模言語モデル (LLM) の能力を向上させるための重要な技術である。LLMは非常に強力だが、時に事実とは異なる情報、つまり「幻覚」を生成したり、最新の情報や特定の知識にアクセスできなかったりする課題がある。RAGは、この問題を解決するために、外部の知識ベースから関連するドキュメントをまず検索し、その検索結果を参考にしながらLLMが回答を生成するというアプローチを取る。これにより、LLMの応答はより正確で、文脈に沿ったものとなり、事実に基づいているため、幻覚の発生を大幅に減らすことが可能になる。
このようなRAGシステムを開発し、運用する際には、その性能を継続的に評価することが不可欠である。評価を通じて、AIアプリケーションが正確で信頼性が高いことを確認し、知識ベースから適切なドキュメントが正しく検索されているかを検証できる。また、LLMの応答が参照元のドキュメントに忠実であるかを確かめ、幻覚や誤った情報の発生を特定し、最小限に抑えることができる。これらの評価は、システムのパフォーマンスを継続的に最適化していく上で非常に重要な役割を果たす。
RAGシステムの評価には、主に情報検索の質を測るためのいくつかの重要な指標が用いられる。 適合率(Precision)は、検索されたドキュメントの総数のうち、実際にどれだけの割合が関連性の高いものだったかを示す。これは「関連性のある検索結果の数 ÷ 全ての検索結果の数」という式で計算される。例えば、検索された10件のドキュメントのうち、2件だけが本当に求めていた情報だった場合、適合率は0.2(20%)となる。間違った情報が検索されることが許されない場面では、適合率を高く保つことが重要で、出力される情報に含まれるノイズを減らす効果がある。
再現率(Recall)は、知識ベース全体に存在する全ての関連ドキュメントの中で、システムがどれだけの割合を検索できたかを示す。計算式は「関連性のある検索結果の数 ÷ 知識ベース内の関連性の高いドキュメント全ての数」である。例えば、知識ベースに合計100件の関連ドキュメントがあったにもかかわらず、システムがそのうち10件しか見つけられなかった場合、再現率は0.1(10%)となる。重要な情報を見逃すことが許されないような状況では、再現率を高く保つことが非常に重要で、必要な情報を網羅的に取得できているかを示す。
F1スコアは、適合率と再現率の二つの指標をバランス良く評価するための総合的な指標である。これら二つの指標はしばしばどちらかを高めるともう一方が下がるというトレードオフの関係にあるため、F1スコアはそれらを調和平均することで、単一の数値でシステムの検索性能を全体的に評価する。「2 × (適合率 × 再現率) ÷ (適合率 + 再現率)」で計算され、適合率と再現率の両方をバランス良く高めたい場合に有用である。
平均逆順位(MRR: Mean Reciprocal Rank)は、検索結果の中で最初の関連ドキュメントがどれだけ上位に表示されたかを評価する。最初の関連ドキュメントが見つかった順位の逆数を計算し、複数のクエリでその平均を取る。例えば、最初の関連ドキュメントが3番目に見つかった場合、その逆順位は1/3となる。特に質問応答システムのように、最も関連性の高い情報が検索結果の早い段階で提示されることが重要な場合に有効で、ユーザーが素早く求めている情報にたどり着けるかを示す指標となる。
正規化済み累積割引利得(nDCG: Normalized Discounted Cumulative Gain)は、検索結果のドキュメントのランキングの質の高さを評価する。この指標は、各ドキュメントの関連度とその検索結果リスト内での位置を考慮し、上位に位置するドキュメントほど高い関連度を持つ場合に高いスコアを与える。そして、理想的なランキングと比較して正規化することで、システムがドキュメントを関連度順にどれだけ適切に並べられているかを測る。特に、関連度が「関連あり/なし」だけでなく、段階的に評価される場合(例:非常に高い、高い、普通、低い)に有効である。
ヒット率(Hit Rate)またはRecall@kは、検索結果のトップk件の中に、関連ドキュメントが少なくとも1つ含まれているクエリの割合を示す。これは「(トップk件に関連ドキュメントが含まれるクエリの数) ÷ 全クエリ数」で計算される。RAGシステムにおいて、ドキュメントを分割するサイズ(チャンクサイズ)を最適化する際などに役立ち、関連情報が必ず上位の検索結果の中に存在することを保証するのに貢献する。
RAGシステムを構築する際には、まず知識ベースにドキュメントを保存する。記事の例では、A2Aエージェントというプログラムを使って、元となる真実の情報(グラウンドトゥルースドキュメント)をRAGシステムに送り込み、保存している。これにより、システムは問い合わせがあった際に参照できるデータを持つことになる。ドキュメントの検索は、例えば「http://localhost:7860/getDocuments?documentText=dishwasher」のようなRESTエンドポイントを通じて行われる。このエンドポイントに検索したいキーワード(例えば「dishwasher」)を渡すと、システムはキーワードだけでなく、ドキュメントの内容を数値化した「ベクトル埋め込み」を利用し、意味的な類似性に基づいて関連するドキュメントを探し出して返却する。
実際に「dishwasher(食器洗い機)」というクエリを使ってシステムを評価したところ、以下のようなRAG評価指標が得られた。適合率は0.2、再現率は0.011、F1スコアは0.021という数値であった。さらに、MRR、nDCG、ヒット率については全て0.0という結果になった。
これらの評価結果を分析すると、システムには重大な改善が必要であることが明らかになる。 適合率が0.2というのは、検索されたドキュメントのたった20%しか関連性がなかったことを意味する。これは、検索結果に不要な情報が多く混ざり込んでいる状態、つまり「ノイズ」が高いことを示しており、より効果的なフィルタリング機構の導入が求められる。
再現率が非常に低い0.011という数値は、システムが関連するドキュメント全体の約98.9%もの情報を見逃していることを示唆している。これは、ドキュメントのベクトル埋め込みの質が低い、類似性を判断するしきい値の設定が適切でない、あるいはクエリの処理方法に問題があるなど、複数の原因が考えられ、システムが本来参照すべき情報をほとんど見つけられていない深刻な状況である。
F1スコアが0.021と低いことも、適合率と再現率の両方が著しく低いことを裏付けており、システム全体の検索性能が最適ではないことを明確に示している。
MRR、nDCG、ヒット率が全て0.0であることは、システムが関連ドキュメントを検索結果の上位にまったく表示できていないか、あるいはトップK件の検索結果に関連ドキュメントを一つも含まれていないことを意味する。これは、検索結果のランキング機能に根本的な問題があることを示唆している。ベクトル埋め込みモデルの再評価、類似性のしきい値の調整、ドキュメントの前処理方法の見直し、およびランキングアルゴリズムの最適化といった対策が緊急に必要である。
このような評価結果を踏まえ、RAGシステムの品質を向上させるためには、いくつかの改善策が考えられる。 まず、埋め込みモデルの質を高める必要がある。特定の分野に特化した埋め込みモデルの利用や、異なる次元の埋め込みを試すことで、ドキュメントやクエリの意味をより正確に捉えることができる可能性がある。
次に、検索戦略の見直しも重要である。意味的な類似性に基づく検索だけでなく、キーワード検索も組み合わせたハイブリッド検索を導入したり、類似性のしきい値を調整したり、複数の段階で検索を行う多段階検索を取り入れたりすることで、より効果的に関連ドキュメントを特定できる可能性がある。
ドキュメント処理の改善も欠かせない。ドキュメントを適切なサイズに分割する(チャンキング)戦略を見直したり、テキストの不要な部分を除去し、重要な情報を抽出する前処理を強化したり、ドキュメントに補足情報(メタデータ)を付与したりすることで、検索の精度を高めることが期待できる。
最後に、システム全体の最適化も必要である。ベクトルストアのパラメータを詳細に調整したり、検索結果をさらに並べ替えるための再ランキング機能を実装したり、ユーザーからのフィードバックをシステムに反映させる仕組みを導入したりすることで、継続的にシステムのパフォーマンスを向上させることが可能となる。
これらの評価結果は、RAGシステムが継続的に監視され、反復的な改善が繰り返される必要があることを強く示している。定期的にこれらの評価指標を用いてシステムの状態を評価することで、品質を維持し、最適化の取り組みを効果的に進めることができる。