【Amazon Bedrock】AWSを利用したチャットボットアプリの構成例②について(Streamlit,LangChain,Amazon Kendra)

記事タイトルとURLをコピーする

こんにちは。AWS CLIが好きな福島です。

はじめに

前回に引き続き、AWSを利用したチャットボットアプリの構成例をご紹介いたします。

blog.serverworks.co.jp

チャットボットアプリのイメージ

※補足

KendraのWeb Crawlを使ってサーバーワークスの役員情報を取得しております。 ユーザーから質問があったら、ECS上でLangChainを使って、Kendraで検索しつつ、検索結果を基にBedrockを使い回答を生成しています。

構成

基本的には前回のブログでご紹介した構成と変わらないのですが、 ベクターストアとして利用していたS3,Lambdaの部分をKendraに変更(図の右下)しております。

前回の構成から右下の部分をkendraに変更

構成の説明

Kendra以外は前回のブログで説明した内容と変わりませんので、Kendraの部分に焦点を当てて説明します。 また、S3,LambdaとKendraの構成を比較した内容を記載します。

結論

先にざっくり結論を記載いたします。

Kendraは高機能ですが、S3,Lambdaの構成に比べるとコストが高くなります。 S3,Lambdaの構成の場合、コストは安いですが、高機能化のためには作り込みが必要になります。

そのため、高機能を求めずコストを抑えて生成AIを検証してみたい場合はS3,Lambda構成を、 コストを気にせず高機能を求める場合はKendraの構成にするのが良いかと存じます。

複数のデータソースとの連携が容易

S3,Lambdaの構成ではコードの記述が必要ですが、Kendraはフルマネージドサービスなので、 コンソールからの操作で簡単にデータソースと連携が可能です。

一方、S3,Lambdaの構成で複数のデータソースを取り込むには、データソースごとにカスタマイズが必要です。 そのため、複数のデータソースと連携する場合は、Kendraが便利です。

## Kendraで取り込めるデータソース
Adobe Experience Manager
Alfresco
Amazon FSx
Amazon Kendra Web Crawler
Amazon RDS (Microsoft SQL Server)
Amazon RDS (MySQL)
Amazon RDS (Oracle)
Amazon RDS (PostgreSQL)
Amazon S3 buckets
Amazon WorkDocs
Aurora (MySQL)
Aurora (PostgreSQL)
Box
Confluence
Custom data sources
Database data sources
Dropbox
Drupal
GitHub
Gmail
Google Workspace Drives
IBM DB2
Jira
Microsoft Exchange
Microsoft OneDrive
Microsoft SQL Server
Microsoft SharePoint
Microsoft Teams
Microsoft Yammer
MySQL
Oracle Database
PostgreSQL
Quip
Salesforce
ServiceNow
Slack
Zendesk

ソースURLの表示

S3,Lambdaの構成では、以下の通りソースURLを表示することはできますが、実際にアクセスすることができません。 これもカスタマイズによってユーザーがアクセスできるURLを表示することは可能ですが、手間がかかります。

イメージ

一方、Kendraの構成ではS3,Lambdaの構成に比べユーザーがアクセスできるURLを容易に表示できます。

データの差分更新

データソースのデータは日々更新されるため、最新のデータをS3やKendraに取り込む必要があります。 また、フルでデータを取り込むと時間がかかるため、差分だけを取り込みたいのですが、 S3,Lambdaの構成では、差分データだけを取り込む仕組みを作るのに手間がかかります。

一方、全てのデータソースを確認はできていないのですが、 Kendraでは以下のように差分データだけを取得するオプションがあります。 (参考にS3とBoxの設定イメージを以下に記載しています。)

S3の差分同期設定

Boxの差分同期設定

取り込めるドキュメント数

作り込み次第かもしれませんが、S3,Lambda構成の場合は、S3に存在するドキュメントをダウンロードし、そのデータを基にベクターストアを作成します。 (更新する場合も今まで取り込んだドキュメントを含めてベクターストアを再作成するイメージになります。) また、Lambdaには15分でタイムアウトする仕様があるため、そこまで多くのドキュメントを取り込めないと考えています。

その点Kendraの構成の場合、エディションに応じて以下の通りドキュメントを取り込めます。

Developer Edition: 最大 10,000 ドキュメント
Enterprise Edition: 最大 100,000 ドキュメント

Kendraの利用料

ここまでの説明で、KendraがS3,Lambdaより優れていると思われるかもしれませんが、高機能なKendraはそれに応じた利用料がかかります。

詳細は以下をご確認いただければと思いますが、最低でもDeveloper Editionで810 USD、Enterprise Editionで1,008 USDでかかります。 1ドル150円で計算すると、Developer Editionで毎月121,500円、Enterprise Editionで毎月151,200円費用が発生します。

aws.amazon.com

S3,Lambdaの構成の場合は、ほとんど利用料がかからないため、コストの点ではS3,Lambda構成が優位かと存じます。

終わりに

今回は、AWSを利用したチャットボットアプリの構成例をご紹介いたしました。

生成AIについてご興味がありましたら、ぜひサーバーワークスにご相談ください!

福島 和弥 (記事一覧)

2019/10 入社

AWS CLIが好きです。

AWS資格12冠。2023 Japan AWS Partner Ambassador/APN ALL AWS Certifications Engineer。