ストーリー
田
田中VPoE
評価フレームワークで品質を測定できるようになった。次は本番環境での継続的なモニタリングだ
田
田中VPoE
当然だ。ドキュメントは日々更新される、ユーザーの質問パターンは変化する、LLMのAPIが更新される — RAGの品質は時間とともに劣化しうる。これを「ドリフト」と呼ぶ
田
田中VPoE
そうだ。品質が閾値を下回ったら即座にアラートが飛ぶ仕組みを構築する。「気づいたら精度が落ちていた」では手遅れだ
モニタリング指標の設計
リアルタイム指標
| 指標 | 閾値 | 取得方法 | アラート条件 |
|---|
| レイテンシ P50/P95/P99 | P95 < 5秒 | リクエストログ | P95 > 5秒が5分間継続 |
| エラー率 | < 1% | HTTPステータスコード | 1%超過が3分間継続 |
| 検索結果ゼロ件率 | < 10% | 検索結果カウント | 10%超過 |
| Rerankスコア平均 | > 0.5 | Rerankerの出力 | 0.5未満が30分間継続 |
| LLM応答拒否率 | < 5% | 「情報が見つかりません」の回答率 | 5%超過 |
| ユーザーフィードバック | Thumbs Up > 70% | UI上のフィードバックボタン | 70%未満が1日継続 |
バッチ評価指標
| 指標 | 頻度 | 閾値 | 対応 |
|---|
| Faithfulness(RAGAS) | 週次 | > 0.85 | プロンプト改善、検索パイプライン調整 |
| Answer Relevance(RAGAS) | 週次 | > 0.80 | クエリ変換の改善 |
| Context Precision | 週次 | > 0.75 | Reranking調整 |
| Context Recall | 週次 | > 0.80 | 検索パイプライン、チャンキング改善 |
品質劣化の検知
ドリフトの種類
| ドリフト種類 | 原因 | 検知方法 |
|---|
| データドリフト | ドキュメントの更新・追加・削除によりインデックスが古くなる | ドキュメント更新日とインデックス日の差分監視 |
| クエリドリフト | ユーザーの質問パターンが変化する | クエリクラスタリングの変化を監視 |
| モデルドリフト | LLM/EmbeddingモデルのAPIバージョン更新 | モデルバージョンの変更検知、A/Bテスト |
| 品質ドリフト | 上記の複合要因で回答品質が徐々に低下 | RAGAS指標の経時変化 |
ドリフト検知のアーキテクチャ
ドリフト検知パイプライン:
[リアルタイム]
リクエストログ → CloudWatch Metrics → アラート(Slack)
↓
ユーザーフィードバック → 集計 → ダッシュボード
[バッチ]
週次スケジュール → 評価データセットでRAGAS実行 → 結果記録
↓
前回結果と比較 → 閾値チェック → 劣化検知 → アラート
↓
トレンドグラフ → ダッシュボード
ログ設計
RAGリクエストログ
RAGリクエストログの構造:
{
"request_id": "req-20261201-001",
"timestamp": "2026-12-01T10:30:00Z",
"user_id": "user-123",
// クエリ情報
"query": "RAGの検索精度を上げるには?",
"query_rewritten": "RAGシステムの検索精度向上手法",
"filters_applied": {"doc_type": "技術文書"},
// 検索結果
"retrieval": {
"vector_results": 20,
"bm25_results": 20,
"fused_results": 15,
"reranked_results": 5,
"top_score": 0.89,
"min_score": 0.42
},
// 生成結果
"generation": {
"model": "claude-3-5-sonnet",
"input_tokens": 2500,
"output_tokens": 450,
"sources_cited": 3
},
// パフォーマンス
"latency": {
"query_processing_ms": 310,
"retrieval_ms": 180,
"reranking_ms": 350,
"generation_ms": 1800,
"total_ms": 2640
},
// フィードバック
"feedback": {
"thumbs_up": true,
"comment": null
}
}
ダッシュボード設計
主要パネル
| パネル | 表示内容 | 更新頻度 |
|---|
| リクエスト数 | 時間帯別のリクエスト数推移 | リアルタイム |
| レイテンシ | P50/P95/P99のトレンド | リアルタイム |
| エラー率 | エラー率のトレンド | リアルタイム |
| ユーザー満足度 | Thumbs Up率の日次推移 | 日次 |
| RAGAS指標 | 4指標の週次推移 | 週次 |
| コスト | API利用料の日次推移 | 日次 |
| 検索品質 | Top-1スコアの分布 | 日次 |
| 頻出クエリ | よく聞かれる質問Top-10 | 日次 |
アラートルール
| レベル | 条件 | 通知先 |
|---|
| Critical | エラー率 > 5% or レイテンシ P99 > 30秒 | Slack #alert + PagerDuty |
| Warning | エラー率 > 1% or Thumbs Up < 70% | Slack #rag-monitoring |
| Info | RAGAS指標が前週比5%以上低下 | Slack #rag-monitoring |
「モニタリングなしの本番運用は、計器のない飛行機で飛ぶようなものだ。必ず品質の可視化を先に整備してからリリースしろ」 — 田中VPoE
まとめ
| ポイント | 内容 |
|---|
| リアルタイム指標 | レイテンシ、エラー率、検索ゼロ件率、ユーザーフィードバック |
| バッチ評価 | RAGAS指標の週次評価でトレンドを監視 |
| ドリフト検知 | データ/クエリ/モデル/品質の4種類のドリフトを監視 |
| ログ設計 | クエリ、検索結果、生成結果、パフォーマンス、フィードバックを記録 |
チェックリスト
次のステップへ
次は「RAG運用設計」を学びます。インデックス更新戦略、スケーリング、コスト管理など、安定運用のための設計を行いましょう。
推定読了時間: 30分