RAG評価パイプラインを組み込んだAI開発用CI/CDインフラの設計

コードは正常、でもAIは嘘をつく:RAG評価パイプライン設計の5つの落とし穴

この記事は急速に進化する技術について解説しています。最新情報は公式ドキュメントをご確認ください。

約15分で読めます
文字サイズ:
コードは正常、でもAIは嘘をつく:RAG評価パイプライン設計の5つの落とし穴
目次

この記事の要点

  • RAGモデル固有の「AIの嘘」(ハルシネーション)問題への対処
  • 従来のCI/CDでは不十分なRAG評価の必要性
  • LLMOpsの視点を取り入れた評価パイプライン設計

生成AIを活用したアプリケーション、特にRAG(Retrieval-Augmented Generation)システムのPoC(概念実証)が無事に終わり、いよいよ本番運用や利用拡大を検討しているフェーズの皆さん。まずは、ここまでたどり着いたことに敬意を表します。「まず動くものを作る」というプロトタイプ思考で仮説を形にし、検証を重ねてきた成果でしょう。

しかし、ここからが本当の勝負です。ビジネスへの最短距離を描くためには、システムが本番環境でどう動くかを厳密に見極める必要があります。

開発チームのマネージャーやリードエンジニア、あるいはプロジェクトを牽引する経営層の皆さんは、今、ある種の「違和感」や「漠然とした不安」を感じていないでしょうか?

「デモではうまくいったが、本番で想定外の質問が来たらどうなる?」
「プロンプトを修正して特定の回答は良くなったが、他の回答が悪化していないかどうやって保証する?」
「CI/CDパイプラインは『All Green(正常終了)』を示しているのに、AIが平気で嘘をついているかもしれない」

その直感は極めて正しいと言えます。従来の決定論的なソフトウェア開発の常識だけでRAGシステムを運用しようとすると、必ずどこかで破綻します。これを「サイレントな精度低下」と呼ぶことがあります。エラーログも吐かずに、AIがもっともらしく間違った情報をユーザーに提供し続ける状況です。これは、システムダウンよりも遥かに恐ろしい、ブランド毀損のリスクを孕んでいます。

今回は、RAG評価パイプラインを設計する際に陥りがちな5つの落とし穴と、それを回避するためのインフラ設計の勘所について、理論的な背景と実践的なノウハウを交えてお話しします。

なぜ従来のCI/CDだけではRAG開発が破綻するのか

まず、根本的な認識のズレを修正しましょう。これまで慣れ親しんできた従来のソフトウェアテストと、LLM(大規模言語モデル)を組み込んだシステムの評価は、その性質が決定的に異なります。

「コードは通るが回答は間違っている」現象

通常のWebアプリケーション開発であれば、ユニットテストや統合テストでロジックの正当性を検証します。入力Aに対して出力Bが返ってくることを期待し、それが一致すればテストはPass(合格)です。CI/CD(継続的インテグレーション/継続的デリバリー)パイプラインは、この「Pass/Fail」の二元論に基づいてデプロイの可否を判断します。

しかし、RAGシステムにおいて、PythonやTypeScriptのコード自体にバグがなくても、出力される回答の品質が低いという事態は日常茶飯事です。検索システム(Retriever)が微妙にズレたドキュメントを拾ってきたり、LLM(Generator)が文脈を読み違えたり、あるいはハルシネーション(幻覚)を起こしたりします。

これらはプログラムのエラー(例外処理)としては検知されません。システム的には「正常にテキストを生成して返した」とみなされます。つまり、従来のCI/CDパイプライン上では「正常」と判定されてデプロイされてしまうのです。

ソフトウェアテストとAI評価の決定的な違い

最大の違いは、LLMが確率的(Stochastic)な挙動をする点にあります。同じプロンプト、同じコンテキストを与えても、生成される回答が毎回完全に一致するとは限りません(Temperatureを0に設定しても、浮動小数点の計算誤差や並列処理の非決定性により、微妙な差異が生まれることがあります)。

また、「正解」が一つではないという難しさもあります。「要約して」という指示に対して、完璧な正解は存在せず、「良い要約」と「悪い要約」のグラデーションがあるだけです。

このため、RAG開発におけるCI/CDには、従来の「テスト(Testing)」に加えて、確率的な挙動を許容しつつ品質をモニタリングする「評価(Evaluation)」のプロセスを組み込む必要があります。これを怠ると、開発者は「修正のたびに何かが壊れるかもしれない」という恐怖心から、大胆かつスピーディーな改善ができなくなってしまいます。

