AI・機械学習
上級

Graph RAG ナレッジグラフ構築(グラフラグナレッジグラフコウチク)

Graph RAGにおけるナレッジグラフ構築とは、テキストコーパスからLLMを用いてエンティティ(人物・組織・概念・技術等)とそれらの間の関係を抽出し、ノードとエッジで構成されるグラフ構造として体系化するプロセスである。抽出されたグラフはコミュニティ検出やクエリ時の情報検索の基盤となる。

0 回閲覧
0 いいね

ナレッジグラフ構築の概要

Graph RAGにおけるナレッジグラフ構築は、非構造化テキストを構造化された知識表現に変換する中核プロセスである。従来のナレッジグラフ構築がドメイン専門家による手動のオントロジー設計とルールベースの情報抽出に依存していたのに対し、Graph RAGではLLM(大規模言語モデル)を活用して全自動でエンティティと関係を抽出する。

ナレッジグラフの品質がGraph RAG全体の性能を決定づけるため、抽出の精度と網羅性の確保が最重要課題となる。Microsoft Researchの論文では、Gleaning(反復抽出)という独自の手法により、単一パスでは見逃されるエンティティや関係を補完する仕組みが提案されている。

ナレッジグラフは、ノード(エンティティ)とエッジ(関係)で構成されるProperty Graphモデルで表現される。各ノードはエンティティ名・型・説明文の属性を持ち、各エッジはソースエンティティ・ターゲットエンティティ・関係の説明・強度スコアの属性を持つ。

グラフスキーマ設計

Graph RAGのグラフスキーマは、ドメインに応じて柔軟に設計する必要がある。Microsoft GraphRAGのデフォルト実装では、型指定のないオープンスキーマを採用しているが、実運用では事前に型体系を定義することで抽出精度が向上する。

エンティティ型の設計

エンティティ型説明例用途
PERSON人物・著者・研究者Albert Einstein, 田中太郎人物関係の追跡
ORGANIZATION企業・研究機関・政府機関Microsoft, 東京大学組織間関係の分析
TECHNOLOGY技術・アルゴリズム・プロトコルTransformer, TCP/IP技術関連の知識体系化
CONCEPT抽象概念・理論・手法RAG, 機械学習概念間の関係マッピング
PRODUCT製品・サービス・ツールGPT-4, Neo4j製品比較・技術スタック分析
EVENTイベント・会議・リリースNeurIPS 2024, v2.0リリース時系列分析
LOCATION地名・施設シリコンバレー, 東京地理的分析

関係型の設計

関係型は方向性を持ち、ソースエンティティからターゲットエンティティへの意味的な接続を表現する。Graph RAGでは、LLMに関係の説明文を自由記述させるアプローチと、事前定義された関係型に分類させるアプローチの2種類がある。

自由記述アプローチは柔軟性が高いが、類似する関係が異なる表現で抽出されるため後処理での正規化が必要になる。事前定義アプローチは一貫性が高いが、定義されていない関係型を見逃すリスクがある。

LLMによるエンティティ・関係抽出

Graph RAGのエンティティ抽出では、各テキストチャンクに対してLLMを呼び出し、構造化されたエンティティと関係のリストを出力させる。

抽出プロンプトの設計

Microsoft GraphRAGの抽出プロンプトは、以下の要素で構成される。

  1. タスク説明: テキストからエンティティと関係を抽出する指示
  2. エンティティ型リスト: 抽出対象のエンティティ型(カスタマイズ可能)
  3. 出力形式: JSON/CSV等の構造化フォーマット仕様
  4. Few-shot例: 入力テキストと期待される抽出結果のペア
  5. 品質指示: 曖昧なエンティティの扱い、重複排除のルール

Gleaning(反復抽出)

Gleaningは、Microsoft GraphRAGが導入した抽出品質向上手法である。初回の抽出結果をLLMに提示し、「見逃されたエンティティや関係はないか」と問い合わせることで、追加のエンティティ・関係を抽出する。このプロセスを設定回数(デフォルト1回)繰り返す。

Gleaningにより再現率は10〜30%向上するが、LLM呼び出し回数が倍増するためコストも比例して増加する。コストと品質のトレードオフを考慮して、Gleaning回数を調整する必要がある。

