Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Knowledge Bases for Amazon Bedrockのデータソース対応と脚注付与方法の改善 #619

Merged
merged 3 commits into from
Aug 30, 2024

Conversation

toco8
Copy link
Contributor

@toco8 toco8 commented Aug 25, 2024

Description of changes:

本プルリクエストでは、RAG チャット (Knowledge Base) 機能に以下の2点の変更を行いました。

  1. Knowledge Bases for Amazon Bedrock の追加データソースへの対応
  2. 後処理の脚注付与方法の改良

変更の概要

1. Knowledge Bases for Amazon Bedrock の追加データソースへの対応

  • 目的: Knowledge Bases for Amazon Bedrock が Web クローラー等の新たなデータソースに対応したため、S3 以外のデータソースをデプロイ済みの Knowledge Base に追加した際に RAG チャットで利用できるようにするための変更です
  • 変更点:
    • convertS3UriToUrl 関数を修正し、変換に失敗した場合は元の URI をそのまま返すよう変更しました。

      変更によって、S3 以外のデータソース利用時に脚注の URI が空になる問題に対応しました。

    • retrievedItemsKendraFormat の生成方法を変更し、location?.s3Location?.uri の代わりに各種データソースで共通して URI を取得できる metadata?.['x-amz-bedrock-kb-source-uri'] を使用するよう変更しました。

      location キーを用いる場合はデータソースごとに異なる名称が返却されるため、参照先を変更しています。変更にあたって、 Retrieve - Amazon Bedrock を参照しました。

2. 後処理の脚注付与方法の改良

  • 目的: データソースに長大な 1 ファイルを読み込ませた際に、同じ URI に別の脚注番号が割り当てられることを防ぐための変更です。
  • 変更点:
    • 本文中の脚注番号に紐づく URI を取得し、重複する場合は脚注番号を置き換える処理を追加しました。

    • 脚注番号の重複排除と併せて、本文中の脚注番号を 1 番から始まる連番に振りなおす処理を追加しました。

      現行は順不同で 0 番始まりです。

    • URI 内の括弧のエスケープ方法をパーセントエンコーディングに変更しました。

      Markdown として本文をコピーした際に、そのままでは URI として機能しない問題に対応しました。

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@tbrand
Copy link
Contributor

tbrand commented Aug 30, 2024

PR ありがとうございます!進め方のご提案をさせてください!大きく 2 点修正していただいていて「1. Knowledge Bases for Amazon Bedrock の追加データソースへの対応」についてはすぐにでも取り入れたい修正内容です!一方「2. 後処理の脚注付与方法の改良」に関しては、もしかすると今後 KB にページ番号などのメタ情報が付与された際にリンクに反映させたいと思っており (そのような変更が入ることは全く確定しておりませんが) それを踏まえたデータ構造が理想的で、議論の余地があると思っています。そこで、一旦 (1) と (2) を切り離していただくことは可能でしょうか?

@toco8
Copy link
Contributor Author

toco8 commented Aug 30, 2024

@tbrand
ご確認いただきありがとうございます。(1) と (2) を切り離すことは可能です。新たに「1. Knowledge Bases for Amazon Bedrock の追加データソースへの対応」のみを含むコミットを追加しましたので、ご確認いただけますと幸いです。
「2. 後処理の脚注付与方法の改良」については、議論の余地があるとのこと承知いたしました。
動作確認時にretrievedItemsKendraFormatにヒットしたチャンクが含まれていることを確認しており、マネジメントコンソールの「ナレッジベースをテスト」と同様にどこでヒットしたか表示する場合は重複排除はしない方がよいと考えています。
引き続き、よろしくお願いいたします。

Copy link
Contributor

@tbrand tbrand left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ありがとうございます!LGTMです!

@tbrand tbrand merged commit 91bd159 into aws-samples:main Aug 30, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants