Amazon Bedrock for KnowledgeBase で関連性のある複数の質問に正確に回答できるか

# ナレッジベース環境

前提としてナレッジベースの環境は次の通り作成しています。

- ベクトルデータベース: Amazon Aurora
- 埋め込みモデル: Titan Text Embeddingsv2
- チャンキング戦略: Semantic chunking
- Parsing strategy: Claude 3.5 Sonnet v1 (Bedrock model parsing)
    ※ Parsing strategy を Amazon Bedrock default parser
ではなく、Claude 3.5 Sonnet v1 (Bedrock model parsing)を選択したかは検証3で説明します

- LLM: anthropic.claude-3-5-sonnet-20241022-v2:0                              
- temperature: 0.1
- topP: 0.9

ナレッジベースの作り方は他の沢山の方が記事を出していると思いますので、他の方の記事やAWSドキュメントを参考にして下さい

# 検証1

![スクリーンショット 2025-02-21 23.42.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/0f56320c-c193-4361-82fe-16fa9a380b52.png)

-  映画ランキング.pdf
   -  令和6年の邦画と洋画のランキング

- キングダム_大将軍の帰還.pdf
   -  Wikipediaの情報。概要や出演者や監督などの情報

- 山崎賢人.pdf
   -  Wikipediaの情報。山崎賢人の情報

をデータソースとして使います。

`「令和6年の邦画のランキング3位を教えて下さい。また、主演を演じた俳優と誕生日を教えて。」`と質問します。

この場合、
　①`邦画のランキング3位`であることは、「映画ランキング.pdf」
　②`主演が山崎賢人`であることは、「キングダム_大将軍の帰還.pdf」
　③`山崎賢人の誕生日`は、「山崎賢人.pdf」
に書かれており、この情報を回答してくれることを期待します。


## "numberOfResults":  10 に設定してみる

うーん、①だけしか回答してくれません。

![スクリーンショット 2025-02-22 1.09.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/02d05df8-4efb-4214-9f2a-0b9ea18905a4.png)

## "numberOfResults":  50 に設定してみる

うーん、これも①②だけしか回答してくれません。

![スクリーンショット 2025-02-22 1.08.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/518abecc-50dc-4bb6-b829-3772ab110f6f.png)

## "numberOfResults":  100 に設定してみる

①②③まで回答してくれました。

![スクリーンショット 2025-02-22 1.06.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/f01ac284-845e-4396-9da3-b6002f590351.png)

### 考慮点

今回はデータソースが少ないですが、

**複雑な質問に対しては、numberOfResultsを増やすと回答してくれる。**

ただし、numberOfResultsを増やすと、同じプロンプトに対して複数の異なる回答が生成され、各結果は確率的なサンプリングによって生成されるため、情報のばらつきが大きくなり、一部の回答が誤情報を含む可能性が高まるかなと思っています。

# 検証2

`「令和6年の映画のランキング3位を教えて下さい。」`と質問します。

データソースは検証1と同じです。

検証1よりシンプルな質問です。

ただし、邦画なのか洋画なのかはわからない状態なので、
　邦画では「キングダム 大将軍の帰還」
　洋画では「ウィッシュ」
の回答を期待します。

## "numberOfResults": 10 に設定してみる

うん、良い感じですね。

![スクリーンショット 2025-02-22 1.39.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/1094491e-1a76-4766-8f9f-37659d5022fa.png)

## "numberOfResults": 50 に設定してみる

邦画しか回答してくれませんね。

![スクリーンショット 2025-02-22 1.38.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/593b71f7-dece-45f6-9b7d-9464b51df898.png)

## "numberOfResults": 100 に設定してみる

邦画しか回答してくれませんね。

![スクリーンショット 2025-02-22 1.38.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/b1b05da5-a36f-4c66-bb08-90a0e644e83b.png)

### 考慮点

**シンプルな回答に関しては、numberOfResultsを小さくする必要がありそう**

# 検証3

冒頭で、Parsing strategy を Amazon Bedrock default parser ではなく、Claude 3.5 Sonnet v1 (Bedrock model parsing) を選択していましたが、Amazon Bedrock default parser で試してみます。

検証1と同じように、
　①`邦画のランキング3位`であることは、「映画ランキング.pdf」
　②`主演が山崎賢人`であることは、「キングダム_大将軍の帰還.pdf」
　③`山崎賢人の誕生日`は、「山崎賢人.pdf」
のこの情報を回答してくれることを期待します。

## "numberOfResults": 100 に設定してみる

おっと、①②③全て回答してくれなくなりました。

![スクリーンショット 2025-02-22 3.32.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/e947156e-cb5a-40e1-ae16-c4b4df7927c2.png)

## "numberOfResults": 50 に設定してみる

①②まで回答してくれるようになりました。

![スクリーンショット 2025-02-22 3.33.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/ac555c57-4dc3-47e3-a2bb-9755b8d41757.png)

①②まで回答してくれますが、③は回答しれくれないようです。

![スクリーンショット 2025-02-22 3.33.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/280929/2410ee1f-212b-4ee6-9e1c-ccf52d4de866.png)