Graph RAG PoC
非構造化データの「検索(Search)」から、構造化された「理解(Understanding)」への進化を目指す、ナレッジグラフ(Knowledge Graph) と ベクトル検索 を融合させた研究プロジェクトです。
背景と意義:確率から構造へ
大規模言語モデル(LLM)は「確率的な言葉のつながり」を予測することに長けていますが、事実関係の正確な把握や、論理的な一貫性の維持には課題があります。一方で、ナレッジグラフは「確定した事実関係」を構造化して保持します。
この二つを融合させる Graph RAG は、LLMに「地図(グラフ)」を持たせる試みです。 未知の領域(新しいデータ)に対しても、LLMが地図を読み解くことで、ハルシネーション(幻覚)を抑制しつつ、深い洞察を導き出すことが可能になります。
本プロジェクトが目指す可能性
単なる検索精度の向上にとどまらず、以下のような広範な応用および効果を期待しています。
1. ドメイン知識の自律的な組織化
大量の社内ドキュメントや専門書から、重要な概念(エンティティ)とその関係性を自動抽出し、組織固有の「知識ベース」を構築します。これにより、新入社員のオンボーディングや、専門知識の継承をAIが支援できるようになります。
2. サイロ化された情報の統合と発見
メール、チャット、仕様書、コードといった異なる形式のデータソースをグラフ上で結合することで、「あるコード変更が、どの会議の決定に基づき、どの顧客要望に対応したものか」といった、データソースを横断した因果関係の発見(Serendipity)を促進します。
3. 説明可能なAI(Explainable AI)への寄与
回答の根拠となったドキュメントを提示するだけでなく、「どのような推論パス(A→B→C)を経てその結論に至ったか」を可視化できます。これは、医療、法務、金融など、回答の根拠とプロセスが重要視される領域で特に大きな価値を持ちます。
プロジェクトの目的
これまでの lsh-cascade-poc(高速ベクトル検索)や image-vector-poc(画像検索)では、単一ドキュメント(点)の検索技術を確立しました。
本プロジェクトでは、データ間の「線(関係性)」を扱うナレッジグラフを導入することで、以下の課題突破を目指します。
- 文脈の欠落: 単語の類似性だけでは捉えられない、エンティティ間の関係性の理解。
- 多段推論の欠如: 「Aの影響を受けたBが作ったC」のような、複数ステップの推論が必要なクエリへの回答。
- 時間的変化の追跡: 「最新の決定事項は?」「過去からの変遷は?」といった時系列情報の処理。
検証された仮説と成果
本PoCでは、以下の仮説検証を行っています。
- Hybrid Retrieval Superiority: ベクトル検索とグラフ探索を組み合わせることで、単純なベクトル検索よりも高い回答精度を達成しました。
- Local Feasibility: Neo4j 5 と Ollama (Qwen 2.5/3.5) を用いて、クラウドAPIに依存せず、コンシューマGPU(RTX 4090)上で実用的な速度で動作することを実証しました。
- Temporal Knowledge Graph: 議事録データを用いた実験において、会議ごとの決定事項やトピックの変遷を追跡可能な「時間的ナレッジグラフ」を構築し、最新情報や意思決定プロセスに関するクエリに正確に回答できました。
アーキテクチャ
- Storage: Neo4j 5 (Graph + Vector Index), DuckDB
- Processing: LightRAG, GiNZA (NER), Custom Temporal Extraction
- Generative: Ollama (qwen2.5:14b, qwen3.5:9b)
- Interactive: Gradio (可視化・探索アプリ)
リンク
- GitHub Repository: cmscom/graph-rag-poc