🕸️

GraphRAG を用いた構造化データ検索の強化: サッカーデータのケーススタディ

2024/10/15に公開

この記事 is 何

この記事は、構造化データから知識グラフ(KG, Knowledge Graph)を生成し、GraphRAGとしてクエリ応答に応用した結果について、日本語で簡単にまとめたものです。

https://arxiv.org/abs/2409.17580

本題

サマリー

RAG(Retrieval Augmented Generation)では、LLMによる回答の生成において、外部データベースからの情報を利用します。この際抽出したドキュメント間の関係性を考慮しないため、回答の質が低下することがあります。そこで登場するのがGraphRAGです。ドキュメント間の関係を捉えることで、より精度の高い検索、及びデータ間の関係性をLLMに与えることができます。本論文では、SoccerNetというデータセットを用い、GraphRAGを用いたアプローチでクエリ処理効率の改善及び解答精度の向上したことを示しています。

手法

データセット

SoccerNetというデータセットは以下のような構造化データの集合です。

{
  "annotations": [
    {
      "gameTime": "1 - 00:00",
      "label": "Kick-off",
      "position": "0",
      "team": "away",
      "visibility": "visible"
    },
    {
      "gameTime": "1 - 02:13",
      "label": "Ball out of play",
      "position": "133295",
      "team": "not applicable",
      "visibility": "visible"
    }
  ]
}

知識グラフの生成

Neo4jをベクトルDBとして利用。

Figure 5.An example of Game node.
Figure 5 より引用

サッカーの試合のノードとチームの接続例。データセットはクリスタルパレス(Crystal Palace)とチェルシー(Chelsea)の試合のデータ。

Figure 7.An example of Game and Team connections. .png
Figure 7 より引用

Q&A システムの構築

以下のようなQ&Aシステムを構築しています。

  1. ユーザの質問を受け付ける
  2. ユーザの質問をグラフDBに問い合わせるためのCypher Queryという形式に変換
  3. 知識グラフ(KG)から関連情報を抽出
  4. 抽出した情報をもとにLLMを用いて回答を生成
  5. 生成した回答をユーザに返す

Figure 1.Framework overview.
Figure 1 より引用

実験

以下の表は、データセットから導き出された質問のサンプルセットを日本語訳したものです。
ここに挙げられている例は網羅的なものではなく、各カテゴリーにはさらに多くの例が含まれます。

Q # カテゴリー
Q1 データセット内のチーム/プレイヤーの存在に関する質問 マンチェスター・ユナイテッドはデータベースに含まれていますか?
Q2 特定シーズンにおけるチームの総ホームイベントに関する質問 2014-15 シーズンのバイエルン・ミュンヘンの総ホームゴール数を教えてください。
Q3 シーズンにおけるホームチームの優位性に関する質問 2015-16 シーズンのレアル・マドリードのホームアドバンテージを計算してください。
Q4 特定のシーズン/リーグにおけるプレイヤーの得点数に関する質問 2015-16 シーズンでメッシは何ゴール決めましたか?
Q5 特定のシーズン/リーグにおけるプレイヤーのイエローカード/レッドカード数に関する質問 2015-16 シーズンでエンソ・ペレスは何枚のイエローカードをもらいましたか?
Q6 特定のシーズンとリーグで指定されたチームと対戦したすべてのチームに関する質問 セリエ A の 2016-17 シーズンでナポリと試合をしたすべてのチームをリストアップしてください。
Q7 特定のリーグの特定シーズンにおけるすべてのチームに関する質問 2015-2016 シーズンの UCL リーグに所属するすべてのチームを教えてください。
Q8 シーズン/リーグの前半/後半のイベントから情報を取得する質問 2015-2016 シーズンの EPL で前半にイエローカードが出たすべての試合を教えてください。
Q9 プレイヤーのチームに関連する情報を取得する質問 アドナン・ヤヌザイはどのチームとリーグでプレーしましたか?
Q10 シーズン/リーグの特定の試合における得点数に関する質問 2015-2016 シーズンのボーンマス vs チェルシーの試合で、E・アザールは何ゴール決めましたか?
Q11 シーズンまたはリーグ内の特定の試合におけるゴールの詳細情報を取得する質問 2015-16 シーズンでマルセロのゴールをアシストしたのは誰ですか?
Q12 特定のシーズン/リーグにおけるプレイヤーのイエローカード/レッドカードの理由に関する質問 2015-2016 シーズンでエンソ・ペレスがイエローカードをもらった理由は何ですか?
Q13 特定のシーズン/リーグにおけるイエローカード/レッドカードの数に関する質問 2015-2016 年の UEFA チャンピオンズリーグで出されたイエローカードとレッドカードの数はそれぞれいくつで、レッドカードを受けた選手はいましたか?
Q14 シーズンまたはリーグ内の特定の試合におけるイベントの詳細情報を取得する質問 2015-2016 シーズンのボーンマス vs チェルシーの試合でどのようなイベントが起こりましたか?
Q15 特定のシーズン中の特定のリーグで特定のイベントが起こった日付に関する質問 2015-2016 シーズンのイングランド・プレミアリーグ(EPL)でコーナーキックが起こった日付のリストを作成してください。
Q16 プレイヤーに関する情報を取得する質問 データセットにクリスティアーノ・ロナウドに関してどのような情報がありますか?
Q17 審判に関する質問 アトキンソン M.が審判を務めた試合について教えてください。
Q18 コーチに関する質問 アーセナルのコーチの名前をリストアップしてください。
Q19 会場に関する質問 サンティアゴ・ベルナベウ・スタジアムでどの試合が行われましたか?
Q20 試合情報に関する質問 2014-2015 シーズンのチェルシー vs バーンリーの試合に関するすべての情報を教えてください。
Q21 シーズン中にどちらのチームがより多くの試合に勝利したかを判断する質問 2014-15 シーズンで、アーセナルとリバプールのどちらがより多くの試合に勝利しましたか?
Q22 シーズン中にチームが勝利した試合数に関する質問 2014-15 シーズンでアーセナルは何試合勝利しましたか?
Q23 複数のチームが含まれるリーグに関する質問 マンチェスター・ユナイテッド、アーセナル、ボーンマス、レアル・マドリード、チェルシー、リバプールが所属するリーグは何ですか?

結果

以下のような結果になりました。
評価の方法としては、10個の質問を用意し、それぞれ5回ずつ繰り返しChatBotに質問を行います。比較対象が左側、Structured GraphRAGを用いない単純なRAGを用いたChatBotです。こちらは36%の精度ですが、一方、Structured GraphRAGを適用した場合、64%の精度となりました。

result
Table 5 より引用

比較対象にされているのは、SoccerRAG: Multimodal Soccer Information Retrieval via Natural Queriesです。この論文でも、同様にSoccerNetを用いてRAGの性能評価をしているため、今回のGraphRAGの性能を比較することができています。Structured GraphRAGのほうが正答率が高いことがわかります。

まとめ

Microsoftもgraphragというオープンソースのコードを公開しており、GraphRAGは未だ試行錯誤が各企業においても行われている黎明期のフェーズであるといえるでしょう。GraphRAGが向いているユースケースというのは、例えば、登場人物が多い文書、文書間の紐づけが多い文書などがあげられます。

Discussion