Amazon Bedrock Knowledge Bases で RAG の評価機能

:::note info
2024/12現在 パブリックプレビュー

2025/03 GA 
https://aws.amazon.com/jp/about-aws/whats-new/2025/03/amazon-bedrock-rag-evaluation-generally-available/
:::


# 内容

AWS re:Invent 2024 で発表があった Amazon Bedrock Knowledge Bases で RAG の評価機能に対応したことんについてシンプルに纏めます。

https://aws.amazon.com/jp/about-aws/whats-new/2024/12/amazon-bedrock-knowledge-bases-rag-evaluation-preview/

https://aws.amazon.com/jp/blogs/news/new-rag-evaluation-and-llm-as-a-judge-capabilities-in-amazon-bedrock/

- アップデート内容はタイトル通り


# 設定

## 前提

- ナレッジベースを構築済みであること

## 評価対象となるファイルの準備

評価対象となるファイルは JSONL ファイルである必要があります。
次の通り`期待される回答内容`と`質問内容`を記載します。

```bedrock-kb.jsonl
{"conversationTurns":[{"referenceResponses":[{"content":[{"text":"AWS CLIをインストールする方法は以下の通りです：\n\ncurl コマンドを使用して、AWS CLIのインストールファイルをダウンロードします。\n\nダウンロードしたzipファイルを解凍します。\n\nインストールスクリプトを実行します。\n\n具体的なコマンドは以下の通りです：\n\n$ curl \"https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip\" -o \"awscliv2.zip\"\n\nunzip awscliv2.zip\n\nsudo ./aws/install\n\nこれにより、AWS CLIがシステム全体にインストールされます。\n\nまた、AWS CLIの現在のインストールを更新する場合は、以下のコマンドを使用します：\n\n$ curl \"https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip\" -o \"awscliv2.zip\"\n\nunzip awscliv2.zip\n\nsudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update\n\nなお、インストール方法には他にも、特定のバージョンをインストールする方法、ソースからビルドしてインストールする方法、Amazon ECR Public/Dockerを使用する方法、AWS CloudShellを使用する方法などがあります。"}]}],"prompt":{"content":[{"text":"AWS CLIのインストール方法。"}]}}]}
```

これを S3 バケットに配置しておきます。

## CORS の設定

S3 バケットが クロスオリジンリソース共有 (CORS) 許可で設定されている必要がありますので、ドキュメント通り設定しておきます。

https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/model-evaluation-security-cors.html

## Evaluations の設定

[Evaluations] から [Knowledge Bases] より「Create」をクリック。
![スクリーンショット 2025-01-28 0.42.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/ae951db8-b1ef-9bde-0da5-ba91b25817f3.png)

どのモデルで評価をするかを [Evaluator model] で、「Claude 3.5 Sonnet」を選択。
![スクリーンショット 2025-01-28 0.43.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/b5624d7b-7826-f85d-1173-b7b749a7dc90.png)

[Choose a Knowledge Base] に作成済みの「ナレッジベース」、
[Knowledge Base evaluation type] は、「[Retrieval and Response generation](https://docs.aws.amazon.com/ja_jp/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html)」を選択。なお、「[Retrieval only](https://docs.aws.amazon.com/ja_jp/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html)」での評価も可能です。
[Response generator model] には、「Claude 3.5 Sonnet」を使います。
![スクリーンショット 2025-01-28 0.51.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/6a0cd3cb-ee7f-3105-c782-8af89373b678.png)

評価するためのメトリクスを選択します。生成AIで求められる一般的な評価項目です。

- 品質

|メトリクス|説明|
|---|---|
|有用性|質問に答える際の応答がどれだけ有用で総合的であるかを測定します。|
|正確さ|質問に対する回答がどれだけ正確であるかを測定します。|
|論理的一貫性|回答に論理的なギャップ、矛盾、または矛盾がないかどうかを測定します。|
|忠実|応答の事実上の正確性と、応答が幻覚をどの程度回避できるかを測定します。|
|完全|質問のすべての部分に回答がどの程度完全であるかを測定します。|

- 責任あるAI

|メトリクス|説明|
|---|---|
|有害|憎悪、侮辱、暴力を用いた反応がどれほど有害であるかを測定します。|
|拒否|質問に答えることを拒否する回答がどれだけ回避的であるかを測定します。|
|ステレオタイプ化|回答における個人またはグループに関する一般化された記述を測定します。|

![スクリーンショット 2025-01-28 21.22.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/47972047-02f7-9373-dee9-8d77027ffa63.png)

[Dataset for evaluation]には評価対象とする S3 バケットの jsonl ファイルを選択します。

`s3://<S3バケット名>/src/bedrock-kb.jsonl`

[Results for evaluation]には評価結果を保存する S3 バケットを選択します。

`s3://<S3バケット名>/dst`

![スクリーンショット 2025-01-28 21.46.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/6e0342e8-54a2-4dd2-891c-f5d1a1beed17.png)

「作成」しましたが、以下のエラーでそもそも作成ができない。。。

```
評価ジョブの作成中にエラーが発生しました
The system encountered an unexpected error during processing. Try your request again.`
```

色々確認してみたが原因不明。。。

CloudTril のログも確認してみたが、`InternalServerException`。。。

```
    "errorCode": "InternalServerException",
    "errorMessage": "The system encountered an unexpected error during processing. Try your request again.",
```

時間を空けてまた試してみたいと思います。

※ 2025/03追記
上記のエラーはどうやら、「configurations」を設定して回避するようです。
![スクリーンショット 2025-04-21 18.55.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/53590c08-a1c3-4ef6-8d07-d7a5d895594e.png)