Slide 1

Slide 1 text

©Fusic Co., Ltd. 1 AWSでRAGを作る⽅法 2024.7.19 苑⽥ 朝彰 @sonoda_mj 福岡LLM勉強会

Slide 2

Slide 2 text

©Fusic Co., Ltd. 2 苑⽥ 朝彰 Sonoda Tomotada - X: sonoda_mj - 2023 AWS Jr.Champions - 2024 AWS Community Builders (ML & GenAI) - 2024 Japan AWS Top Engineers (Services) - 甲賀流忍者検定(初級) コメント 明⽇滝⾏してきます ⾃⼰紹介 はじめに 株式会社Fusic

Slide 3

Slide 3 text

©Fusic Co., Ltd. 3 苑⽥ 朝彰 Sonoda Tomotada - X: sonoda_mj - 2023 AWS Jr.Champions - 2024 AWS Community Builders (ML & GenAI) - 2024 Japan AWS Top Engineers (Services) - 甲賀流忍者検定(初級) コメント 明⽇滝⾏してきます ⾃⼰紹介 はじめに 株式会社Fusic

Slide 4

Slide 4 text

©Fusic Co., Ltd. 4 CONTENTS ⽬次 1. 検索拡張⽣成(RAG)とは 2. Amazon Bedrockとは 3. AWSでRAGを作る⽅法 4. Knowledge Base for Amazon Bedrockを使い倒す 5. まとめ

Slide 5

Slide 5 text

©Fusic Co., Ltd. 5 検索拡張⽣成(RAG)とは 1

Slide 6

Slide 6 text

©Fusic Co., Ltd. 6 Retrieval Augmented Generation(RAG) ⽣成系の⾔語 AI モデルに外部メモリをつけるというコンセプトのことを指す 検索拡張⽣成(RAG)とは Vector Database LLM 質問 検索 返答 検索結果 引用:https://github.com/aws-samples/jp-rag-sample

Slide 7

Slide 7 text

©Fusic Co., Ltd. 7 事前に学習したデータに関しては返答することができる 検索拡張⽣成(RAG)とは LLM AWSについて教えて AWSってのはな

Slide 8

Slide 8 text

©Fusic Co., Ltd. 8 しかし、プライベート情報や新しい情報など、学習していない内容に関しては答 えられない 検索拡張⽣成(RAG)とは 苑⽥について教えて 私の知識はxxxx年まででぇ LLM

Slide 9

Slide 9 text

©Fusic Co., Ltd. 9 外部のデータベースなどを紐づけることで、新しい情報やプライベートの情報に 関する回答を⽣成することができる 検索拡張⽣成(RAG)とは Vector Database 苑⽥について教えて

Slide 10

Slide 10 text

©Fusic Co., Ltd. 10 外部のデータベースなどを紐づけることで、新しい情報やプライベートの情報に 関する回答を⽣成することができる 検索拡張⽣成(RAG)とは Vector Database 苑⽥について教えて

Slide 11

Slide 11 text

©Fusic Co., Ltd. 11 外部のデータベースなどを紐づけることで、新しい情報やプライベートの情報に 関する回答を⽣成することができる 検索拡張⽣成(RAG)とは Vector Database 検索結果を返す

Slide 12

Slide 12 text

©Fusic Co., Ltd. 12 外部のデータベースなどを紐づけることで、新しい情報やプライベートの情報に 関する回答を⽣成することができる 検索拡張⽣成(RAG)とは Vector Database 苑⽥ってのは…

Slide 13

Slide 13 text

©Fusic Co., Ltd. 13 Fusicの公開情報から構成されるRAG Fusic-RAG メンバー紹介 ニュース 開発事例 その他

Slide 14

Slide 14 text

©Fusic Co., Ltd. 14 Amazon Bedrockとは 2

Slide 15

Slide 15 text

©Fusic Co., Ltd. 15 AI21 Labs、Anthropic、Cohere、Meta、Stability AI、Amazon などの⼤⼿ AI 企業が提供する⾼性能な基盤モ デル (FM) を単⼀の API で選択できるフルマネージド型サービス Amazon Bedrock 引⽤: https://aws.amazon.com/jp/bedrock/

Slide 16

Slide 16 text

©Fusic Co., Ltd. 16 Amazon Bedrockの機能 • モデルカスタム • インポートモデル(プレビュー) • ガードレール • ウォーターマーク検出 • ナレッジベース • エージェント • プロンプトマネジメント(プレビュー) • プロンプトフロー (プレビュー) • モデル評価

Slide 17

Slide 17 text

©Fusic Co., Ltd. 17 Amazon Bedrockの機能 • モデルカスタム • インポートモデル(プレビュー) • ガードレール • ウォーターマーク検出 • ナレッジベース • エージェント • プロンプトマネジメント(プレビュー) • プロンプトフロー (プレビュー) • モデル評価

