1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【図解】RAGとGraph RAGの違い

1
Posted at

はじめに

ChatGPTのようなLLM(大規模言語モデル)を業務で使おうとすると、必ずぶつかる壁があります。

「LLMはうちの社内文書のことなんて知らない…」

これを解決する定番技術が RAG(Retrieval-Augmented Generation:検索拡張生成) です。そして最近、その進化版として Graph RAG が注目されています。

この記事では、「RAGは聞いたことあるけど、Graph RAGって何が違うの?」 という人向けに、数式なし・図解多めで両者の違いを解説します。

そもそもRAGとは?

一言でいうと

「LLMに答えさせる前に、関連する資料を検索して渡してあげる仕組み」 です。

人間に例えるとこうなります。

例え
LLM単体 記憶だけで答える人(うろ覚え・知らないことは適当に答えがち)
RAG 図書館で本を数冊持ってきてから答える人

RAGの仕組み

処理の流れは3ステップです。

  1. 事前準備:社内文書などを数百文字ごとの「チャンク(かたまり)」に分割し、ベクトル(意味を表す数値の並び)に変換してDBに保存する
  2. 検索:質問が来たら、質問と「意味が近い」チャンクを上位k件(例:5件)取ってくる
  3. 生成:質問と取ってきたチャンクをまとめてLLMに渡し、回答を作らせる

ポイントは、検索が 「質問文とチャンクの意味的な近さ」 だけで行われることです。これが後述する弱点につながります。

RAGが得意な質問

  • 「有給休暇の申請方法は?」
  • 「製品Xの保証期間は?」

答えが どこか1〜2箇所のチャンクに書いてある タイプの質問です。「有給休暇 申請」で検索すれば、就業規則の該当箇所がヒットしますよね。これはRAGの独壇場です。

RAGの弱点

では、こんな質問はどうでしょう?

弱点1:点と点をつなぐ質問(マルチホップ質問)

「田中さんの上司が担当しているプロジェクトの予算は?」

答えを出すには、

  1. 田中さんの上司は佐藤さん(人事資料に記載)
  2. 佐藤さんの担当はプロジェクトA(体制図に記載)
  3. プロジェクトAの予算は5000万円(予算資料に記載)

複数の文書をリレーのようにたどる 必要があります。しかし「田中さんの上司が担当しているプロジェクトの予算」という質問文とベクトルが近いチャンクを探しても、この3つの資料が都合よく全部ヒットするとは限りません。特に「プロジェクトAの予算は5000万円」というチャンクには田中さんの名前が一切登場しないため、検索に引っかからないのです。

弱点2:全体を見渡す質問

「この文書群全体の主要なテーマは何?」

RAGは「関連する数件のチャンク」しか見ません。全体を俯瞰する質問には、そもそも「これを読めば分かる」というチャンクが存在しない ので、断片的な回答しかできません。1000ページの資料から5ページだけ拾い読みして「全体の要約をして」と言われても無理がありますよね。

Graph RAGとは?

一言でいうと

「文書を細切れの山ではなく、知識のつながり(グラフ)として整理してから検索するRAG」 です。

再び人間に例えると:

例え
RAG 図書館でキーワード検索して本を持ってくる人
Graph RAG 事前に登場人物の相関図と目次・あらすじを作っておき、それをたどって答える人

何が変わるのか:インデックスの作り方

Graph RAG最大の特徴は 事前準備の段階 にあります。文書をチャンクに切るところまでは同じですが、そこからLLMを使って 「エンティティ(人・組織・モノ)」と「関係」を抽出 し、ナレッジグラフ を作ります。

元の文書:

田中は営業部に所属している。営業部の部長は佐藤である。佐藤はプロジェクトAの責任者を務めており、プロジェクトAの予算は5000万円だ。

これがグラフになると:

文章の中に埋もれていた「つながり」が、明示的な線 として取り出されているのが分かるでしょうか。

さらに(Microsoft版のGraphRAGでは)、グラフ上で仲良しグループ= コミュニティ を自動検出し、それぞれに 要約文 をLLMで作っておきます。「営業関連の話題グループ」「開発関連の話題グループ」のような、文書群全体の目次+あらすじ集 ができるイメージです。

検索はどう変わる?

マルチホップ質問 → グラフをたどる

「田中さんの上司が担当しているプロジェクトの予算は?」なら、

田中 →(所属)→ 営業部 →(部長)→ 佐藤 →(責任者)→ プロジェクトA →(予算)→ 5000万円

線をたどるだけ で必要な情報が全部集まります。バラバラの文書に散らばっていた情報が、グラフ上では隣同士になっているからです。

全体俯瞰の質問 → コミュニティ要約を使う

「全体の主要テーマは?」なら、事前に作っておいた 各コミュニティの要約 をLLMに渡して統合すればOK。個別チャンクを探し回る必要がありません。

違いをまとめて比較

観点 RAG Graph RAG
データの持ち方 チャンク(細切れテキスト)の山 ナレッジグラフ+コミュニティ要約(+チャンク)
検索方法 質問との意味的な近さ グラフをたどる/要約を使う
単純なQ&A ◎ 得意 ○(できるがオーバースペック気味)
マルチホップ質問 △ 苦手 ◎ 得意
全体俯瞰・要約 ✕ ほぼ無理 ◎ 得意
事前準備のコスト 低い(埋め込み計算だけ) 高い(LLMで全文書から抽出・要約)
運用の複雑さ シンプル 複雑(グラフの更新・管理が必要)

じゃあ全部Graph RAGにすればいい?

No です。ここが実務では一番大事なポイント。

Graph RAGは事前準備で 全チャンクに対してLLMを回す ため、構築コスト(お金と時間)がRAGより桁違いにかかります。文書が更新されるたびにグラフのメンテナンスも必要です。

使い分けの目安:

  • 「〜の手順は?」のような一問一答が中心 → 普通のRAGで十分
  • 情報が複数文書にまたがる質問や、「全体として〜」という質問が多い → Graph RAGを検討
  • 実際のプロダクトでは 両方をハイブリッド で使うことも多い

まとめ

  • RAG = 質問に意味が近いチャンクを検索してLLMに渡す。単純なQ&Aに強いが、情報のつながり全体像に弱い
  • Graph RAG = 文書からナレッジグラフを構築し、関係をたどる検索コミュニティ要約で弱点を克服。ただし構築コストが高い
  • 例えるなら、RAGは「キーワード検索で本を持ってくる人」、Graph RAGは「相関図とあらすじ集を用意している人」
  • 万能薬ではないので、質問の種類でRAGと使い分けるのが実務の正解

参考

  • Lewis et al., "Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks" (2020) — RAGの原典
  • Edge et al., "From Local to Global: A Graph RAG Approach to Query-Focused Summarization" (2024) — Microsoft GraphRAGの論文
  • microsoft/graphrag (GitHub)
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?