Slide 1

Slide 1 text

AWSで構築する パターン別RAG構成解説 2024.7.8 AWS事業本部 つくぼし

Slide 2

Slide 2 text

Xへの投稿の際は、 ハッシュタグ #cm_odyssey でお願いいたします。 2 お願い

Slide 3

Slide 3 text

⾃⼰紹介 ● ハンドルネーム ○ つくぼし ● 所属 ○ AWS事業本部コンサルティング部 ○ ソリューションアーキテクト ● 最近ハマっているAWSサービス ○ AWS Application Composer ● SNS/ブログ ○ X(@tsukuboshi0755) ○ DevelopersIO(つくぼし) 3

Slide 4

Slide 4 text

⽬次 1. はじめに 2. RAGのおさらい 3. AWSにおけるRAG検索エンジンサービスの⽐較 4. AWSにおけるベクトルデータベースサービスの⽐較 5. AWSでオススメのRAG構成パターン 6. 最後に 4

Slide 5

Slide 5 text

1. はじめに 5

Slide 6

Slide 6 text

社内データをRAGで活⽤する 事例が増えてきている 6

Slide 7

Slide 7 text

AWSでは どのパターンのRAGを 組むと良いのか? 7

Slide 8

Slide 8 text

RAG含めた生成 AI周りの技術は、 アップデート速度が早い傾向があります。 今回のセッション内容は、あくまで 2024/7/7ま での情報を元にしているため ご注意ください。 8 ご注意事項

Slide 9

Slide 9 text

2. RAGのおさらい 9

Slide 10

Slide 10 text

RAG(Retrieval Augmented Generative)とは? 10 ⽣成AIにデータの検索結果を与える事で、 ⽣成する回答性能を向上させる⼿法

Slide 11

Slide 11 text

なぜRAGが必要なのか? 11 ● ⼀般的に、⽣成AIは特定時点までのパブリックデータし か学習していない ● そのため単独では、最新データやプライベートデータ等 を⽤いた返答が難しい ● 外部DBに参照データを格納し、DBの検索結果を元に⽣ 成AIが回答⽣成する事で、上記の弱点を補う事が可能

Slide 12

Slide 12 text

RAGのフェーズ 1. Storeフェーズ 2. Retrievalフェーズ 3. Generationフェーズ 12

Slide 13

Slide 13 text

Storeフェーズ 13 ● 外部データソースから関連情報を収集 ● 収集した情報を分割し、検索エンジンが使⽤するデータベー スに保存

Slide 14

Slide 14 text

Retrievalフェーズ 14 ● 検索エンジンを⽤いて、類似ドキュメントの検索を実施 ● 抽出されたドキュメント内容のみを結果として返答

Slide 15

Slide 15 text

Generationフェーズ 15 ● 検索結果の内容を参照先として付与した上で、LLMにプロン プトを渡す ● LLMがドキュメントに基づいて、回答を⽣成

Slide 16

Slide 16 text

RAGを理解する上で重要な概念 16 ● チャンキング ● エンベディング(埋め込み) ● ベクトルデータベース

Slide 17

Slide 17 text

チャンキング 17 ● ⼤きなドキュメントデー タを⼩さな断⽚(チャン ク)に分割する事を指す ● RAGでは適切なチャンク サイズと分割⽅法を選ぶ 事で、検索精度と⽣成品 質の向上が期待できる 参考:https://fintan.jp/page/10301/

Slide 18

Slide 18 text

エンべディング(埋め込み) 18 ● テキストや画像などのデータを、数値ベクトルに変換する技術 を指す ● エンべディングにより、データの意味や関係性を数学的に表現 する事で、機械学習モデルによる類似検索が可能になる 参考:https://aws.amazon.com/jp/blogs/news/the-role-of-vector-datastores-in-generative-ai-applications/

Slide 19

Slide 19 text

ベクトルデータベース 19 ● 数値ベクトルを効率的に保存し、ベ クトル検索を実施するために設計さ れたデータベースシステムを指す ● ベクトル検索:変換された数値ベク トルの類似度を⽐較し、関連性の⾼ いデータを⾒つけ出す検索⽅法 参考:https://aws.amazon.com/jp/blogs/news/the-role-of-vector-datastores-in-generative-ai-applications/

Slide 20

Slide 20 text

3. AWSにおける RAG検索エンジンサービス 20

Slide 21

Slide 21 text

RAG検索エンジンサービスの選択肢 ● Amazon Kendra ● Knowledge Bases for Amazon Bedrock 21

Slide 22

Slide 22 text