Slide 18

Slide 18 text

©Fusic Co., Ltd. 18 Amazon Bedrock 内から基盤モデルをデータソースに接続して、検索拡張⽣成 (RAG) を⾏うことができる。 Knowledge Base for Amazon Bedrock Bedrock LLM Bedrock Embedding Model Vector DB Data Source or or or S3 様々なデータを⼊れる .txt, .md, .html, .doc/docx .csv, .xls/.xlsx, .pdf OpenSearch Serverless Aurora

Slide 19

Slide 19 text

©Fusic Co., Ltd. 19 Amazon Bedrock 内から基盤モデルをデータソースに接続して、検索拡張⽣成 (RAG) を⾏うことができる。 Knowledge Base for Amazon Bedrock Bedrock LLM Bedrock Embedding Model Vector DB Data Source or or or S3 様々なデータを⼊れる .txt, .md, .html, .doc/docx .csv, .xls/.xlsx, .pdf OpenSearch Serverless Aurora

Slide 20

Slide 20 text

©Fusic Co., Ltd. 20 データの前処理 • ドキュメントを管理しやすいチャンクに分割し、効率的に取得できるようにする • ドキュメントをEmbedding Modelを使⽤してベクトル化する • Vector DBに格納する Cohere Amazon Titan Text Embeddings 引⽤:https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html

Slide 21

Slide 21 text

©Fusic Co., Ltd. 21 ランタイム実⾏ • ユーザーのクエリをベクトル化する • ドキュメントのベクトルと⽐較し、意味的に類似したチャンクが検索される • 取得されたチャンクからの追加のコンテキストで拡張される 引⽤:https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html Cohere Amazon Titan Text Embeddings Claude系

Slide 22

Slide 22 text

©Fusic Co., Ltd. 22 AWSでRAGを作る⽅法 3

Slide 23

Slide 23 text

©Fusic Co., Ltd. 23 AWSでRAGを作る⽅法 • Amazon Kendra + Amazon Bedrock • Vector DB + Amazon Bedrock • Knowledge Base for Amazon Bedrock

Slide 24

Slide 24 text

©Fusic Co., Ltd. 24 Amazon Kendraを使⽤する場合のRAG エンタープライズ検索サービス

Slide 25

Slide 25 text

©Fusic Co., Ltd. 25 VectorDB(Pinecone)を使⽤する場合のRAG

Slide 26

Slide 26 text

©Fusic Co., Ltd. 26 Knowledge Base for Amazon Bedrockを使⽤する場合のRAG

Slide 27

Slide 27 text

©Fusic Co., Ltd. 27 検証として使⽤したい場合はPineconeとBedrock組み合わせを使った⽅が安く済む データソースの種類が多く、すぐに構築したいならKendra 構築がめんどくさく、料⾦もそこそこ払えるならKnowledge Base for Amazon Bedrock KendraとPineconeの使い分けのまとめ Kendra + Bedrock Pinecone + Bedrock Knowledge Base for Amazon Bedrock ドキュメント ◎ 多様な形式に対応 △ 標準的な形式 ◯ 最近コネクション増加 値段 × かなり⾼コスト ◎ ⽐較的安価 ◯ Kendraよりは安い 実装の容易さと柔軟性 ◯ 導⼊が容易 △ ⼀部専⾨知識必要 ◯ 導⼊が容易 ◎:とても良い ◯:良い △:普通 ×:悪い

Slide 28

Slide 28 text

©Fusic Co., Ltd. 28 検証として使⽤したい場合はPineconeとBedrock組み合わせを使った⽅が安く済む データソースの種類が多く、すぐに構築したいならKendra 構築がめんどくさく、料⾦もそこそこ払えるならKnowledge Base for Amazon Bedrock KendraとPineconeの使い分けのまとめ Kendra + Bedrock Pinecone + Bedrock Knowledge Base for Amazon Bedrock ドキュメント ◎ 多様な形式に対応 △ 標準的な形式 ◯ 最近コネクション増加 値段 × かなり⾼コスト ◎ ⽐較的安価 ◯ Kendraよりは安い 実装の容易さと柔軟性 ◯ 導⼊が容易 △ ⼀部専⾨知識必要 ◯ 導⼊が容易 ◎:とても良い ◯:良い △:普通 ×:悪い

Slide 29

Slide 29 text

©Fusic Co., Ltd. 29 Knowledge Base for Amazon Bedrockを使い倒す 4

Slide 30

Slide 30 text

©Fusic Co., Ltd. 30 セマンティック検索とキーワード検索を組み合わせた検索⼿法 複数の検索アルゴリズムの⻑所を活かし、それぞれの得意領域を組み合わせて検索結果の適合性を向上させる ハイブリッド検索 引⽤:https://aws.amazon.com/jp/blogs/news/knowledge-bases-for-amazon-bedrock-now-supports-hybrid-search/ ハイブリット検索 セマンティック検索

