LoginSignup
2
1

サイトのFAQを自然言語検索できるRAGチャットをAWSで動かしてみた

Last updated at Posted at 2023-12-06

この記事について

この記事は SUPER STUDIO Advent Calendar 2023 の7日目の記事になります。

RAG(Retrieval Augmented Generation、検索拡張生成)とは

大規模言語モデル(LLM)に特定の情報を参照できるようにすることで、ユーザーの質問に対して、与えた情報から回答を生成する仕組みです。
FAQやナレッジデータベースなどの一次情報を指定することで、自然言語による一次情報の検索、および回答を返却することができるようになります。
AWSでは、検索エンジンサービスの「Amazon Kendra」と、生成AIサービスである「Amazon Bedrock」を組み合わせることで簡単に実現できます。

RAGチャットを動かしてみるには

手っ取り早くRAGチャット実行するには、AWSの生成AIワークショップの通りに手順を踏めばいいです。

このワークショップではRAGチャットだけでなく、文章要約や画像生成といったいろいろな生成AIについて、実際に動かして試すことができます。
構成図的には以下の通りです。

構成図

権限回りについての記述がないため、IAMロールの許可ポリシーの追加に困ったくらいで、本当に書いてある通りで問題ありません。

データソースの変更

このワークショップでは、RAGが参照する情報はS3バケットに配置したドキュメントファイルを参照しますが、今回はインターネット上に公開しているサイトを読み込ませたいので、そこだけ手順を変更します。

今回読み込ませるサイトについては、弊社が提供している統合コマースプラットフォーム「ecforce」のFAQを使用します。

ecforce faq

ワークショップの手順「3.データの追加」で上記サイトのURLを読み込ませるようにしてみます。
まず、「3.1 S3へのアップロード」はスキップして構いません。
次に「3.2 KendraとS3の連携」を以下のようにします。

元の手順では、Kendraのデータソースとして「Amazon S3 Connector」を指定しますが、ここでデータソースを下にスクロールしていくと「Web Crawler V2.0」があるのでそちらを選択します。

スクリーンショット 2023-11-26 19.08.18.png

次にクローラーの設定です。
データソース名に適当な名前を設定して、Default languageは日本語のサイトなので「Japanese(ja)」を選択します。

スクリーンショット 2023-11-26 19.10.46.png

クロール対象はFAQのURLを入力します。

スクリーンショット 2023-11-26 19.12.44.png

あとはデフォルトのままで設定完了です。
最後に同期の頻度はオンデマンドにしているので、Sync now で手動で同期させます。
今回のFAQでは、クローリングからインデックスの作成まで3時間弱くらいで完了しました。

RAGチャットを使ってみる

あとはワークショップの手順通りにアプリを立ち上げて、RAGチャットを使用してみます。

スクリーンショット 2023-11-26 19.04.30.png

良い感じに回答が出力されました!
もう少し漠然とした質問をしてみます。

スクリーンショット 2023-11-26 19.53.25.png

クロールによってFAQ以外のページからも回答を検索して、うまく回答してくれています。
最後に少し見当違いな質問をしてみます。

スクリーンショット 2023-11-26 19.19.29.png

データソースに関係ない質問には答えないように制御できていますね。

まとめ

巷ではChatGPT勢の話題に比べて、Amazon Bedrockは盛り上がりに欠けていますが、検索サービスであるAmazon Kendraをうまく組み合わせれば、コードをほとんど書かなくてもサイトのクローリングからLLMによる自然言語検索が簡単に実装できることがわかりました。
微調整には時間がかかるかもしれませんが、PoCレベルであれば十分な性能であると感じました。
ちなみにコストは3日使って4ドルでした(利用が済んだらリソースの削除はお忘れなく)。

追記

こんなことしていたら、AWS re:Invent 2023でAmazon Qが発表されましたね。
もっとお手軽にRAGチャットが使えるようになりますね。

2
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
2
1