Amazon Kendra 22 ● AIを活⽤した⾼度なエンタープライ ズ検索サービス ● データソースのドキュメント情報を 抽出し、インデックスとして保存 ● インデックスを検索する事で、関連 性の⾼い回答を提供

Slide 23

Slide 23 text

Kendraを⽤いたRAGの実装 23

Slide 24

Slide 24 text

Knowledge Bases for Amazon Bedrock 24 ● 基盤モデルを⽤いてRAGを実現する Amazon Bedrockの⼀機能 ● データソースのドキュメント情報をエ ンベディングに変換し、ベクトルデー タベースに保存 ● ベクトルデータベースを検索する事 で、関連性の⾼い回答を提供

Slide 25

Slide 25 text

Knowledge basesを⽤いたRAGの実装 25

Slide 26

Slide 26 text

RAG検索エンジンサービスの⽐較観点 26 I. 使⽤料⾦ II. 対象データソース III. 同期実⾏スケジューリング機能 IV. 検索フィルタリング機能 V. チャンキング戦略

Slide 27

Slide 27 text

Ⅰ. 使⽤料⾦ 27 ● Kendraは料⾦が⾼いので要注意! ○ 現状Enterprise版の場合、最低インデックス料⾦が 1,008USD/⽉となる ○ Developer版にするとSingle AZとなるが、最低イン デックス料⾦が810USD/⽉と安くなる ● Knowledge Basesの料⾦はベクトルデータベースにもよ るが、ほとんどの場合Kendraよりは安くなる ○ 基本はベクトルデータベース料⾦ + モデル利⽤料⾦

Slide 28

Slide 28 text

Ⅱ. 対象データソース 28 ● KendraはS3の他に、様々なデータソースを接続可能 ○ AWSであれば、RDSやFSx(Windows/NetApp ONTAP)といった サービスとも接続できる ○ SaaSであれば、SharepointやBox、Google Drive等が利⽤できる ○ Web Crawlerを⽤いて、特定のウェブサイトを参照する事も可能 ● Knowledge BasesはS3のみデータソースとして接続可能 ○ RDSやSaaS等を対象としたい場合、S3へのデータアップロードの 仕組みが別途必要

Slide 29

Slide 29 text

Ⅲ. 同期実⾏スケジューリング機能 29 ● Kendraは単体で同期実⾏スケジューリングを設定可能 ○ オンデマンド(⼿動実⾏)またはスケジューリングのい ずれかを選択できる ● Knowledge Basesは単体で同期実⾏スケジューリングを 設定できない ○ データ同期スケリューリングの仕組み(EventBridge Scheduler + Step Functions等)が別途必要

Slide 30

Slide 30 text

Ⅳ. 検索フィルタリング機能 30 ● Kendraはメタデータによるフィルタリング、CDEによるメタデータ⾃動付与、 及びACLによるフィルタリングを実施可能 ○ メタデータをファイル毎に付与する事で、ファイル単位でフィルタリング できる ○ CDE(Contents Data Enrichment)を設定する事で、メタデータの⾃動付与 を⽐較的簡単に実現できる ○ ACL(Access Control List)を設定すると、認証サーバと連携し、特定のユー ザ‧グループ権限毎にプレフィックス単位でフィルタリングできる ● Knowledge Basesはメタデータによるフィルタリングのみ実施可能 ○ メタデータを⾃動付与したい場合、Lambda等でのメタデータ付与システ ムの仕組みが別途必要

Slide 31

Slide 31 text

Ⅴ. チャンキング戦略 31 ● Kendraはチャンキング戦略を設定不可 ● Knowledge Basesはチャンキング戦略を、以下から変更可能 ○ デフォルトのチャンキング:各ファイルを300 の最⼤トークン数 を持つチャンクに分割し処理する ○ 固定サイズのチャンキング:各ファイルを20 ~ 8192 の間で指定 した最⼤トークン数を持つチャンクに分割し処理する ○ チャンキング無し:各ファイルをそのままチャンクとして処理す る

Slide 32

Slide 32 text

余談:現時点のIaC化対応状況 32 ● Kendraの場合、新データソース設定である TemplateConfigurationが⼀部のIaCで現状未対応 のため、事前に対応しているか確認するのが吉 ● Knowledge Basesの場合、ベクトルデータベース 内のインデックス作成⽅法を別途考慮する必要あ り

Slide 33

Slide 33 text

4. AWSにおける ベクトルデータベースサービス の⽐較 33

Slide 34

Slide 34 text

Knowledge Basesで指定できる ベクトルデータベース 34

Slide 35

Slide 35 text

