Amazon Q Business と S3 を連携してみた

2024年4月30日に一般提供になった Amazon Q Business を S3 と連携してみました
2024.05.14

目的

クラスメソッドタイランドの清水です。
2024年4月30日に Amazon Q Business の一般提供が開始されました。

様々なデータソースから学習する生成 AI を手軽に使えるサービスで、2024年5月13日現在は、us-west-1 と us-east-1 でのみ提供されています。
本記事では、Amazon Q Business と S3 を連携し、S3 にアップロードしたテキストについてチャットで質問を投げてみたいと思います。

手順

まずは、us-east-1 と us-west-1 のどちらで Amazon Q Business を使うかを決めます。
この記事では us-east-1 で進めます。

IAM Identity Center の Instance を作成する

Amazon Q Business を使うには IdP を事前に用意しておく必要があります。
今回は IAM Identity Center の Account Instance を使いました。

⚠️ IAM Identity Center は Amazon Q Business と同じ、つまり今回は us-east-1 で作成する必要があります。
また、 IAM Identity Center の Account Instance は 1つのアカウントにつき1つのリージョンでしか作成できないので、すでに他のリージョンに Instance がある場合はそれを削除して目的のリージョンで Instance を作るか、別の IdP を使う必要があります。
現時点で AWS のドキュメントで紹介されている別の IdP は Entra ID, Okta, PingIdentity です。

学習させるデータを S3 に置く

今回は yuta-qbusiness-test という名前で us-east-1 にバケットを作りました。
prefixdata として、Kendra のドキュメント[1]から拝借したサンプルデータ tutorial-dataset.zip を解凍して格納しています。

⚠️ S3 バケットも Amazon Q Business と同じ us-east-1 で作成する必要があります。

Amazon Q Business の Application を作成する

スクリーンショットで今回の設定をご紹介します。

  1. マネジメントコンソールで us-east-1 を選び、 Amazon Q Business > ApplicationsCreate application をクリックします
  2. Step 1 でアプリケーション名を指定し、 Service access で service-linked role を指定します
  3. Step 2 で Retriever を選びます。今回は native retriever を使います Amazon Kendra を使うこともできます。
    ⚠️ ドキュメントによると Retriever は後で変更できない[2]ので注意してください
  4. Step 3 で S3 のデータソースを追加します。 バケット yuta-qbusiness-test を使って、kendra-sample という名前で登録します。
    IAM Role は Amazon Q Business に作ってもらいます。
  5. Step 4 で IAM Identity Center に登録しておいたユーザーを選びます ここで選んだユーザーを使って、後ほど発行されるチャット画面にログインします。

チャット画面を開いてみる

これで Application が完成したので、チャット画面に移動してみます。

Amazon Q Business > Applications を開き、作成した application の Web experience URL を開きます。

IAM Identity Center の認証画面に移動するので、認証を済ませるとチャットの UI が表示されます。

現在は英語に最適化されている[3]ようなので、英語で質問を投げてみましょう。

まだ Application が何も学習していないのでうまく答えられていないです。
次に S3 のデータを同期して同じ質問を投げてみたいと思います。

Amazon Q Business にデータソースのデータを同期する

  1. Amazon Q Business > Applications > blog-qbusiness-application で先程作成した S3 のデータソースを選択し、Sync now をクリックします。
  2. 同期の状況を CloudWatch で観察:Amazon Q Business > Applications > blog-qbusiness-application > kendra-sampleView in CloudWatch をクリックします
  3. CloudWatch Logs Insights の画面に遷移しますが、処理に時間がかかるようなので数分待つとログが見れます。

もう一度チャットで質問してみる

しばらく時間が経つと同期が終わるので、もう一度チャットで同じ質問をしてみます。

今回はちゃんと回答してくれました!
ソースまできちんと提示してくれるので、回答の根拠となる情報を取得するのも非常に簡単ですね。

最後に

今回は新しく一般提供になった生成 AI 搭載アシスタント である Amazon Q Business で S3 バケットのデータを連携してみました。
他にも Google Drive, Gmail, MySQL, Slack, Zendesk など様々なデータソースと連携することが可能です。
今までは担当者に聞かなくてはならなかったことも AI に聞けばソース付きで答えてくれるというのはものすごく便利ですね。

参考

[1] Step 1: Adding documents to Amazon S3. (n.d.). Amazon Kendra. Retrieved May 13, 2024, from https://docs.aws.amazon.com/kendra/latest/dg/tutorial-search-metadata-add-documents.html
[2] Creating and selecting a retriever for an Amazon Q Business application. (n.d.). Amazon Q Business. Retrieved May 13, 2024, from https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/select-retriever.html
[3] Supported languages for Amazon Q Business. (n.d.). Amazon Q Business. Retrieved May 13, 2024, from https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/supported-languages.html