Slide 1

Slide 1 text

Bedrockナレッジベースと LlamaIndexでGraphRAGを 作って精度比較してみた! 2025/01/07 JAWS-UG 朝会 #65 福地開

Slide 2

Slide 2 text

Who am I ? 福地 開 (ふくち はるき) @har1101mony Japan AWS Jr.Champions目指してます! NECソリューションイノベータ株式会社 2年目 インフラエンジニア(AWS) 趣味:ブログ書くこと、バスケ、競馬 推し馬(ドウデュース)が引退してしまったので 次の推し馬探し中…

Slide 3

Slide 3 text

本日お話すること・しないこと ◆ 話すこと! ✓ GraphRAGとは?(簡単に) ✓Bedrockのナレッジベースで作ったGraphRAG ✓LlamaIndexで作ったGraphRAG ◆話さないこと! ✓RAGの詳細な説明 ✓LlamaIndexの詳細な説明 ✓GraphRAGの具体的な構築方法 →構築方法については別途ブログに纏めてあるので、こちらをご参照ください!

Slide 4

Slide 4 text

re:Invent 2024は RAGがアツかった!

Slide 5

Slide 5 text

RAGのアップデートは8件! ◆Amazon Bedrock Knowledge BasesがGraphRAGに対応 ◆Amazon Bedrock Knowledge Basesが構造化データの取り込みをサポート ◆Amazon Bedrock Knowledge Basesがマルチモーダルデータに対応 ◆Amazon Bedrock Knowledge Basesが応答のストリーミングをサポート ◆Amazon Bedrock Knowledge Basesの自動クエリフィルタ機能を発表 ◆Amazon Bedrock Knowledge BasesがAPIによるデータ操作に対応 ◆Amazon Bedrock Knowledge BasesでRAGの評価機能をプレビュー開始 ◆Amazon KendraのGenAI Indexを発表

Slide 6

Slide 6 text

RAGのアップデートは8件! ◆Amazon Bedrock Knowledge BasesがGraphRAGに対応 ◆Amazon Bedrock Knowledge Basesが構造化データの取り込みをサポート ◆Amazon Bedrock Knowledge Basesがマルチモーダルデータに対応 ◆Amazon Bedrock Knowledge Basesが応答のストリーミングをサポート ◆Amazon Bedrock Knowledge Basesの自動クエリフィルタ機能を発表 ◆Amazon Bedrock Knowledge BasesがAPIによるデータ操作に対応 ◆Amazon Bedrock Knowledge BasesでRAGの評価機能をプレビュー開始 ◆Amazon KendraのGenAI Indexを発表 この中からGraphRAGを触ってみる!

Slide 7

Slide 7 text

GraphRAGとは?従来のRAGとどう違うの?(ざっくり) ◆従来のRAG:ベクトルを用いて検索する →単語・文章を数値の配列に変換して、類似度を検索 猫 馬 お茶 カレー チャーハン ペガサス (2次元に変換したイメージです。)

Slide 8

Slide 8 text

GraphRAGとは?従来のRAGとどう違うの?(ざっくり) ◆GraphRAG:ナレッジグラフを用いて検索する ノード(丸):実体。人やモノなどを表現する。 エッジ(線):関係性。 (イメージです。)

Slide 9

Slide 9 text

GraphRAGのいいところ! ◆ドキュメントなどの複雑なデータにおいても その中で記載されているモノや事象同士の様々な関係性を 明示的に保持できること! ↓ ◆従来のベクトル検索に加えて ナレッジグラフによる検索も使うことで RAGの精度を向上させられる!

Slide 10

Slide 10 text

Bedrockのナレッジベースで GraphRAGを構築してみる!

Slide 11

Slide 11 text

使用したドキュメント ◆私の愛馬「ドウデュース」に関するドキュメントを用意 写真:https://world.jra-van.jp/db/horse/H1014044/ 生い立ちやレース結果などを ドキュメントにしてS3に格納

Slide 12

Slide 12 text

ナレッジベースでGraphRAGを構築 ◆ベクトルデータベースにNeptune Analyticsを指定

Slide 13

Slide 13 text

ナレッジベースでGraphRAGを構築 ◆まだプレビュー版ということもあってか、精度はイマイチ ←0/3レースの結果が出力された ←2/5レースの結果が出力された (結果自体は4つ出力されていますが、 2つ間違えています。)

Slide 14

Slide 14 text

LlamaIndexで GraphRAGを構築してみる! ※LlamaIndex…生成AIアプリケーション開発におけるフレームワークの1つ

Slide 15

Slide 15 text

LlamaIndexでGraphRAGを構築 ◆LlamaIndexを用いてナレッジグラフを作成

Slide 16

Slide 16 text

LlamaIndexでGraphRAGを構築 ◆クエリを投げてみると、完璧な答えが!

Slide 17

Slide 17 text

LlamaIndexでGraphRAGを構築 ◆もう1つの質問でも、4/5レースが正しく回答された!

Slide 18

Slide 18 text

結論: 現状だとLlamaIndexを用いて GraphRAGを構築する方が精度良さそう! ナレッジベースのGraphRAGはGAに期待!

Slide 19

Slide 19 text

結論: 現状だとLlamaIndexを用いて GraphRAGを構築する方が精度良さそう! ナレッジベースのGraphRAGはGAに期待! というのが、ブログ作成時の結論。 ナレッジベースのGraphRAGでも 精度向上させる方法、あります!

Slide 20

Slide 20 text

Parsing Strategyとチャンキング戦略を設定! ◆Parsing Strategy(変換戦略)を 「Foundation models as a parser」に設定 ◆チャンキング戦略を「Hierarchical chunking」に設定

Slide 21

Slide 21 text

ナレッジベースのGraphRAGでも精度が向上! ◆LlamaIndex同様、完璧な回答が出力された!

Slide 22

Slide 22 text

ナレッジベースのGraphRAGでも精度が向上! ◆もう1つの質問でも、4/5レースが正しく回答された!

Slide 23

Slide 23 text

新・結論: ナレッジベースのGraphRAGも 設定をチューニングすることで、 かなり良い精度にすることができた! Neptune Analyticsもう少しだけお安くなってほしい