LoginSignup
1
1

Bedrock + Kendra vs ChatGPT

Last updated at Posted at 2024-02-15

AWS社が公開しているBedrock + Kendraを用いたRAGアプリのハンズオンを実施しましたので、簡単にシェアしたいと思います

また、ChatGPのアップデートによりKendra+Bedrockと同様の振る舞いができるようになったため、簡単な性能比較を実施しました

Bedrock + Kendraを用いたRAGアプリ

システム概要

ハンズオンを実施すると、下記の図のような生成系AIを用いたChatサイトを構築できます
image.png


このサイトは事前に2136ページのPDFのマニュアルを読み込ませています

image.png

事前にドキュメントを読み込ませておくことで、検索結果をドキュメントの範囲に限定し、ハルシネーション(誤った発言)を軽減することが可能です

システム構成

システム構成は下記になります

image.png
S3に置いてあるPDFファイルをKendraが取得し、Bedrockと連携させることでドキュメントの範囲に限定した応答が可能になります
フロント画面はAmplifyを使用して作成します

構築時間

4時間程度

費用

826ドル/月 ※オレゴンリージョンで構築した場合
【内訳】

  • Kendraの利用料金(810ドル/月) ※最初30 日最大 750 時間の無料利用枠あり 
  • Fargate (0.5 vCPU, 1 GB Memory)(10ドル/月) 
  • Amplify(5ドル/月) 
  • Bedrock(1ドル/月) 

基盤モデル

Claude Instant ※安価で高速なモデル

機能・性能

  • Bedrockは入力データを再学習しないため安心して利用することができる
  • AWSのサンプルコードではClaude Instant以外の基盤モデルが使用できない
  • PDFの読み込みでも正しく文章を理解
  • 読み込んだデータが量は少なかったが、生成指示に対するOUTPUT精度は高い
  • 表示速度も悪くはない印象(5秒程度)
  • INPUTデータに出現しない単語を質問に含めると精度が落ちる
  • 図やグラフが多いドキュメントには不向き

Bedrock + Kendra vs ChatGPT

ChatGPTのファイル読み込み機能

ChatGPTの最近のアップデートによりファイル読み込み機能が追加され、Kendra+ Bedrockと同様の振る舞いが可能になりました

※ChatGPTでファイルを読み込ませるためには、「ChatGPT Plus」に登録する必要があります(料金は月20ドル)

下図の添付ボタンからファイルの読み取りが可能です
image.png

Kendra+Bedrock vs ChatGPT 性能比較

ChatGPTとKendra+Bedrockに同じINPUTデータと質問を与え精度を検証しました

質問 正解の回答 ChatGPTの回答 Kendra+Bedrockの回答
「JAXWS0220: Address in an EPR cannot be null」のエラーが出た際の対処方法を教えてください EPRのAddressに値が設定されている状態で、再度実行してください。 「JAXWS0220: Address in an EPR cannot be null」というエラーは、EPR (Endpoint Reference) のアドレスに値が設定されていないことを意味します。このエラーに対処するためには、EPRのアドレスに値を設定してから、処理を再度実行する必要があります。 このエラーは、EPR(Endpoint Reference)のAddressに値が設定されていないことを意味しています。対処方法は、EPRのAddressに値を設定した上で、再度処理を実行することです。
Java VMログの出力先は、変更できますか Java VMログの出力先は、変更できません。 Java VMのログの出力先は変更することができません​。 変更できません。
インスタンスを起動するコマンドを教えてください インスタンスを起動するコマンドはasadmin start-local-instanceです。 インスタンスを起動するためのコマンドは start-local-instance [instance_name] です。このコマンドを使用してサーバーインスタンスを起動することができます。詳細な利用方法や注意事項については、資料の「10.1 asadmin」と「10.1.2 asadminコマンドの共通オプション」のセクションを参照してください。 asadmin start-local-instance です。
セッションの永続化を無効にするにはどうすればいいですか 永続化の有効・無効は、IJServer クラスタのJVMオプション「-Dcom.fujitsu.interstage.jservlet.sessionrecovery.session.store」で指定します。 セッションの永続化(セッションの状態をディスクに保存する機能)を無効にする方法は、使用しているウェブアプリケーションサーバーによって異なります。例えば、Tomcatのようなサーバーでは、context.xml ファイルを編集してセッション永続化を無効にすることが一般的です。 セッションの永続化を無効にするには、定義名が「com.fujitsu.interstage.jservlet.sessionrecovery.session.store」の定義値を「off」に設定します。
Tomcat5.5ベースのServlet サービスでHttpSessionのgetAttribute(null) 呼出し時に、何が返却されますか NullPointerExceptionが発生します。 Tomcat 5.5 ベースの Servlet サービスで HttpSession の getAttribute(null) を呼び出した場合、NullPointerException が発生し、結果として null が返却されます。Servlet の仕様では、HttpSession の setAttribute メソッドのキーに null を指定することはできません。 HttpSessionのgetAttribute(null)呼び出し時にnullが返却されます。

検証結果

  • 精度はChatGPTと大差ないように感じました(個人の感想です)
  • 返答スピードはKendra+Bedrockの方が早い(ChatGPTは質問する度にファイルを添付する必要がある)
  • 両方とも図やグラフの内容までは読み取れない
  • 表の読み取りはChatGPTの方が得意
  • Kendra+BedrockはINPUTデータにURLを指定することが可能だが、ChatGPTではできない

付録

基盤モデルの選択において、完璧な基盤モデルなど存在せず、評価項目はトレードオフの関係であることが多いです
※AWS社の資料に合った図を載せます
image.png
業務で生成系AIを使用する場合は、お客様のユースケースに応じ、どの評価項目を優先するか最初に決めましょう

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1