ベクトルデータベースサービスの選択肢 ● OpenSearch Serverless (ベクトル検索) ● Aurora PostgreSQL (pgvector拡張機能) ● サードパーティ 35

Slide 36

Slide 36 text

Amazon OpenSearch Serverless 36 ● ⼤量のデータコレクションを格納し⾼速で検 索可能にするサービス ● Serverlessモードで起動する事で、クラス ターの管理が不要 ● ベクトル検索を選択する事で、ベクトルデー タベースとして使⽤可能

Slide 37

Slide 37 text

Amazon Aurora PostgreSQL 37 ● PostgreSQLと互換性のある、フルマネージ ドなリレーショナルデータベースサービス ● pgvector拡張機能を⽤いた追加セットアッ プにより、ベクトルデータベースとして使⽤ 可能 ● Aurora に対して HTTP 経由でアクセスを⾏ うData APIの許可設定が別途必要

Slide 38

Slide 38 text

サードパーティ 38 ● Pinecone ● Redis Enterprise Cloud ● MongoDB Atlas

Slide 39

Slide 39 text

サードパーティ 39 ● Pinecone ● Redis Enterprise Cloud ● MongoDB Atlas

Slide 40

Slide 40 text

ベクトルデータベースの⽐較観点 40 I. 東京リージョン対応 II. 使⽤料⾦ III. ハイブリッド検索 IV. シークレット運⽤ V. ネットワーク運⽤

Slide 41

Slide 41 text

Ⅰ. 東京リージョン対応 41 ● OpenSearch及びAuroraは、東京リージョンに対応 済 ○ ただし使⽤できるBedrockモデルには制限があ るため注意 ● Pineconeは、現状東京リージョンは未対応 ○ 海外リージョンのKnowledge Bases及びS3を使 ⽤する必要がある

Slide 42

Slide 42 text

Ⅱ. 使⽤料⾦ 42 ● OpenSearchは、東京リージョンの場合、最低OCU料⾦が 977.952USD(OCU:4)となる ○ アクティブレプリカを無効にする事で、Single AZとなるが最低OCU料⾦は 488.976USD/⽉(OCU:2)となる ● Aurora (Serverless v2)は、東京リージョンの場合、最低ACU料⾦が 73.2USD(ACU:0.5)となる ○ EventBridgeによりDBの起動停⽌スケジュールを設定する事で、RAGを使 ⽤していない時間の料⾦を削減可能 ● Pinecone (Serverless)は、Standardプランかつバージニアリージョンの場合、 最低Units料⾦が10.25USD(Read:1/Write:1)となる ○ VPCに配置してPrivate Link接続したい場合は、Enterpriseプランにする必 要があり、最低Units料⾦が20.5USD(Read:1/Write:1)に上がるため注意

Slide 43

Slide 43 text

Ⅲ. ハイブリッド検索 43 ● OpenSearchではハイブリッド検索を使⽤可能 ○ ハイブリッド検索 :セマンティック検索と全⽂検索 の両⽅を実⾏する検索⽅法。現状Knowledge Bases ではOpenSearchのみ有効化可能。 ○ さらにアナライザー(⼊⼒されたテキストの前処理を するフィルタ機能)として⽇本語対応プラグインを指 定する事で、回答精度の向上が⾒込める。 ● Aurora及びPineconeは利⽤不可

Slide 44

Slide 44 text

Ⅳ. シークレット運⽤ 44 ● OpenSearchは、原則シークレットが不要 ○ シークレット運⽤を考慮する必要がない ● Aurora及びPineconeは、事前にSecrets Managerにシークレットの登録が必要 ○ AuroraはDBのユーザー名/パスワード ○ PineconeはAPIキー

Slide 45

Slide 45 text

Ⅴ. ネットワーク運⽤ 45 ● OpenSearch及びPineconeは、VPCの有無を選択可能 ○ VPCなしにする事で、ネットワーク運⽤を考慮する必要がなくな る ○ VPCありにする事で、Private Linkを⽤いたプライベート接続が可 能(Pineconeは現状パブリックプレビュー版のため注意) ● Auroraは必ずVPCが必要 ○ Private Linkを⽤いたプライベート接続は可能な⼀⽅で、ネット ワーク運⽤の⼿間が必然的に発⽣する

Slide 46

Slide 46 text

5. AWSでオススメの RAG構成パターン 46

Slide 47

Slide 47 text

AWSでRAGを実現する⽅法 47 ● Kendra & Bedrock ● Knowledge Bases for Amazon Bedrock ● 独⾃実装

Slide 48

