こんにちは。AWS CLIが好きな福島です。
はじめに
前回に引き続き、AWSを利用したチャットボットアプリの構成例をご紹介いたします。
チャットボットアプリのイメージ
※補足
KendraのWeb Crawlを使ってサーバーワークスの役員情報を取得しております。 ユーザーから質問があったら、ECS上でLangChainを使って、Kendraで検索しつつ、検索結果を基にBedrockを使い回答を生成しています。
構成
基本的には前回のブログでご紹介した構成と変わらないのですが、 ベクターストアとして利用していたS3,Lambdaの部分を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,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円費用が発生します。
S3,Lambdaの構成の場合は、ほとんど利用料がかからないため、コストの点ではS3,Lambda構成が優位かと存じます。
終わりに
今回は、AWSを利用したチャットボットアプリの構成例をご紹介いたしました。
生成AIについてご興味がありましたら、ぜひサーバーワークスにご相談ください!