1. 評価データセットの「鮮度」と「バージョン管理」が欠落する

実務の現場でよく見受けられるのは、PoCの時に作った「とりあえずのテストデータ(ExcelやCSV)」を、本番運用後も使い続けているケースです。

テストケースが静的では意味がない理由

RAGシステムは、ユーザーの質問傾向や、検索対象となるドキュメントの変化(データドリフト)の影響を強く受けます。数ヶ月前に作成されたテストデータセットでは良い結果が得られても、現在のユーザーが実際に聞いている質問に対して正しく答えられる保証はありません。

例えば、社内規定RAGを作ったとして、4月に「リモートワーク規定」が改定されたとします。しかし、評価データセットの正解(Ground Truth)が古い規定のままだったらどうなるでしょうか? 新しい規定に基づいて正しく回答するAIが、テストでは「不正解」と判定されてしまいます。これでは本末転倒ですね。

本番ログからのフィードバックループ

優れたAIインフラは、DataOpsの視点を取り入れています。具体的には、本番環境でのユーザーとの対話ログを収集し、そこから「回答に失敗した質問」や「ユーザーからの評価が低かった回答」を抽出して、新たな評価用データセットに追加していくサイクルを自動化または半自動化しています。

評価データセットは、ソースコードと同じようにバージョン管理されるべきです。「v1.0のデータセットでは精度80%だったが、v1.1では75%に落ちた」といった比較ができなければ、精度の変化を正しく追跡できません。

CI/CDパイプラインには、単にテストを実行するだけでなく、「最新の評価データセットを取得する」というステップが必要不可欠です。

2. デプロイごとの「精度コスト」と「開発速度」のトレードオフを見誤る

1. 評価データセットの「鮮度」と「バージョン管理」が欠落する - Section Image

「評価の仕組みが不可欠なのは理解した。それならば、GitHub Actionsでプルリクエスト(PR)が作成されるたびに、すべてのテストケースで精度評価を実行しよう」

品質を担保しようとするその姿勢は素晴らしいものの、実際にこの運用を始めると、開発現場から強い懸念の声が上がる傾向があります。アジャイルな開発速度が損なわれてしまうからです。

全量評価によるパイプラインの遅延

LLMを用いた自動評価(LLM-as-a-Judge)は非常に強力な手法ですが、同時に「時間」と「コスト」を大きく消費するプロセスでもあります。

現在、評価基盤を支えるLLMは大きな世代交代の真っ只中にあります。OpenAIの公式ドキュメントによると、2026年2月13日をもってGPT-4oをはじめとする旧モデルはChatGPTのUIから完全に引退し、デフォルトモデルはGPT-5.2ファミリー(Instant、Thinking、Auto、Proの4モード)へと一本化されました。API経由では一部の旧モデルの利用が継続可能ですが、新規開発や評価パイプラインの構築においては、回答の正確性やコンテキスト理解が向上したGPT-5.2への移行が強く推奨されています。また、AnthropicのAPIでもClaude Sonnet 4.6といった最新モデルが標準化されています。

特に最新のGPT-5.2 Thinkingモードのように、モデル内部で推論を深める機能や、タスクの複雑さに応じて思考の深さを自動調整する仕組みを活用すれば、評価の精度は飛躍的に高まります。しかし、こうした厳密な推論プロセスを経由すると、1件あたりの処理時間は必然的に増加します。

仮に500件の評価データセットが存在し、それを毎回API経由で評価する場合、完了までに相当な待ち時間が発生します。並列処理を導入して時間を短縮したとしても、今度はAPIのレート制限(Rate Limits)に抵触するリスクや、従量課金による想定外のコスト増大という新たな課題に直面します。コードをわずか1行修正してPRを出すたびに長い待機時間が生じれば、開発体験(Developer Experience)は著しく損なわれてしまいます。

スモークテストと詳細評価の使い分け

