Share
Embed
DEIM2024 チュートリアル ~AWSで生成AIのRAGを使ったチャットボットを作ってみよう~
Hiroki YAMAMOTO
March 05, 2024
Transcript
69 slides
-
チュートリアルの内容 自己紹介(5分) 前提の話(5分) ・RAGとは AWSで生成AIを始めるには(15分) ・AWS製リポジトリの紹介 ・使い方・機能の紹介 実際にやってみての課題(10分) ・検索システムでの読み込まれ方 ・コンテキストを理解させるには
対象 ・生成AIを始めてみたい方 ・RAGを試してみたい方 ・LLMを実社会で使う上での課題に 興味がある方 ・大学生・大学院生・研究室のご所属の方 -
自己紹介:山本紘暉 修士(電子情報学) クラスメソッド株式会社 研究開発エンジニア 2020年 5月~ ・コンピュータビジョン 骨格検出や人物追跡 2023年 3月~
・生成AIやLLM 最近はRAGに注力 「クラスメソッド 山本 ブログ」で検索 https://dev.classmethod.jp/author/yamamoto-hiroki/ -
会社紹介:クラスメソッド株式会社 クラウド(技術コンサル・開発) ・AWS ・Google Cloud ・Azure アプリ(開発) ・モバイル(Android・iOS) ・LINE データ分析(基盤開発・分析)
生成AI(技術コンサル・開発) 運営メディア(やってみるカルチャー) https://classmethod.jp/ AWSで数多くの受賞 -
LLMの問題点・RAGの目的 ユーザ 質問 誤った回答 LLM プログラム 質問 誤った回答 ユーザ 質問
正しい回答 LLM プログラム 質問 + 関連テキスト 正しい回答 参考 ドキュメント 検索 関連テキスト 通常 RAG -
RAGの構成要素 ユーザ 質問 回答 LLM プログラム 質問 + 関連テキスト 回答
参考 ドキュメント インポート 検索 システム 検索クエリ 関連テキスト -
RAGのシステム構成(例) AWS ユーザ Slack App Slack Notion アップロード 社内ドキュメント (PDF・ワードなど)
Python プログラム (in コンテナ) App Runner Kendra インデックス S3 バケット Bedrock Anthropic Claude インポート -
RAGは社会的なニーズが高い 一般業務として困っている ・多くの会社で ・多くの部門で 社内ドキュメントを検索して 回答を生成するという作業を効率化したい 生成AI導入の流れ ・まず質問回答から始める ・その後、生成AIに業務タスクを任せる 専門業務レベル
(専門システムを構築) 一般業務レベル (パッケージを導入) 個人レベル (ChatGPT・Copilotを利用) 広まってる 今ここ もう少し先 -
AWSには色々なサービスがあります ※ エンタープライズ検索 様々のデータソースから 様々なドキュメントを読み込んで 横断的に検索できるシステムの総称 エンタープライズ検索※ を使いたい Amazon Kendra
とりあえずRAGを試したい Amazon Bedrock(knowledge base) 生成AIモデルを使いたい Amazon Bedrock(基盤モデル) 文章検索エンジンを作りたい Amazon OpenSearch Service -
RAGの構成要素(genai-usecaseの場合) 質問 + 会話履歴 ユーザ 質問 回答 LLM プログラム 質問
+ 関連テキスト + 会話履歴 回答 参考 ドキュメント インポート 検索 システム 検索クエリ 関連テキスト 検索クエリ LLM 会話履歴 -
AWSログイン~デプロイ開始:genai-usecaseをデプロイ(1) Cloud9のシェルで以下のコマンドを実行してください git clone https://github.com/aws-samples/generative-ai-use-cases-jp cd generative-ai-use-cases-jp (以下はリポジトリにかかれているデプロイ手順と同じです) npm ci
(npm audit fix)(必要なら) npx -w packages/cdk cdk bootstrap ※ npm run cdk:deploy はまだ実行しないでください (実行してしまっても、後から修正は可能です) -
AWSログイン~デプロイ開始:genai-usecaseをデプロイ(2) packages/cdk/cdk.json を開き 以下の2項目を変更してください ・“ragEnabled”をtrueに変更 (”T”rueではありません) ・“allowedSignUpEmailDomains”を [“classmethod.jp”]のように変更 お使いのメールアドレスのドメインを、 リスト形式で設定してください
補足:変更内容の詳細はこちらです ・RAGの有効化 ・メールドメインの制限 ファイルの保存は忘れずに実行してください -
AWSログイン~デプロイ開始:genai-usecaseをデプロイ(3) Cloud9のシェルで以下のコマンドを実行してください npm run cdk:deploy 少し待つと「Do you wish to deploy
these changes (y/n)?」 と聞かれるので、「y」を入力して「enter」を押します (これが面倒な場合は、オプションで無視することが可能です) https://qiita.com/eyuta/items/cc9817d59aa1dc6c8b80#cdk-deploy 20~30分ほど待つとデプロイが完了します (主にKendraのIndexを作成する時間です) -
最後(削除は忘れずに) リソースをすべて削除する場合 npm run cdk:destroy Kendraだけ止める場合 packages/cdk/cdk.json の “ragEnabled”をfalseに変更し npm
run cdk:deploy を実行してください ファイルの保存は忘れずに実行してください -
課題2:回答が難しい例 例: ・質問 「20期の年末年始の スケジュールを教えて」 ・ドキュメント ・2023年の年末年始 ・2022年の年末年始 ポイント ・20期が何なのか把握させる
・20期が何年に対応するのか 計算させる ・1期が何年なのか教える 普遍的な社内知識に対応させる (こうしたケースが大量にある) -
課題2:人間が利用している情報(ナレッジ関係) (社内情報に関するQAの場合) ※ 山本独自の用語です 性質 1質問に関わる量 暗黙知 明文化 (ドキュメント) 暗黙知
明文化 (ドキュメント) 業務知識 社内知識 暗黙知 明文化 (ドキュメント) 業界の常識 間接的・普遍的 直接的・専門的 少ない 多い ドキュメント化されている割合 -
課題2:補足:LLMが対応できる範囲もある(はず) 暗黙知 明文化 (ドキュメント) 暗黙知 明文化 (ドキュメント) 業務知識 社内知識 暗黙知
業界の常識 エンタープライズ検索で 検索できる(しやすい)範囲 暗黙知 社会の常識 ある程度はLLMが対応できる ただし、会社固有の知識には 対応できない -
課題2:人間が利用している情報 質問本文 メタデータ コンテキスト 暗黙知 明文化 (ドキュメント) 暗黙知 明文化 (ドキュメント)
業務知識 社内知識 暗黙知 業界の常識 ドキュメント 本文 メタデータ コンテキスト テキスト 画像 リンク 質問 ナレッジ ドキュメント 本文 -
課題2:システムが利用できる情報 システムが使用している情報は、人間に比べてごく一部 質問本文 メタデータ コンテキスト 暗黙知 明文化 (ドキュメント) 暗黙知 明文化
(ドキュメント) 業務知識 社内知識 暗黙知 業界の常識 ドキュメント 本文 メタデータ コンテキスト 通常のQAシステムの 対象範囲 通常のQAシステムの 対象範囲 エンタープライズ検索で 検索できる(しやすい)範囲 テキスト 画像 リンク 通常の検索システムの 対象範囲 -
課題2:差分をどう埋めるのか 質問本文 メタデータ コンテキスト 暗黙知 明文化 (ドキュメント) 暗黙知 明文化 (ドキュメント)
業務知識 社内知識 暗黙知 業界の常識 ドキュメント 本文 メタデータ コンテキスト 通常のQAシステムの 対象範囲 通常のQAシステムの 対象範囲 エンタープライズ検索で 検索できる(しやすい)範囲 テキスト 画像 リンク 通常の検索システムの 対象範囲 検索システムを 変更する プログラムを 改良する プログラムを 改良する 別の検索システムを追加する(?) できる限り範囲をふやす (制約:そもそもデータがあるか・実装コスト・運用可能か) どうする? (明文化してもらう) -
課題2:(参考) 最近取り組んでいること ユーザ 質問 回答 LLM プログラム 質問 + 関連テキスト
回答 参考 ドキュメント 前処理 ドキュメント 検索システム 検索クエリ 関連テキスト 前処理済み ドキュメント インポート UI 質問 回答 用語 検索システム 検索クエリ 関連テキスト インポート 他 検索システム 検索クエリ 関連テキスト 自律システム (Agent) ドキュメント 作成者・管理者 フィードバック オンボーディング 定期処理 用語集の自動作成 検索の仕組み 会話履歴 -
このチュートリアルで話したこと 背景・前提知識 ・RAGとは:検索 + 生成AIで 新たな知識に関して回答させること ・世の中のホットトピック AWSで生成AIを始めるには ・AWS製リポジトリが便利 ・使いやすい・機能が豊富
実際にやると課題がたくさん ・検索システムに前処理を加え 意図した読み方に修正する必要 ・人間と同じ情報を持たせるには 検索システムを追加した方が良い 研究的なRAGの精度改善よりも、 前段階にまだまだやることがある