AWS Bedrock Knowledgebase 開発メモ


質問の回答がまったく出鱈目、ちょっとずれる場合などは検索方法が間違っている可能性がある。「Semantic Search」に変更して試す。

〇Default search
Amazon Bedrock が検索戦略を決定します。


〇Hybrid search (semantic & text)
セマンティックおよびテキスト検索からの関連性スコアを組み合わせて、より高い精度を提供します。


●Semantic search
ベクトル埋め込みを使用して、関連する結果を提供します。






サポートされるデータソース内のファイル

サポートされるファイルは次の通り。

プレーンテキスト .txt
マークダウン .md
HyperText マークアップ言語 .html
Microsoft Word ドキュメント .doc/.docx
カンマで区切られた値 .csv
Microsoft Excel スプレッドシート .xls/.xlsx
ポータブルドキュメント .pdf

ソースチャンクとは

うまく回答されない場合は「ソースチャンク 1」で結果を確認する。必要な結果が切れていたりする。ナレッジが理解できるようにソースのファイルをコンパクトにする。(不要なデータを削除するなど)あるはチャンクのサイズをあらかじめ大きくする。(後では変更できない)

データをナレッジベースに取り込む際に、Amazon Bedrock は各ファイルをチャンクに分割します。ナレッジベースにクエリを実行したときにチャンク単位で戻されます。
Amazon Bedrock には、データをチャンク化するために使用できるチャンク化戦略が用意されています。また、ソースファイルを自分でチャンク化してデータを前処理することもできます。

(設定場所:データソース→詳細設定→チャンク戦略)

(1)デフォルト
デフォルトでは各チャンクには最大で約 300 個のトークンが含まれます。300 個未満のトークンしか含まれない場合は分割されません。

(2)チャンクサイズの指定
ユーザがサイズを指定する

(3)チャンク化なし
Amazon Bedrock は各ファイルを 1 つのチャンクとして扱います。その場合S3 バケットにアップロードする前に、ドキュメントを別々のファイルに分割する必要がある。



メタデータによるフィルタリング




同期

マネコン上では同期は手動でしかできない。(自動同期はない)

Python では次のコードで同期が可能。これを一定間隔でループなどして自動更新とする。

(*)2024年現在ではこのプログラムでBedrock ナレッジベースを更新しても Bedrock Agent では反映されなかった。明示的にマネコン上のナレッジベースで更新する必要があった。

 import boto3

KnowledgeBaseId="**********"
DataSourceId="**********"

#client = boto3.client('bedrock-agent')
client = boto3.client('bedrock-agent', region_name='us-east-1')


response = client.start_ingestion_job(
knowledgeBaseId=KnowledgeBaseId,
dataSourceId=DataSourceId
)



エラーメッセージ

(1)

ナレッジベースを削除しようとしたところ、次のエラーが発生。

Delete unsuccessful
Unable to delete data from vector store for data source with ID **********. Check your vector store configurations and permissions and retry your request. If the issue persists, consider updating the dataDeletionPolicy of the data source to RETAIN and retry your request.

データソースを変更しようとしても次のエラー

undefined The policy is attached to 0 entities but it must be attached to a single role

原因はOpenSearchのコレクションが削除されていたこと。ナレッジから消す方法は引き続き調査中。(2024/6)



(2)

【Q】An error occurred (ConflictException) when calling the StartIngestionJob operation: There is an ongoing ingestion job for this knowledge base ・・・

エラーが出てナレッジベースのデータ同期に失敗する。

【A】

原因不明。S3のファイルの一部を再生成したところ復帰。

【Q】「リソースのロード中」でデータソースがいつまでも表示されない。よって質問もできないし「同期」ボタンもグレイアウトされたまま押せない。

【A】原因不明。S3ファイルに変更があったからかもしれない。5分程度まって解消した。2024/6











[ AWS Bedrock まとめに戻る]



【注意事項】本ページの内容は個人的に調査した結果がであり内容が正しいことは保証されません。
またAWSサービスは常に改良、アップデートされており本ページの内容が古く誤った内容になる可能性もあります。変更になっても本ページが正しく更新されるとは限りません。
あくまでも参考程度でご覧ください。内容により発生したいかなる時間的損害、金銭的損害、その他の損害に関しても何人も保証しません。