この課題を解決するには、評価の粒度と実行タイミングを綿密に設計し、パイプライン全体を最適化するアプローチが求められます。評価モデルを最新のGPT-5.2ファミリーへ移行する際にも、この基本原則は変わりません。

  • PR作成時(スモークテスト): コストを抑えつつ高速に完了するテストのみを実行し、開発者へ即座にフィードバックを返します。
    • 対象を絞る: システムの根幹に関わる重要な少数のテストケース(20件程度)に限定して実行します。
    • モデルを変える: 応答速度に特化したGPT-5.2 Instantや、Geminiの高速モデルなど、コストパフォーマンスと処理スピードに優れたAPIモデルを採用します。
    • 手法を変える: LLMに依存しない決定論的な指標(キーワードマッチ、正規表現、ベクトル検索による類似度判定など)を用いて、簡易的なチェックを素早く行います。
  • マージ後および夜間(詳細評価): メインブランチへのマージ完了後や、毎晩実行されるナイトリービルドのタイミングで、全データセットを用いた詳細な評価(Deep Eval)を実施します。この段階では、推論能力に優れた最上位モデル(GPT-5.2のThinkingモードやProモード、Claude Sonnet 4.6の拡張思考モードなど)を稼働させ、時間をかけて徹底的に回答の妥当性を検証します。

このように、「開発のフィードバックループの速さ」と「評価の信頼性」のバランスをインフラストラクチャのレベルで適切に調整することが、持続可能で拡張性の高いLLMOpsを構築する鍵となります。

3. リトリーバー(検索)とジェネレーター(生成)の評価が分離されていない

「回答の精度が下がった」という報告を受けた時、あなたのチームはすぐに原因を特定できるでしょうか?

「回答が悪い」の原因切り分けが困難に

RAGシステムを一つのブラックボックスとして評価(End-to-End評価)していると、問題の所在がわからなくなります。

  • ケースA: 必要なドキュメントが見つからなかったから、回答できなかったのか?(検索の問題)
  • ケースB: ドキュメントは正しく見つかったが、LLMがそれを無視して適当なことを言ったのか?(生成の問題)

この二つは対策が全く異なります。前者は検索アルゴリズムやチャンク分割の調整が必要ですが、後者はプロンプトエンジニアリングやモデルの変更が必要です。

コンポーネント単位での評価指標の設定

評価パイプラインでは、Retrieval(検索)Generation(生成)を分離して計測する仕組みを導入すべきです。

RAGの評価においては、検索と生成それぞれの品質を定量化するアプローチが一般的です。例えば、評価フレームワークとして知られる「Ragas」などの考え方を参考にすると、以下のような指標を個別に測定することが推奨されます。

  • Context Recall(検索の網羅性): ユーザーの質問に答えるために必要な情報(Ground Truth)が、検索結果に含まれているかを測定します。
  • Context Precision(検索の適合率): 検索結果の中に、回答に不要なノイズ情報がどれだけ混ざっていないかを評価します。
  • Faithfulness(忠実性): 生成された回答が、検索されたコンテキストの内容に忠実に基づいているかを確認します(ハルシネーションの検知)。
  • Answer Relevance(回答の関連性): 生成された回答が、ユーザーの質問に対して的確に答えているか、冗長でないかを評価します。

これらの指標を自動評価パイプラインに組み込むことで、CI/CDの結果レポートを見た際に「今回はContext Recallが低下したため、検索ロジックの変更に問題がある」と即座に判断できるようになります。これはトラブルシューティングの時間を劇的に短縮し、ビジネスへの最短距離を描くための重要なステップです。

なお、評価ライブラリやフレームワークは頻繁にアップデートされるため、実装の際は必ず各ツールの公式ドキュメント(GitHubリポジトリ等)で最新の仕様や推奨される評価指標を確認してください。

4. 「ガードレール」なしのデプロイによるブランド毀損リスク

3. リトリーバー(検索)とジェネレーター(生成)の評価が分離されていない - Section Image

評価パイプラインは、単にスコアをレポートするだけの「通知係」ではありません。時にはデプロイを阻止する「門番(Gatekeeper)」であるべきです。

不適切な回答を未然に防ぐ仕組み

LLMは、プロンプトインジェクション攻撃によって不適切な発言をさせられたり、学習データに含まれるバイアスが出力されたりするリスクがあります。また、競合他社の製品を推奨してしまったり、社外秘と思われる情報を生成してしまう可能性もゼロではありません。

こうしたリスク管理を、人間の目視チェックだけに頼るのは限界があります。特に、高度化する攻撃手法や、複雑なエージェント型AIの挙動をすべて人力で監視することは不可能です。

評価スコアをデプロイの条件にする

CIパイプラインの中に、セキュリティや倫理規定に関する評価(ガードレール)を組み込み、Quality Gate(品質の関門)として機能させましょう。

例えば、「Faithfulnessスコアが0.8を下回った場合」や「PII(個人情報)を含む回答が生成された場合」は、パイプラインを強制的に失敗(Fail)させ、本番環境へのデプロイをブロックします。