Gleaning回数再現率向上(目安)コスト増加推奨シーン
0回(なし)ベースライン1.0xコスト最優先、大規模コーパス
1回+15〜25%2.0x標準(推奨デフォルト)
2回+20〜30%3.0x高品質が必要な場合
3回以上+25〜35%(逓減)4.0x+極めて重要なドメイン

グラフ統合と重複排除

チャンク単位で抽出されたエンティティと関係は、グラフ全体での統合と重複排除が必要である。同一エンティティが異なるチャンクで異なる表現(略称、正式名称、別名等)で出現する場合、これらを同一ノードに統合しなければならない。

エンティティ解決(Entity Resolution)

エンティティ解決は、以下のステップで行われる。

  1. 名前正規化: 大文字小文字の統一、空白の正規化
  2. 類似度計算: 文字列類似度(Levenshtein距離、Jaro-Winkler類似度)による候補ペアの特定
  3. LLM判定: 類似度が閾値を超えるペアに対して、LLMが同一エンティティかどうかを判定
  4. マージ: 同一と判定されたエンティティのノードを統合し、説明文を結合

エッジの集約

同一エンティティペア間で複数の関係が抽出された場合、関係の説明文を結合し、強度スコアを合算する。これにより、コーパス内で頻繁に言及される関係ほど高い重みを持つエッジが生成される。

グラフの品質評価

構築されたナレッジグラフの品質は、以下の指標で評価する。

評価指標説明目標値測定方法
エンティティ精度抽出エンティティの正確性>85%サンプル手動検証
エンティティ再現率重要エンティティの網羅性>70%ゴールドスタンダード比較
関係精度関係の正確性>75%サンプル手動検証
グラフ連結性最大連結成分の割合>80%グラフ分析
平均次数ノードあたりの平均エッジ数3〜10グラフ統計

低品質なグラフは、コミュニティ検出の結果を劣化させ、最終的な回答品質に直結する。グラフ構築後には必ず品質チェックを行い、必要に応じてプロンプトの調整やGleaning回数の増加で対処する。

グラフストレージの選択

ストレージ適用規模クエリ性能運用コスト推奨用途
Parquetファイル〜10万ノード低(全件スキャン)最低PoC・実験
NetworkX(インメモリ)〜100万ノード高低(メモリ依存)中規模バッチ処理
Neo4j〜数十億ノード高(Cypher最適化)中〜高本番運用
Amazon Neptune〜数十億ノード高高(マネージド)AWSベース本番運用
Azure Cosmos DB Gremlin〜数十億ノード中〜高高(マネージド)Azureベース本番運用

よくある質問(FAQ)

Q1: 既存のナレッジグラフ(Wikidata等)をGraph RAGに統合できますか?

可能である。外部ナレッジグラフのエンティティとGraph RAGが抽出したエンティティをEntity Resolutionで対応付けることで、外部知識を補完的に活用できる。ただし、スキーマの違い(Property Graphモデル vs RDFトリプル)の変換が必要になる場合がある。WikidataやDBpediaのエンティティIDを正規化キーとして使用することで、グラフ間の接続精度が向上する。

Q2: グラフの増分更新は可能ですか?

Microsoft GraphRAG(2024年版)では増分更新機能は限定的である。新規ドキュメント追加時はエンティティ抽出と既存グラフへのマージが可能だが、コミュニティ検出とサマリ生成は再実行が必要になる。大規模コーパスの頻繁な更新がある場合は、変更されたコミュニティのみを再計算するpartial updateの仕組みを独自実装する必要がある。LlamaIndexのPropertyGraphIndexは、より柔軟な増分更新をサポートしている。

Q3: マルチ言語コーパスに対応していますか?

LLMが対応する言語であれば原理的にマルチ言語対応が可能である。ただし、エンティティ解決において、同一エンティティが異なる言語で表記される場合(例: Japan / 日本 / 日本国)の統合が課題となる。多言語対応のEmbeddingモデル(multilingual-e5-large等)を使用し、クロスリンガルなエンティティ解決パイプラインを構築することで精度を向上できる。