Slide 48 text

AWSでRAGを実現する⽅法 48 ● Kendra & Bedrock ● Knowledge Bases for Amazon Bedrock ● 独⾃実装

Slide 49

Slide 49 text

オススメのRAG構成パターン別⽐較表 49 比較観点 Kendra & Bedrock Knowledge Bases with OpenSearch Knowledge Bases with Aurora Knowledge Bases with Pinecone 使用料金 やや高~高 中~やや高 やや低~中 低 対象データソース S3/RDS/FSx(Windows・ONTAP)/ 各種SaaS/Web Crawler S3 S3 S3 同期実行 スケジューリング機能 あり なし なし なし 検索フィルタリング機能 メタデータ(自動付与機能あり)/ACL メタデータ(自動付与機能なし) メタデータ(自動付与機能なし) メタデータ(自動付与機能なし) チャンキング戦略 なし あり あり あり 東京リージョン対応 あり あり あり 現時点ではなし ハイブリッド検索 なし あり なし なし シークレット運用 S3との接続には不要 RDS/FSx/各種SaaS/Web Crawler との接続には原則必要 不要 必要 必要 ネットワーク運用 デフォルトは不要 デフォルトは不要 必要 デフォルトは不要

Slide 50

Slide 50 text

パターン1.Kendra + Bedrock 50

Slide 51

Slide 51 text

パターン1がオススメの⽅ 51 ● データソースにS3以外のサービス(RDSやFSx、 各種SaaS、Web Crawler)を使⽤したい⽅ ● スケジューリング同期実⾏を簡単に使⽤したい ⽅ ● ⾼性能な検索フィルタリング機能を使⽤したい ⽅

Slide 52

Slide 52 text

パターン2.Knowledge Bases with OpenSearch 52

Slide 53

Slide 53 text

パターン2がオススメの⽅ 53 ● Kendraよりは料⾦を安く抑えたい⽅ ● チャンキング戦略やハイブリッド検索を使 いこなし、回答精度を独⾃に細かく調整し たい⽅ ● Secrets‧VPCなしの構成にしたい⽅

Slide 54

Slide 54 text

パターン3.Knowledge Bases with Aurora 54

Slide 55

Slide 55 text

パターン3がオススメの⽅ 55 ● ある程度料⾦を安く抑えたい⽅ ● Secrets‧VPC管理がそこまで⼿間にならな い⽅ ● RDBMSを⽤いてベクトルデータベースを運 ⽤したい⽅

Slide 56

Slide 56 text

パターン4.Knowledge Bases with Pinecone 56

Slide 57

Slide 57 text

パターン4がオススメの⽅ 57 ● 料⾦をとにかく安く抑えたい⽅ ● 参照元データを海外リージョンに配置して も問題ない⽅ ● Secrets管理がそこまで⼿間にならない⽅ ● VPCなしの構成にしたい⽅

Slide 58

Slide 58 text

6. 最後に 58

Slide 59

Slide 59 text

まとめ 59 ● AWSでRAG構成を検討する際は、以下の2点を考慮 し、要件に応じて適切な構成を選択すると良い ○ 検索エンジン(Kendra/Knowledge Bases) ○ ベクトルデータベース (OpenSearch/Aurora/Pinecone等) ● RAG周りはアップデートが早いので、引き続き最新 情報を追っていくのが吉

Slide 60

Slide 60 text

RAGを制するものは ⽣成AIインフラを制す! 60

Slide 61

Slide 61 text

参考⽂献 61 ● [RAGの性能を改善するための8つの戦略 \| Fintan](https://fintan.jp/page/10301/) ● [⽣成系 AI アプリケーションでベクトルデータストアが果たす役割とは \| Amazon Web Services ブロ グ](https://aws.amazon.com/jp/blogs/news/the-role-of-vector-datastores-in-generative -ai-applications/) ● [AWS ⼊⾨ブログリレー 2024 〜Amazon Kendra編〜 \| DevelopersIO](https://dev.classmethod.jp/articles/introduction-2024-amazon-kendra/) ● [AWS ⼊⾨ブログリレー 2024 〜Knowledge bases for Amazon Bedrock編〜 \| DevelopersIO](https://dev.classmethod.jp/articles/introduction-2024-knowledge-bases -for-amazon-bedrock/) ● [Amazon Bedrock ⽣成AIアプリ開発⼊⾨ \[AWS深掘りガイド\] \| SBクリエイティ ブ](https://www.sbcr.jp/product/4815626440/)

Slide 62

Slide 62 text

No content

Slide 63

Slide 63 text

63