Upgrade to Pro — share decks privately, control downloads, hide ads and more …

カレー好きのための 知識グラフQAシステム

Avatar for takataka365 takataka365
February 15, 2025
210

カレー好きのための 知識グラフQAシステム

#さくらのAI Meetup vol.7「自然言語によるサービス開発」
https://sakura-tokyo.connpass.com/event/344277/

カレー好きのための知識グラフにおける自然言語分析(仮)
発表資料

Avatar for takataka365

takataka365

February 15, 2025
Tweet

More Decks by takataka365

Transcript

  1. アジェンダ 1. はじめに 2. 知識グラフの魅力 3. システムの要件と仕様 4. システム概要 5.

    システムの動作と出力例 6. 得られた知見と課題 7. 今後の展望 8. おわりに 2
  2. プロフィール 名前:高橋 忠孝(たかはし ただたか) 所属:横河デジタル株式会社 自己紹介・発表のきっかけ 4 個人的な学習と探求 グラフDBとLLMの可能性を探求中 学習過程をQiitaで技術記事

    として発信 主な対象:Python / LLM / AI活用 / 図解 発表のきっかけ PythonとLLMを活用した知識グラフ QAシステム について、Qiitaに投稿した記事 に声をかけていただ きました。 本発表では、製品レベルの完成形ではなく、 学習と 実験の過程 を共有させていただきます。 個人の興味から始まった試みを通じて得られた知見 や、新しい可能性についてお話しできればと思いま す。
  3. きっかけ •グラフDB (Neo4j) との出会い(2-3年前) •知識グラフ本との出会い (2024年9月頃) •グラフ構造化への関心 なぜ知識グラフ×LLM×カレー? 5 なぜカレー?

    •Qiitaのタグとして #カレー が存在 •誰もが知る題材として最適 •関係性が豊富な実世界の例として 技術的仮説 •構造化知識でLLMの理解向上 •関係性を活かした推論 •新しい発見の可能性 実装アプローチ •Python + NetworkX + OpenAI API で シンプルに実装   •素早く検証、実験的な試み
  4. 2. 知識グラフの魅力 6 知識グラフとは 📌 データの関係を表現する構造 🔹 基本構造 • ノード(点)

    🟠: カレー(料理)、にんじん(具材)など • エッジ(線) ➡: 使用する(カレー → にんじん) 🔹 特徴 • 直感的にデータを整理 • つながりを視覚化し分析 • 新たな知見を発見
  5. 2. 知識グラフの魅力 7 データ間の関係性 データ間の関係性を視覚的に表現できる 直感的に理解可能な構造を提供 推論と新たな知識 推論によって新たな知識を発見可能 隠れたパターンを明らかにする 柔軟なクエリ

    構造化されたデータにより柔軟なクエリ実行が 可能 複雑な質問にも対応 効率的な分析 グラフベースのアルゴリズムによる効率的な分 析 大規模データセットにも対応可能
  6. 3. システムの要件と仕様 8 【システムの目的】 - カレー情報を集約し、統一的に管理 - ユーザーの質問に回答 【技術スタック】 -

    Python - NetworkX - OpenAI API (GPT) 【データ内容】 - ユーザの情報(好み・評価・コメント) - レストラン情報 (店舗名、メニュー、価格帯など) - レシピ情報(スパイス構成、調理手順など) - 必要に応じて材料/栄養情報や地域情報も拡張可能
  7. Person Nodes カレー知識グラフの具体例(ノード・エッジ) 名前 タイプ 好み Alice Person Spicy Bob

    Person Mild Charlie Person Veggie David Person Meaty Restaurant Nodes 名前 タイプ 専門料理 価格帯 Spicy King Restaurant Vindaloo Medium Green Curry House Restaurant Thai Green Curry Low Meat Paradise Restaurant Rogan Josh High Veggie Delight Restaurant Vegetable Korma Medium 12
  8. Relationships カレー知識グラフの具体例(ノード・エッジ) 開始ノード Person 終了ノード Restaurant 関係 評価 訪問 回数

    Alice Spicy King FAVORITE 5 10 Bob Green Curry House VISITED 4 3 Charlie Veggie Delight FAVORITE 5 8 David Meat Paradise FAVORITE 4 6 13
  9. 処理の流れとアウトプット ユーザーの 質問 グラフ情報 抽出 プロンプト 生成 LLM 回答生成 1.

    ユーザーからの自然言語による質問入力 2. NetworkXで管理されているグラフ情報の抽出 3. グラフ情報を組み込んだプロンプトの生成 4. LLMによる質問理解と情報分析 5. 分析結果に基づく回答の生成 14
  10. プロンプト構造 プロンプトの構成要素 1. 導入:前提の説明 2. グラフ情報の提供 3. 質問内容 4. 制約事項の明示

    制約事項 • 与えられたグラフ情報のみを使用 • 情報不足の場合は「与えられた情報 からは十分な回答ができません」と回答 15
  11. 5. システムの動作と出力例 16 質問回答の評価結果 質問 回答 評価 最も人気のあるカレー店 は? 与えられたグラフ情報から

    は十分な回答ができませ ん。 適切:情報不足を正直に認 識 新しく追加されたメニュー は? 与えられたグラフ情報から は特定できません。 適切:システムの限界を理 解 辛いカレーが好きな人にお すすめの店は? Aliceが好きなSpicy King 良好:論理的な推論を実施 Bob氏のカレーの好みは? Mild 正確:直接的な情報を提供
  12. 5. システムの動作と出力例 17 総合評価と改善点 評価ポイント • 情報の正確性: 高 • システムの限界認識:

    優れてい る • 知識グラフの活用: 効果的 • 回答の一貫性: 保たれている 改善の余地 1. より詳細な関連情報の提供 2. 推論能力の向上 3. 動的な情報更新機能の実装
  13. 6. 得られた知見と課題 19 成功点 •シンプルな実装で効果的な QA機能を実現 •NetworkXとLLMの組み合わせが有効に機能 •限界を認識し、適切な回答が可能 •柔軟なデータ構造による拡張性の確保 技術的課題

    •LLMの最大長制約への対応 •グラフデータの規模拡大時の処理 •複雑なクエリでの精度向上 •スケーラビリティの確保 システムの特徴 •システムの限界を適切に認識 •知識グラフを効果的に活用 •回答の一貫性を維持 改善の方向性 •より詳細な関連情報の提供機能 •推論能力の向上 •動的な情報更新の実装 •UI/非機能要件の整理と対応
  14. 7. 今後の展望 20 発展的な技術導入 •本格的なGraphDB(Neo4j)への移行 •RAGアーキテクチャの導入 •OpenAI以外のLLMとの連携 新機能開発 (仮) •レシピ分析機能の開発

    •味の系統樹マッピング機能 •コミュニティ機能の実装 データ戦略 •時系列データの蓄積と分析 •地理情報との連携 •グローバルカレー情報の構築 非機能要件 •クラウドインフラの最適化 •UI/非機能要件の整理と対応
  15. 8. おわりに 21 本日の内容が少しでも役立てば嬉しいです。 引き続きよろしくお願いします! 実装のポイント •シンプルな技術スタック (Python + NetworkX

    + OpenAI API) •知識グラフとLLMの組み合わせによる 柔軟な質問応答の実現 •カレードメインでの実験的な試み 今後への期待 •知識グラフを活用した新しい発見 •他ドメインへの応用可能性
  16.  Qiita記事: カレーシリーズ 22 1. Python で作る協調フィルタリング入門:カレー推薦システム - Qiita 2. グラフデータベースを用いたカレー好きのソーシャルネットワーク分析

    :Neo4j と Python の統合 - Qiita 3. 知識グラフ入門:辛さでつながる人々 - Qiita 4. カレー情報のRDFデータを使用したNeo4j知識グラフ構築チュートリアル - Qiita 5. Agentariumで作る!激辛カレーに取り憑かれたAIエージェントたちのマー ケティング戦略 - Qiita 6. Google ColabでPydantic-Graphを使って「カレー作り」を自動化する - Qiita 7. AIが提案する「トッピング&辛さ」のフローをpydantic-graphで実装する - Qiita