Slide 1

Slide 1 text

Amazon Neptune で始める グラフDB ビジネスソリューション第一事業部 八雲慎之助 株式会社クレスコ

Slide 2

Slide 2 text

自己紹介 八雲慎之助(やくも しんのすけ) 所属 株式会社クレスコ 技術 好きなサービス Amazon Neptune

Slide 3

Slide 3 text

グラフDBとは? 引用 (https://www.imagazine.co.jp/12805-2/) ノード間のリレーションを表現できる

Slide 4

Slide 4 text

グラフDBとは?(RDSとの比較) Q:「Aさんの孫(子供の子供)は?」 UserId ChildrenID 1 2 2 3 3 4 UserId Name 1 A 2 B 3 C UserID1の孫は誰? A B C 子供はBさん 子供はCさん

Slide 5

Slide 5 text

主な活用事例 ユーザー同士の友人関係やフォロー関係をグラフ構造で管理。 友達の友達を探す、コミュニティ検出、おすすめ表示 例)X, Instagram, Facebook SNS分析 ユーザーの購入履歴や閲覧履歴から、関係性に基づく商品推薦を行う。 例)Amazon, Netflix レコメンデーションエンジン Bedrockと組み合わせて、GraphRAGのような高度な応答システムを構 築できる 例)社内文書検索システム ナレッジグラフ

Slide 6

Slide 6 text

Amazon Neptune とは https://aws.amazon.com/jp/neptune/ • つながりの分析が得意 データの「関係性」を素早く見つけられる。 例)SNS上でおすすめを提示 • 2つのクエリ言語が得意 Gremlin → グラフをたどるための言語(経路検索などに便利) SPARQL → 知識グラフ(情報をネットワーク化して管理)に使う言語 • 高速でスケーラブル 大量のデータを高速に検索できる 大規模なアプリケーションでも対応可能 • 高い可用性と信頼性 自動フェールオーバ 保存時、転送時のデータ暗号化

Slide 7

Slide 7 text

レコメンド実装 AWS Cloud AWS Cloud Virtual private cloud (VPC) Public subnet Private subnet Amazon SageMaker AI Amazon Neptune

Slide 8

Slide 8 text

Gremlinクエリについて • ノード追加 g.addV('person').property('name', 'yakumo').next() • エッジ追加 g.V().hasLabel('person’). has('name','yakumo').addE('LIKE').to(__.V().hasLabel('team’). has('name', 'team 3')).next()

Slide 9

Slide 9 text

レコメンド実装(共通のLIKEをしているノードを表示) yakumo sakura product 1 product 2 product 3 tanaka product 4

Slide 10

Slide 10 text

レコメンド実装(共通のノードから伸びるエッジを確認) yakumo sakura product 1 product 2 product 3 tanaka product 4

Slide 11

Slide 11 text

レコメンド実装(yakumoがLIKEしたのは除外) yakumo sakura product 1 product 2 product 3 tanaka product 4

Slide 12

Slide 12 text

レコメンド実装 yakumo sakura product 1 product 2 product 3 tanaka product 4

Slide 13

Slide 13 text

実際にやってみる!

Slide 14

Slide 14 text

レコメンド実装 今回投入したデータ

Slide 15

Slide 15 text

まとめ yakumo sakura MARIO KART 名前ID name 1 yakumo 2 sakura ゲームID Favorite 1 MARIO KART 名前ID Favorite 1 MARIO KART 2 MARIO KART