このリポジトリには、GenAI AWS サービスを使用してプライベート ドキュメントに関連する質問に回答できる Q&A アプリを構築する方法に関する実践的な例が含まれています。
以前、Azure OpenAI GPT-4 と Pinecone を使用して Q&A アプリを構築しました(ここで見つけることができます) 。
このリポジトリでは、まったく同じアプリを構築しますが、AWS サービス (+ UI には Streamlit) のみを使用します。
より正確に言うと、アプリには次のアーキテクチャがあります。
そして、次のテクノロジーが使用されています。
このリポジトリには次のアプリが含まれています。
Streamlit
アプリ。利用可能な AWS Bedrock LLM モデルの 1 つを使用して、AWS Kendra に保存されているデータをクエリできます。プライベート ドキュメントは s3 バケットに保存されています。
Kendra Index は s3 コネクタを使用するように構成されています。インデックスは、新しいコンテンツがないか N 分ごとに s3 バケットをチェックします。バケット内で新しいコンテンツが見つかると、自動的に解析されて Kendra データベースに保存されます。
ユーザーがStreamlit
アプリを通じてクエリを実行すると、アプリは次の手順に従います。
Streamlit
アプリを使用する代わりに、RAG パターンをセットアップする手順を段階的に実行したい場合は、これを正確に実行できる Jupyter ノートブック ( /notebooks/rag-with-langchain.ipynb
) があります。
Streamlit
アプリは、RAG パターンを実装するためにLangChain
ライブラリを多用します。サードパーティのライブラリを使用せず、 boto3
ライブラリのみを使用して RAG パターンをセットアップしたい場合は、これを実行できる 2 番目の Jupyter ノートブック ( /notebooks/rag-with-only-boto3.ipynb
) を使用します。 。
/infra
フォルダーには、アプリが適切に機能するために必要なすべての AWS サービスを作成する一連の Terraform ファイルがあります。
これらの Terraform ファイルは次のリソースを作成します。
アプリケーションを実行する前に、知っておく必要がある前提条件がいくつかあります。
「モデル アクセス」セクションには、アクセスできる LLM とアクセスできない LLM の概要が表示されます。
このアプリケーションを完全に使用するには、すべての AWS Bedrock サードパーティ LLM にアクセスできる必要があります。
boto3
はローカル マシン上の AWS 構成ファイルのdefault
プロファイルから AWS 認証情報を取得するように設定されています。 boto3
資格情報を構成するための複数のアプローチの概要については、次のリンクにアクセスしてください。
アプリを実行する前に、 「AWS インフラストラクチャと前提条件」セクションをお読みください。
リポジトリには、アプリが正常に実行するために必要な環境変数を含む.env
ファイルがあります。
KENDRA_INDEX='<kendra-index>'
AWS_BEDROCK_REGION='<bedrock-region>'
AWS_KENDRA_REGION='<region-where-kendra-index-is-deployed>'
それに応じて値を変更します。
pip install -r requirements.txt
Streamlit
インストールすると、コマンドライン (CLI) ツールもインストールされます。このツールの目的は、 Streamlit
アプリを実行することです。
アプリを実行するには、次のコマンドを実行するだけです。
streamlit run app.py
このリポジトリには、コンテナ上でアプリを実行したい場合に備えて
Dockerfile
があります。
docker build -t aws-rag-app .
docker run -p 5050:5050
-e KENDRA_INDEX="<kendra-index>"
-e AWS_BEDROCK_REGION="<bedrock-region>"
-e AWS_KENDRA_REGION="<region-where-kendra-index-is-deploy>"
-e AWS_ACCESS_KEY_ID="<aws-access-key>"
-e AWS_SECRET_ACCESS_KEY="<aws-secret-access-key>"
aws-rag-app
app.py
更新しました。boto3
およびbotocore3
ホイール ファイルを削除しました。 Bedrock に対応したboto3
がついに公開されました。