内容
Amazon Bedrockでは構築したRAGシステムをLLMを使用して評価する仕組みがあります。
RAGの評価ジョブを作成する際には、以下の2つの評価タイプを選択できます。
- 取得のみ:検索結果のみを評価する
- 取得と生成:検索結果と生成された回答を評価する
今回は「取得のみ」の方を見てみます。なお、具体的な設定方法は本記事では割愛させて頂きます。
仕組み
⓪評価用データセットの準備
評価用データセットはプロンプト(質問)と正解データの組合せです。こちらに記載の通りJSONL形式で作成してS3に保存しておきます。注意点としてこちらに記載の通り、S3バケットのCORSアクセス許可の設定が必要です。下記は評価用データセットの例です。
{"conversationTurns":[{"prompt":{"content":[{"text":"貴社の製品に推奨されるサービス間隔はどれくらいですか?"}]},{"referenceResponses":[{"content":[{"text":"当社製品の推奨サービス間隔は2年です。"}]}]}]}
①関連情報の取得
評価用データセット内のプロンプト情報(上記だと貴社の製品に推奨されるサービス間隔はどれくらいですか?
)を使用してナレッジベースのベクトルDBから関連情報を取得します。
②評価者モデルの呼び出し
取得した関連情報、評価表データセットのプロンプト、正解データを使用して評価者モデル用のプロンプトを作成します。このプロンプトを使用して評価者モデルを呼び出します。
③評価結果の取得
評価者モデルが評価した結果をS3バケットに保存します。
取得結果の確認
「取得のみ」タイプの評価では品質に関する下記2つのメトリクスが取得可能です。
- コンテキストの関連性:取得情報がプロンプト(質問)にどれほど関連しているか評価
- コンテキストカバレッジ:取得情報が正解データどれだけ網羅しているかを評価
これらのスコアは全会話の平均値になります。今回はテスト用に20個のデータを用意しましたが会話毎のスコアも確認することが可能です。
評価者モデルをClaude 3 Haiku(紫)からClaude 3 Sonnet(水色)に変更して評価を2回実施し結果を比較しまひた。Sonnetの方が、関連性はやや下がりましたが、コンテキストカバレッジが改善されたことが分かります。