Slide 31

Slide 31 text

©Fusic Co., Ltd. 31 ⾮構造化または半構造化ドキュメントから意味のある情報を分析して抽出するプロセス 基盤モデル (FM)を使⽤して複雑なドキュメントを解析する ⾼度な解析

Slide 32

Slide 32 text

©Fusic Co., Ltd. 33 ドキュメント # AWSでインフラを構築する⽅法 CDKを使⽤して、hogehoge… # AWS環境の説明 データベースはDynamoDBを使⽤ 理由はhogehoge… # ローカルでの開発⽅法 Docker使ってhogehoge… あとはやる気で頑張って チャンク分割 ドキュメント ベクトル化 OpenSearchに登録 Amazon Titan Text Embeddings OpenSearch Serverless

Slide 33

Slide 33 text

©Fusic Co., Ltd. 34 Amazon Titan Text Embeddings ドキュメント # AWSでインフラを構築する⽅法 CDKを使⽤して、hogehoge… # AWS環境の説明 データベースはDynamoDBを使⽤ 理由はhogehoge… # ローカルでの開発⽅法 Docker使ってhogehoge… あとはやる気で頑張って チャンク分割 ドキュメント ベクトル化 データのまとまりがない OpenSearchに登録 OpenSearch Serverless

Slide 34

Slide 34 text

©Fusic Co., Ltd. 35 ドキュメント # AWSでインフラを構築する⽅法 CDKを使⽤して、hogehoge… # AWS環境の説明 データベースはDynamoDBを使⽤ 理由はhogehoge… # ローカルでの開発⽅法 Docker使ってhogehoge… あとはやる気で頑張って チャンク分割 ドキュメント ベクトル化 内容を重複させる Amazon Titan Text Embeddings OpenSearchに登録 OpenSearch Serverless

Slide 35

Slide 35 text

©Fusic Co., Ltd. 36 データをセマンティックな意味に基づいてセグメント化し、関連情報が論理的なチャンクにまとめる。コンテキスト関係 を維持することで、RAG モデルはより関連性の⾼い⼀貫性のある結果を取得できる。 ⾼度なデータチャンクオプション(セマンティックチャンキング) ドキュメント # AWSでインフラを構築する⽅法 CDKを使⽤して、hogehoge… # AWS環境の説明 データベースはDynamoDBを使⽤ 理由はhogehoge… # ローカルでの開発⽅法 Docker使ってhogehoge… あとはやる気で頑張って 似たような意味を持つチャンクに分ける 分けた⽂章をベクトル化して、類似していたら まとめる

Slide 36

Slide 36 text

©Fusic Co., Ltd. 37 データをセマンティックな意味に基づいてセグメント化し、関連情報が論理的なチャンクにまとめる。コンテキスト関係 を維持することで、RAG モデルはより関連性の⾼い⼀貫性のある結果を取得できる。 ⾼度なデータチャンクオプション(セマンティックチャンキング) ドキュメント # AWSでインフラを構築する⽅法 CDKを使⽤して、hogehoge… # AWS環境の説明 データベースはDynamoDBを使⽤ 理由はhogehoge… # ローカルでの開発⽅法 Docker使ってhogehoge… あとはやる気で頑張って 似たような意味を持つチャンクに分ける

Slide 37

Slide 37 text

©Fusic Co., Ltd. 38 ⾼度なデータチャンクオプション(セマンティックチャンキング) パラメータ名 詳細 周囲の⽂をグループ化するための最⼤バッファサイズ 意味的類似性を評価するときにグループ化する⽂の数。 バッファ サイズに 1 を選択すると、⽂をグループ化する ときに、前の⽂、対象の⽂、次の⽂が含まれる チャンクの最⼤トークン テキスト チャンクに含めることができるトークンの最⼤数 ⽂グループ間の類似性のブレークポイントしきい値 ⽂グループを意味的に⽐較したときに、⽂グループがどの 程度類似しているかを (パーセンテージしきい値で) 指定す る

Slide 38

Slide 38 text

©Fusic Co., Ltd. 39 ドキュメント # AWSでインフラを構築する⽅法 CDKを使⽤して、hogehoge… # AWS環境の説明 データベースはDynamoDBを使⽤ 理由はhogehoge… # ローカルでの開発⽅法 Docker使ってhogehoge… あとはやる気で頑張って ⾼度なデータチャンクオプション(階層的チャンキング) ドキュメント # AWSでインフラを構築する⽅法 CDKを使⽤して、hogehoge… # AWS環境の説明 データベースはDynamoDBを使⽤ 理由はhogehoge… # ローカルでの開発⽅法 Docker使ってhogehoge… あとはやる気で頑張って 親チャンク ⼦チャンク① ⼦チャンク② ⼦チャンク③ データを階層構造に整理し、データ内の固有の関係に基づいて、より詳細かつ効率的な取得を可能にする。 (複雑な書式設定とネストされたテーブルを持つ技術マニュアル、法律⽂書、学術論⽂など、ネストされた構造または階 層構造を持つ複雑なドキュメントに最適)

