Slide 1

Slide 1 text

AmazonBedrockを使⽤した⾃作RAGの作り⽅ DAIMYO Meetup #4 2024.2.28 苑⽥朝彰 1

Slide 2

Slide 2 text

⾃⼰紹介 苑⽥ 朝彰 Sonoda Tomotada - ID - Github︓tomomj - Twitter︓@sonoda_mj - Work at - 株式会社 Fusic (フュージック) 技術創造部⾨所属 - 新卒3年⽬ - 最近MLを勉強し出した - Skill - AWS/React(Native)/Ruby on Rails 2

Slide 3

Slide 3 text

アジェンダ 3 l 背景 l 事前知識 l AmazonBedrockを使用した自作RAGの作り方 l まとめ

Slide 4

Slide 4 text

01 背景

Slide 5

Slide 5 text

新しい情報やプライベートの情報に関する 内容について回答してくれる、ChatGPTの ようなアプリを個人開発で作りたい!

Slide 6

Slide 6 text

でもいいネタが思いつかん!!

Slide 7

Slide 7 text

参考:https://fusic.co.jp/members

Slide 8

Slide 8 text

ちょうどええデータ あるやん

Slide 9

Slide 9 text

これ使ってみよか〜

Slide 10

Slide 10 text

作ったもの

Slide 11

Slide 11 text

苑田(webにない情報) って誰ですか? Webアプリ

Slide 12

Slide 12 text

苑田っていうのはな。。。 Webアプリ

Slide 13

Slide 13 text

02 事前知識

Slide 14

Slide 14 text

事前知識 14 l 検索拡張生成(RAG)とは l Amazon Bedrockとは

Slide 15

Slide 15 text

事前知識 15 l 検索拡張生成(RAG)とは l Amazon Bedrockとは

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

検索拡張⽣成(RAG)とは 18 しかし、学習していない内容に関しては答えられない 苑田について教えて 誰やねん 私の知識はxxxx年まででぇ〜

Slide 19

Slide 19 text

検索拡張⽣成(RAG)とは 19 外部のデータベースなどを紐づけることで、新しい情報やプライベートの情報に関す る回答を生成することができる Vector Database 苑田について教えて 新しいデータをベクトル化 して格納

Slide 20

Slide 20 text

検索拡張⽣成(RAG)とは 20 外部のデータベースなどを紐づけることで、新しい情報やプライベートの情報に関す る回答を生成することができる Vector Database 近いベクトルを探す 「苑田について教えて」を ベクトル化

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

RAGはどういう処理をしているのか 23 ベクターDB テキストをベクトル化する モデル 生成系AI

Slide 24

Slide 24 text

RAGはどういう処理をしているのか 24 ベクターDB テキストをベクトル化する モデル 生成系AI ベクトル化して 格納 [0.1, 0.2, 0.3, …]

Slide 25

Slide 25 text

RAGはどういう処理をしているのか 25 ベクターDB テキストをベクトル化する モデル 生成系AI 苑田って誰ですか??

Slide 26

Slide 26 text

RAGはどういう処理をしているのか 26 ベクターDB テキストをベクトル化する モデル 生成系AI [0.1, 0.2, 0.5, …]

Slide 27

Slide 27 text

RAGはどういう処理をしているのか 27 ベクターDB テキストをベクトル化する モデル 生成系AI [0.1, 0.2, 0.5, …]

Slide 28

Slide 28 text

RAGはどういう処理をしているのか 28 ベクターDB テキストをベクトル化する モデル 生成系AI {vector : [0.1, 0.2, 0.5, …], text: “緑タイツを着てます”} 似たようなものあったわ! 2つくらい送るな! {vector : [0.1, 0.1, 0.2, …], text: “AWSエンジニアです”}

Slide 29

Slide 29 text

RAGはどういう処理をしているのか 29 ベクターDB テキストをベクトル化する モデル 生成系AI + 苑田って誰ですか? { “緑タイツを着てます”} { “AWSエンジニアです”}

Slide 30

Slide 30 text

RAGはどういう処理をしているのか 30 ベクターDB テキストをベクトル化する モデル 生成系AI 苑田っていうのはな?

Slide 31

Slide 31 text

事前知識 31 l 検索拡張生成(RAG)とは l Amazon Bedrockとは

Slide 32

Slide 32 text

