chisataki’s blog

リコリス・リコイルじゃありません

Kendra+LLM+LangChainでRAG実装する

この記事はAWSブログ記事の内容をまとめたものです:高精度な生成系 AI アプリケーションを Amazon Kendra、LangChain、大規模言語モデルを使って作る


記事の概要

LLMとAWS Kendraを連携させることで、

  • LLMからの応答をKendraに保存されたドキュメントのみに絞ることができる

  • 応答の元になったドキュメントのURLを提示してくれる

単語の説明

RAGとは LLM出力のアップデートが可能(最新検索結果に対応させる、企業データに限定するなど)

LLMとは 大規模言語モデルのこと

Kendraとは 単語の列ではなく自然な言語で資料検索できるAWSサービス

LangChainとは LLMとKendraを簡単に統合できるフレームワーク LangChain詳細


RAGサンプルアプリを動かしてみる

構成図


対象LLM

Hugging Face、AI21 Labs、Cohere、Anthropic、OpenAI. (今後, Bedrock (Amazon Titan等)も含まれる予定).

実装手順
  1. 公開されている AWS CloudFormationの テンプレートを利用して、新しい Amazon Kendra インデックスを作成します。


2. AWS SDK for Python (boto3) をインストール pip install boto3


3. LangChain をインストール pip install langchain


4. 興味のある LLM の API キーの取得 例:OpenAI https://openai.com/


5. GitHub repoから、KendraIndexRetriever インターフェイスとサンプルアプリケーションをインストール


6. 環境変数を以下のように設定
export AWS_REGION=""<YOUR-AWS-REGION>""
export KENDRA_INDEX_ID=""<YOUR-KENDRA-INDEX-ID>""
export FLAN_XL_ENDPOINT=""<YOUR-SAGEMAKER-ENDPOINT-FOR-FLAN-T-XL>""
export FLAN_XXL_ENDPOINT=""<YOUR-SAGEMAKER-ENDPOINT-FOR-FLAN-T-XXL>""
export OPENAI_API_KEY=""<YOUR-OPEN-AI-API-KEY>""
export ANTHROPIC_API_KEY=""<YOUR-ANTHROPIC-API-KEY>"""


7. GitHub リポジトリをCloneした場所の samples サブディレクトリに移動


8. コマンドラインpython sample-file-name.py の実行
出力例(Flan-T-XXLモデル):

"Amazon SageMaker is a machine learning service that lets you train and deploy models in the cloud.
Sources: https://docs.aws.amazon.com/sagemaker/latest/dg/data-parallel-intro.html https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-projects-whatis.html https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.html"


引用元へのリンクとともに回答してくれる。


以上