Slide 39

Slide 39 text

©Fusic Co., Ltd. 40 ドキュメント # AWSでインフラを構築する⽅法 CDKを使⽤して、hogehoge… # AWS環境の説明 データベースはDynamoDBを使⽤ 理由はhogehoge… # ローカルでの開発⽅法 Docker使ってhogehoge… あとはやる気で頑張って ⾼度なデータチャンクオプション(階層的チャンキング) ドキュメント # AWSでインフラを構築する⽅法 CDKを使⽤して、hogehoge… # AWS環境の説明 データベースはDynamoDBを使⽤ 理由はhogehoge… # ローカルでの開発⽅法 Docker使ってhogehoge… あとはやる気で頑張って 親チャンク ⼦チャンク① ⼦チャンク② ⼦チャンク③ データを階層構造に整理し、データ内の固有の関係に基づいて、より詳細かつ効率的な取得を可能にする。 (複雑な書式設定とネストされたテーブルを持つ技術マニュアル、法律⽂書、学術論⽂など、ネストされた構造または階 層構造を持つ複雑なドキュメントに最適) ⼦チャンクに対して セマンティック検索を⾏う

Slide 40

Slide 40 text

©Fusic Co., Ltd. 41 ドキュメント # AWSでインフラを構築する⽅法 CDKを使⽤して、hogehoge… # AWS環境の説明 データベースはDynamoDBを使⽤ 理由はhogehoge… # ローカルでの開発⽅法 Docker使ってhogehoge… あとはやる気で頑張って ⾼度なデータチャンクオプション(階層的チャンキング) ドキュメント # AWSでインフラを構築する⽅法 CDKを使⽤して、hogehoge… # AWS環境の説明 データベースはDynamoDBを使⽤ 理由はhogehoge… # ローカルでの開発⽅法 Docker使ってhogehoge… あとはやる気で頑張って 親チャンク ⼦チャンク① ⼦チャンク③ データを階層構造に整理し、データ内の固有の関係に基づいて、より詳細かつ効率的な取得を可能にする。 (複雑な書式設定とネストされたテーブルを持つ技術マニュアル、法律⽂書、学術論⽂など、ネストされた構造または階 層構造を持つ複雑なドキュメントに最適) ヒットした⼦チャンクの 親チャンクをFMに返す

Slide 41

Slide 41 text

©Fusic Co., Ltd. 42 ⾼度なデータチャンクオプション(階層的チャンキング) パラメータ名 詳細 親トークンの最⼤サイズ 親チャンクに含めることができるトークンの最⼤数 ⼦トークンの最⼤サイズ トークンに含めることができるトークンの最⼤数 チャンク間のトークンの重複 ⼦チャンク間の重複のパーセンテージ

Slide 42

Slide 42 text

©Fusic Co., Ltd. 43 チャンク化プロセスをカスタマイズして、RAG アプリケーションの固有の要件に合わせて処理できる Lambda関数を使⽤したカスタム処理 DataSource チャンクを カスタマイズ OpenSearch 処理後ファイル⽤S3 Sync

Slide 43

Slide 43 text

©Fusic Co., Ltd. 44 複雑な質問を複数の単純なサブクエリに分割し、それぞれで関連情報を検索することで、RAGアプリケーションの精度と 応答品質を向上させる(Bedrockのlogから確認できる) クエリの再定式化(Query reformulation) • 苑⽥の経歴や背景について • 苑⽥とは誰で、ドイツ⼈を怒らせたエピソード は何ですか? • 苑⽥がドイツ⼈を怒らせた具体的なエピソード は何ですか? クエリを分割

Slide 44

Slide 44 text

©Fusic Co., Ltd. 45 もしAmazon Bedrockについてもっと知りたくなったら これに全部書いてる リンク:https://www.amazon.co.jp/dp/4815626448

Slide 45

Slide 45 text

©Fusic Co., Ltd. 46 まとめ 5

Slide 46

Slide 46 text

©Fusic Co., Ltd. 47 まとめ Amazon Bedrockは単⼀のAPI で選択できるフルマネージド型サービス Point 01 Knowledge Base for Amazon Bedrockは簡単にRAGを構築することができる Point 02

Slide 47

Slide 47 text

©Fusic Co., Ltd. 48 Thank You We are Hiring! https://recruit.fusic.co.jp/ ご清聴ありがとうございました!