Bedrockとは 32 "*-BCTɺ"OUISPQJDɺ$PIFSFɺ.FUBɺ4UBCJMJUZ"*ɺ"NB[POͳͲͷେख "*اۀ͕ఏڙ͢Δ ߴੑೳͳج൫Ϟσϧ '. Λ୯Ұͷ "1*Ͱબ୒Ͱ͖ΔϑϧϚωʔδυܕαʔϏε ↓これらのmodelのAPIが使える

Slide 33

Slide 33 text

ファインチューニング 33 追加学習させて新しくモデルを作れる

Slide 34

Slide 34 text

playground(chat) 34 マネコン上で実際にmodelを使用することができる

Slide 35

Slide 35 text

playground(text) 35 推論パラメータをいじれる パラメータいじれる ↑トークン足りてない

Slide 36

Slide 36 text

03 AmazonBedrockを使⽤した ⾃作RAGの作り⽅

Slide 37

Slide 37 text

データソース 37 Fusicの公式ページ全て 参考: https://fusic.co.jp/members/108

Slide 38

Slide 38 text

構成図(1) 38

Slide 39

Slide 39 text

構成図(1) 39 ベクターDB テキストをベクトル化する モデル 生成系AI Bedrock Fargate

Slide 40

Slide 40 text

構成図(1) 40 ベクターDB テキストをベクトル化する モデル 生成系AI Bedrock Fargate

Slide 41

Slide 41 text

構成図(1) 41 ベクターDB テキストをベクトル化する モデル 生成系AI Bedrock Fargate 俺が作った

Slide 42

Slide 42 text

構成図(1) 42 New!!

Slide 43

Slide 43 text

構成図(1) 43 ベクトル化するモデル (を搭載したサーバー)

Slide 44

Slide 44 text

構成図(1) 44 RAGの処理を 全部やってくれるやつ

Slide 45

Slide 45 text

Lambdaの中⾝ 45 ベクターDB テキストをベクトル化する モデル 生成系AI Bedrock Fargate

Slide 46

Slide 46 text

No content

Slide 47

Slide 47 text

今までの会話履歴を記載 ベクターDBから持ってきたデータ

Slide 48

Slide 48 text

会話履歴を使用しない場合 会話履歴を指定する場合 苑田とは誰ですか? AWSエンジニアです 詳細を教えてください 詳細とは何でしょうか? 苑田とは誰ですか? AWSエンジニアです 詳細を教えてください 彼はAWSだけではなく、Rubyも書ける ようです。緑のタイツを着ています。 会話情報が保持される

Slide 49

Slide 49 text

構成図(1) 49

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

構成図(1) 51 前処理(めんどくさいやつ)をBedrockで処理

Slide 52

Slide 52 text

データを前処理する 52 名前:苑田朝彰 コメント:ほげほげ 略歴:ほげほげ 担当・スキル:ほげほげ プライベート:ほげほげ 必要なところだけ取ったtxtファイル データの抽出

Slide 53

Slide 53 text

構成図(1) 53 ベクターDB Freeプラン使用

Slide 54

Slide 54 text

構成図(2) 54

Slide 55

Slide 55 text

構成図(2) 55

Slide 56

Slide 56 text

Knowledge Base for Amazon Bedrockとは 56 "NB[PO#FESPDLͷφϨοδϕʔεΛ࢖༻͢Δͱɺ"NB[PO#FESPDL಺͔Β '.Λσʔλιʔ εʹ઀ଓͯ͠ݕࡧ֦ுੜ੒ 3"( Λߦ͏͜ͱ͕Ͱ͖Δɻ͜ΕʹΑΓɺ'.ͷطଘͷڧྗͳػೳΛ ֦ு͠ɺಛఆͷυϝΠϯ΍૊৫ʹؔ͢Δ஌ࣝΛਂΊΔ͜ͱ͕Ͱ͖Δɻ 引用:https://aws.amazon.com/jp/bedrock/knowledge-bases/

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

Knowledge Baseについて詳しく 59 or or Vector Database Data Source S3 Bedrock User LLM 様々な情報を入れる コードを書かなくとも一括で作成してくれる(S3以外) or

Slide 60

Slide 60 text

デモ

Slide 61

Slide 61 text

04 まとめ

Slide 62

Slide 62 text

まとめ Bedrockを使ってChatGPTのようなアプリを簡単に作ることができた Point 2 データの精度を上げるには前処理が重要 62 Point 1 Point 3 Knowledge Base for Amazon Bedrockを使うと、もっと簡単に作成できる

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

ご清聴いただきありがとうございました Thank You We are Hiring ! https://recruit.fusic.co.jp/