Slide 1

Slide 1 text

Bedrock Knowledge baseを使って今年 の上半期のニュースを聞いてみた (リベンジ編) KMiura(@k_miura_io)

Slide 2

Slide 2 text

自己紹介 • 三浦 耕生(こうき) • Acallのバックエンドエンジニア • JAWS UG名古屋&神戸 運営 • Cloudflare Meetup名古屋 運営 • 鯱.py 運営 @k_miura_io koki.miura05

Slide 3

Slide 3 text

このイベントでやったLT覚えてますか?

Slide 4

Slide 4 text

LTについて今北産業 • Step FunctionsでNews APIを使ってその日のヘッ ドラインニュースをSlackのAPIで投稿するワークフ ロー作った • Slackで投稿するだけではなくAPIのレスポンスログ をS3に溜め込むETL的な機能も用意 • S3に溜め込んだデータをそのままBedrockに使うと いう話

Slide 5

Slide 5 text

S3のデータをKnowledgebaseにできる 仕組みがあるらしい • Amazon BedrockのKnowledgebaseを使うとS3をソースにフルマネージドなRAGを実現 できそう • 調べてみると外部のベクトルデータベースを使う方法があるが、わざわざ用意しなくても OpenSearch Serverlessを使うことができる(むしろ今のところそれが推奨っぽい)

Slide 6

Slide 6 text

実際にデモチャットで確認 • 答えは帰って来るがなんか微妙… • 日付周りが結構弱い

Slide 7

Slide 7 text

どうすれば精度上がりそう? • 読み込ませたソースになっているファイルがAPIのレスポンスをそのまま保存して いるだけなのでCSVとかで整形したほうがいいかも • ソースごとにメタデータ情報を記載したjsonファイルをバケットに足すことで応答精 度が上がるそう 今回はこれを試してリベンジする話

Slide 8

Slide 8 text

データ生成のフロー • すでに存在するAPIのレスポンスログを溜め込むバケットにデータが保存されたこ とをトリガーでKnowledge Base用のデータを整形 • SQSに流し込んでLambdaでCSVとmetadataのjsonの生成を自動化 • ベクトルデータベースにはPineconeを使用(OpenSearchは高すぎるw)

Slide 9

Slide 9 text

生成したデータフォーマット

Slide 10

Slide 10 text

metadata { "metadataAttributes":{ ”year":”2024" } }

Slide 11

Slide 11 text

それっぽい返答が 出るようになった

Slide 12

Slide 12 text

上半期のニュースも 抽出できた

Slide 13

Slide 13 text

DEMO

Slide 14

Slide 14 text

まとめ • BedrockのKnowledge Baseに対応したデータフォーマットに変換するこ とでAWS上で手軽にRAGを実現できる • metadataを活用することでより適切なデータを取得できた • 多少コードが書けるとデータ整形の自動化がだいぶ楽になる

Slide 15

Slide 15 text

宣伝 https://bit.ly/4dBnLIf

Slide 16

Slide 16 text

END