※RAGの説明はRAGとはをご参照ください。
簡単な構築方法
生成 AI 体験ワークショップを実施すればRAGを簡単に構築できます。
このワークショップでは、Generative AI Use Cases JP (略称:GenU)を使います。
なお、このリポジトリには、RAG以外にも色々なユースケースに対する実装(チャット、RAG チャット、Agent チャット、Prompt Flow チャット、文章生成、要約、校正、翻訳、Web コンテンツ抽出、画像生成、映像分析)が、 MIT-0 Licenseで公開されています。
ざっくり手順
詳細な手順は前述のワークショップをご覧頂くとして、ざっくり手順は下記です。
- AWSアカウントを用意
- AWSマネジメントコンソール上で、Bedrockの生成AIモデルを有効にする
- リポジトリからgit clone
- cdk.jsonで、有効にする機能のフラグを適宜変更
- 検索対象のPDFファイルを用意
- AWS CLI、AWS CDKをインストール
- CDKでデプロイ
- URLにアクセスすれば使用可能
コスト
AWSアカウントを新規で申し込んだ方であれば、ほとんど無料利用枠で実行できます。ただし、OpenSearch Serverlessの料金はそれなりに発生しますので、Billingのアラーム設定は忘れずに設定しておきましょう。
具体的には、Knowledge Baseを利用した場合、検索対象のPDFファイル1つで何回か質問したら400円くらいかかりました。ほぼOpenSearch Serverlessの料金でしたので、検索対象のPDFファイルが大量にあるとコストが上がりそうです。
RAGとは
Retrieval-Augmented Generation(検索で強化された生成AI)の略です。「検索拡張生成」「取得拡張生成」と呼ばれています。
生成AIの嘘つき(ハルシネーション)をなるべく防ぐ方法として、検索対象のデータを渡し、それを元に応答を生成させます。
RAGでは何をしているか
生成AIに、質問文と、検索対象データから質問文に関係ある所だけピックアップしたデータを一緒にプロンプトとして渡して、嘘つきを防いでいます。
以下の3つの処理を組み合わせています。
- Retrieval(検索):有用な情報をデータベースやドキュメントから検索するプロセス。回答はこの中から探す。これにより、生成された応答の信頼性と正確性を向上させる
- Augmentation(強化):検索した情報を用いて、生成されるテキストの質を向上させるプロセス。ユーザの質問を適切な質問文に修正したり、検索結果の関連情報をプロンプト向けの参考情報にする
- Generation(生成):強化された情報を基に新しいテキストを生成するプロセス。このステップでは、ユーザーの質問や要求に対して適切な応答を作成する。いわゆる普通の生成AIの部分
また、Retrieval(検索)のために事前処理として、Store(データ整形)も実施します。
- Store(データ整形):データを整形し、効率的に検索できるようにするプロセス。テキストデータを正規化し、トークン化。データをインデックス化し、検索が迅速に行えるようにする