実装にあたっては、NVIDIA NeMo Guardrailsのような専用ツールや、独自の検証ロジックを用いて「絶対に許容できない回答パターン」を定義し、それを自動テストで弾く仕組みを構築します。これが、企業が安心してAIを運用するための安全装置となります。

さらに、最新のAI開発トレンドでは、以下のような多層的な対策が推奨されます:

  1. フレームワークレベルのセキュリティ: NVIDIA NeMo Frameworkの最新版などで提供される、コードインジェクション等の脆弱性修正が含まれた安全な基盤を利用する。
  2. モデル選定による最適化: エージェントAI開発においては、Nemotron 3のような最新のモデルファミリー(特にNanoモデルなど)を活用することで、推論コストを抑えつつ、高いトークン処理能力で安全性をチェックする構成も検討に値します。

単にガードレールを設置するだけでなく、最新のフレームワークやモデルが提供するセキュリティ機能を組み合わせ、コストと安全性のバランスを取ることが、アーキテクトとしての腕の見せ所です。

5. エンジニアの「プロンプト試行錯誤」が属人化し、資産にならない

4. 「ガードレール」なしのデプロイによるブランド毀損リスク - Section Image 3

最後に、技術的なインフラと同じくらい重要な「プロセスのインフラ」について触れます。

実験管理ツールとの連携

RAGの精度改善は、プロンプトエンジニアリングの試行錯誤の連続です。「プロンプトの指示を少し変えてみた」「Few-shotの例を差し替えてみた」といった変更が日々行われます。

しかし、一般的な開発現場では「誰が、いつ、なぜその変更を行い、その結果スコアがどう変わったか」が記録されていないことが多々あります。「なんとなく良くなった気がする」という感覚でマージされ、後で問題が起きた時に元に戻せなくなります。

なぜそのプロンプトが採用されたかの履歴

MLflowやWeights & Biases(W&B)のような実験管理ツールをCI/CDと連携させましょう。パイプラインが実行されるたびに、使用されたプロンプトのバージョン、パラメータ設定、そして評価スコアを自動的に記録します。

これにより、プロンプトの変更履歴と精度の推移が可視化され、チーム全体で「どのプロンプトがベストか」を客観的なデータに基づいて議論できるようになります。属人化しがちなプロンプトエンジニアリングを、再現性のあるエンジニアリング資産へと昇華させるのです。

まとめ:信頼できるAIインフラが、大胆な機能改善を可能にする

ここまで見てきたように、RAGの評価パイプライン構築は、単なる「テストの自動化」以上の意味を持ちます。

  1. 動的なデータセット管理で、現実のユーザーニーズに追従する。
  2. 階層的なテスト戦略で、コストと速度のバランスを保つ。
  3. 検索と生成の分離評価で、改善ポイントを明確にする。
  4. ガードレールの実装で、ビジネスリスクをブロックする。
  5. 実験管理の導入で、プロンプト開発を資産化する。

これらは一見、面倒でコストのかかる「守り」の施策に見えるかもしれません。しかし、強固な守りがあるからこそ、開発者は安心して新しいモデルを試したり、プロンプトを大胆に書き換えたりする「攻め」の開発が可能になります。

「これを変更しても、パイプラインが品質を保証してくれる(ダメなら止めてくれる)」という心理的安全性こそが、AI開発のスピードと質を最大化するのです。

まずはスモールスタートで構いません。今のCI/CDに、主要な20件の質問に対する簡易的な回答チェックを追加することから始めてみてください。その小さな一歩が、開発チームを「AIの嘘」から守る大きな盾となり、ビジネス価値の創出を加速させるはずです。


コードは正常、でもAIは嘘をつく:RAG評価パイプライン設計の5つの落とし穴 - Conclusion Image

参考文献

  1. https://qiita.com/ishisaka/items/c73a5163658b0de24bff
  2. https://aws.amazon.com/jp/builders-flash/202602/genai-support-case-issue-skill/
  3. https://note.com/suwash/n/nb0d28994aef5
  4. https://zenn.dev/headwaters/articles/dc1791e933c216
  5. https://www.itmedia.co.jp/enterprise/articles/2602/06/news009.html
  6. https://recruit.group.gmo/engineer/jisedai/blog/ai_blog_writer_3_claude-code_n8n_skills_core-satellite/
  7. https://github.com/ace-step/ACE-Step-1.5/blob/main/docs/ja/Tutorial.md

コメント

コメントは1週間で消えます
コメントを読み込み中...