RAGの実用化課題と品質向上へのアプローチ
- 課題:多くの企業がRAGを導入するも、本番環境での運用が困難
- 目的:実践的なRAGを実現するための品質向上ノウハウを学ぶ
- 方法: Azure Databricksの機能や最新研究を活用し、品質を向上
- 目標:HP上で運用可能なレベルのRAGを構築
| 手法 | 簡易説明 | 精度 | 上記手法との精度差 |
|---|---|---|---|
| ベースライン | 学校HPの情報を元にRAGを実行 | 16% | -- |
| +データ追加 | HP以外の独自データを追加 | 51% | +35% |
| +Contextual Retrieval | 各チャンクが元のドキュメントのどの位置にあるかを説明する文章を追加 | 52% | +1% |
| +HyDE | LLMに架空の回答を出力させ、それをクエリとして文書を検索 | 58% | +6% |
| +Rerank+マルチクエリ | 元のクエリ, rewriteしたクエリ, HyDEで検索した大量の文書の中から、質問との関連性が高い文書のみを抽出 | 70% | +12% |
| 🕓 Initial Workflow | 🚀 Updated Workflow |
|---|---|
|
|
※ Databricks上での実行を想定しています。
faq-chatbot.pyを上から実行する- 学校HPのスクレイピングと、DB, ベクトルDBのエンドポイント作成プログラム
- Run allボタンで全実行
.envにCohereのAPI keyを追加する- Rerankモデルとして、Cohereの
rerank-v3.5を使用 cp .env.sample .envをし、COHERE_API_KEYに管理者からもらったAPI keyを配置する
- Rerankモデルとして、Cohereの
chain_langchain.pyを上から実行する- ユーザーからの質問に回答するワークフローを、langchainのLCELを使って実装
- 動作確認のために、一番下の
# chain.invoke(input_example)のコメントを外す - Run allボタンで全実行
※ chain_langchain.pyでの検証時、エンドポイントがない旨のエラーが出た場合は./create-vector-db.pyをすべて実行してエンドポイントを再度作成してください。
前提: 動作検証が完了していること
- レビューアプリをデプロイし、人間がRAGの回答の評価をすることができます。
※ Databricks Free Edition環境だとデプロイできないかも
RAG_eval.pyを実行するdeployment_info.review_app_urlで出力されるurlにアクセスし、レビューする
- LLM-as-a-Judgeを使い、RAGの精度評価をします。
- LLM-as-a-Judgeとは、LLMを使ってRAGを評価する手法です。
- Mosaic AI Agent Evaluationの機能を使って評価します。
以下の4つの観点で評価します。
- Correctness(正確性):回答は正確か
- Context sufficiency(文脈充足性):回答に必要な情報を取得できたか
- Groundedness(根拠性):取得した情報に基づいて回答できているか
- Overall(総合性):上記三つが全て合格か
RAG_eval-LLM-As-A-Judge.pyを実行するmlflow.evaluate()で出力されたView run new_eval_run at:のurlのTracingタブで評価結果を確認できます。

