GraphRAGの概要
GraphRAGとは
Neo4j等のGraphDBを使ったRAG(検索拡張生成)のこと。
従来型RAG(vectorRAG)の問題点
従来のRAG(vectorRAG)では、ドキュメントの局所的な内容に対する回答には対応できるものの、全体を俯瞰した参照が必要な質問への回答ができなかった。
GraphRAGでできること
ドキュメント全体を横断的に参照する必要がある質問、例えばドキュメントの概要説明に回答できたり、ドキュメント内の用語ごとの関連性など、全体的な文脈を踏まえた読解が必要となる内容への質問に回答することができる。
なぜそんなことができるか
ドキュメントに記載されている文章そのものに加え、ドキュメント内の部分同士の関連性を表現できるため、従来型のRAGに比べてドキュメントから抽出する情報の損失を大幅に減らすことに成功している。
GraphRAGのワークフロー
vectorRAGのワークフロー
vectorRAGでは、対象ドキュメントをチャンキング(切り分け)したのちベクトル化(Embedding)、それをvectorDBとして組み込む。そして、ユーザー入力(問い合わせ、query)とのベクトル類似度が高いチャンクを検索結果とし、LLMのpromptに組み込む。そのため、ドキュメント内でLLMが参照できる情報は、チャンクに含まれるごく一部のテキストに限られる。
GraphRAGのワークフロー
GraphRAGは、特にチャンキング後の処理がvectorRAGと大きく異なる。
- Entities & Relationships
各チャンクをドメイン(ドキュメントの専門領域や組織内での特殊な文脈など)を踏まえて要約する(Entities)。更に、各ドメイン同士の関係、関連を結び付ける(Relationships)。 - Knowledge Graph
全てのドメイン同士の要約、関係をGraphとして結びつける。 - Graph Communities
作成したKnowledge Graphから、コミュニティーを検出する。検出アルゴリズムは論文上、Leiden community detection(Traag et al., 2019)を採用。 - Community Summaries
検出したCommunity単位での要約を実施。 - Community Answers
ユーザークエリ(問い合わせ)の内容に対して、各Communityごとに要約回答を生成。 - Global Answer
Community Answersを総括し、ドキュメント全体でのユーザークエリに対する回答を生成する
reference
From Local to Global: A GraphRAG Approach to Query-Focused Summarization
https://arxiv.org/pdf/2404.16130