Skip to content

cmscom/graph-rag-poc

Repository files navigation

graph-rag-poc

Vector Search × Knowledge Graph Integration Research

1. Project Context & Vision

本プロジェクトは、非構造化データの「検索(Search)」から、構造化された「理解(Understanding)」への進化を目指す研究開発(PoC)です。

これまでの研究により、以下の技術知見を獲得しました:

  1. Natural Language Search: lsh-cascade-poc にて、LSHを用いた高速な近似最近傍探索と、意味空間での検索精度を検証。
  2. Image Vectorization: image-vector-poc にて、画像を数値ベクトル化し、視覚情報の検索可能性を実証。

これらの技術は強力ですが、「点(単一のドキュメント)」の検索に留まります。本プロジェクト graph-rag-poc では、データ間の「線(関係性)」を扱う**ナレッジグラフ(Knowledge Graph)**を導入し、ベクトル検索の限界(文脈欠落、多段推論の欠如)を突破することを目的とします。

2. Core Research Hypotheses (検証仮説)

  • Hypothesis 1: Hybrid Retrieval Superiority — Status: Confirmed

    • ベクトル検索 + グラフ構造探索の「ハイブリッド検索」が、単純なベクトル検索より高い回答精度を得られる。
    • 結果: 全スケール(17, 5K, 400K)で確認。40万件でVector 15.6ms / Hybrid 31.8ms、平均+8.7件の追加コンテキスト発見。
  • Hypothesis 2: Local Feasibility — Status: Confirmed

    • ローカルLLMとグラフDBの組み合わせで、実用的な速度とコストで動作可能。
    • 結果: Neo4j 5 + E5-base + Ollama、すべてRTX 4090上で動作。クラウドAPI依存なし。
  • Hypothesis 3: Temporal Knowledge Graph — Status: Confirmed

    • 時系列情報を持つナレッジグラフにより、「最新」「変遷」「意思決定の追跡」といった時間的クエリに回答可能。
    • 結果: PyCon JP議事録78件から時間的KGを構築。Hybrid RAG(LightRAG + Temporal KG)で最新情報・意思決定クエリに正確回答。

3. High-Level Architecture

Storage Layer

  • Graph Database: Neo4j 5 Community (Docker)
  • Vector Indexes: Neo4j native vector index (E5-base 768d)
  • External Data: DuckDB (Wikipedia 40万件, PyCon JP議事録115件)

Processing Layer

  • KG構築: 正規表現 + GiNZA NER + LLMハイブリッド抽出
  • LightRAG: エンティティ・関係性の自動抽出 + ベクトル検索
  • Temporal KG: 会議日付・NEXT_MEETING時間チェーン・エンティティ解決
  • Retrieval: Temporal RAG v1/v2/v3/v4 + LightRAG + Hybrid RAG

Generative Layer

  • LLM: Ollama (qwen2.5:14b, qwen3.5:9b, gemma3:12b 等) — ローカルGPU

Interactive Layer

  • Gradio App: LightRAGグラフ探索 + 可視化 (run_app.py)
  • Meeting Explorer: 議事録閲覧 + 関連検索 (run_meeting_explorer.py)

4. Research Series

Series 1: Foundation & Validation (COMPLETED)

40万件Wikipediaデータでのハイブリッド検索の基本的有効性を検証。

# Notebook Focus
01 01_foundation.ipynb Neo4j graph construction, Cypher basics
02 02_hybrid_search.ipynb Keyword embedding + graph traversal
03 03_embedding_search.ipynb E5-base vs keyword comparison
04 04_graph_rag.ipynb Local LLM + hybrid search RAG
05 05_wikipedia_knowledge_graph.ipynb DuckDB → Neo4j pipeline (5K)
06 06_scale_testing.ipynb 400K benchmark, RAG quality at scale
07 07_02_multimodal_image.ipynb CLIP image integration
08 08_evaluation_summary.ipynb Cross-experiment evaluation

Key Results: 399,430 nodes, Vector 15.6ms / Hybrid 31.8ms, LightRAG 1-hopがパレート最適。

Series 2: LightRAG & Private Documents (COMPLETED)

LightRAGによる自動グラフ構築と、非公開文書2,768件での検証。

# Notebook Focus
09-14 Series 1 追加実験 SigLIP 2, VLM, マルチホップ等
21 21_lightrag_setup.ipynb LightRAG初期設定
22 22_lightrag_private_docs.ipynb 非公開文書でのLightRAG検証
23 23_lightrag_full_private_docs.ipynb 全件2,768ドキュメント投入
24 24_lightrag_evaluation.ipynb 4モード比較評価
25 25_lightrag_interactive.ipynb インタラクティブ検索

Series 3: PyCon JP Minutes + LightRAG (COMPLETED)

PyCon JP運営会議議事録115件でのLightRAG検証。結果: 適切な回答が得られず、構造化アプローチの必要性を確認。

# Notebook Focus
31 31_pyconjp_scraping.ipynb 議事録スクレイピング・DuckDB保存
32 32_pyconjp_lightrag.ipynb LightRAGグラフ構築
33 33_pyconjp_incremental.ipynb 増分インジェスト
34 34_pyconjp_evaluation.ipynb 評価(不十分な結果)
35 35_pyconjp_no_minutes.ipynb 非議事録ページの検証
36-37 36-37_lightrag_qwen_eval.ipynb Qwen2.5モデルでの再評価

Series 4: Temporal Knowledge Graph (COMPLETED)

PyCon JP議事録から時間的ナレッジグラフを構築し、時系列クエリに対応するRAGパイプラインを開発。

# Notebook Focus
41 41_temporal_extraction.ipynb 正規表現+GiNZA+LLMハイブリッド抽出
42 42_temporal_graph.ipynb Neo4j時間的KG構築・NEXT_MEETINGチェーン
43 43_temporal_rag.ipynb Temporal RAG v1 (基本)
44 44_temporal_rag_v2.ipynb Temporal RAG v2 (追加コンテキスト)
45 45_temporal_reasoning.ipynb v3: TOPIC_CONTINUEDチェーン推論
46 46_temporal_rag_v4.ipynb v4: LLMルーティング・クエリ分類
47 47_hybrid_rag.ipynb Hybrid RAG (LightRAG + Temporal KG統合)
48 48_graph_direct_answer.ipynb グラフ直接回答
49 49_temporal_kg_visualization.ipynb Gradioアプリでの可視化・検証
50-53 50-53_*.ipynb 因果分析・トピッククラスタリング・評価

Qwen3.5モデル比較 (NB54-61):

# Notebook Focus
54 54_qwen35_baseline.ipynb qwen3.5 9B/27B ベースライン
55 55_temporal_extraction_qwen35.ipynb Qwen3.5での全件再抽出
56 56_temporal_rag_qwen35.ipynb Temporal RAG v1/v2 評価
57 57_temporal_reasoning_qwen35.ipynb v3/v4 + Reasoning評価
58 58_lightrag_qwen35.ipynb LightRAGグラフ再構築 (9B)
59 59_hybrid_rag_qwen35.ipynb Hybrid RAG統合評価
60 60_qwen35_moe_baseline.ipynb MoE 35B-A3B ベースライン
61 61_qwen35_moe_q3_comparison.ipynb Q4 vs Q3量子化比較
62-63 スキップ MoEは4090で実用外と判断

Series 4 Key Results

  • Temporal KG: 会議78件、918エンティティ、1,288リレーション、NEXT_MEETINGチェーン
  • 最適モデル: qwen2.5:14b(速度重視: 19s/件)、qwen3.5:9b(バランス: 70s/件)
  • MoE 35B-A3B: RTX 4090ではメモリ帯域律速で実用外(212s/件、品質も9b以下)
  • Hybrid RAG: 最新情報・意思決定追跡で構造化データの正確性が発揮(Q8, Q13)
  • 手法別推奨: 最新情報→Hybrid RAG、一般クエリ→LightRAG、時系列→Temporal v3/v4

5. Source Modules

src/graph_rag_poc/ に再利用可能なモジュールを配置。

Module Description
connection.py Neo4j接続管理
embedding.py E5-base テキスト埋め込み
llm.py Ollama LLMクライアント
temporal_extraction.py 正規表現+GiNZA+LLMハイブリッド抽出
temporal_graph.py Neo4j時間的KG構築・エンティティ解決
temporal_rag.py / v2 / v4 Temporal RAG v1/v2/v4
temporal_reasoning.py TOPIC_CONTINUEDチェーン推論 (v3)
hybrid_rag.py LightRAG + Temporal KG統合パイプライン
lightrag_service.py LightRAGシングルトン管理・グラフ分析
app.py Gradio LightRAG Explorer
meeting_explorer.py Gradio 議事録エクスプローラー

6. Gradio Applications

LightRAG Explorer (run_app.py)

LightRAGのナレッジグラフを対話的に探索・可視化するWebアプリ。

python run_app.py
  • グラフ統計・ハブランキング
  • エンティティ検索・近傍可視化
  • 4モード検索 (naive/local/global/hybrid)

Meeting Explorer (run_meeting_explorer.py)

PyCon JP議事録のTemporal KGを可視化し、関連性を人の目で検証するアプリ。

python run_meeting_explorer.py
  • 会議一覧・議題閲覧
  • エンティティ関連検索
  • 時系列可視化

7. Setup

# Python 3.13 + uv
uv sync

# Neo4j (Docker)
docker compose up -d

# Ollama (LLM)
ollama pull qwen2.5:14b
ollama pull qwen3.5:9b

# Gradio App
python run_app.py

Requirements

  • Python 3.13, uv
  • Neo4j 5 (Docker)
  • Ollama + RTX 4090 (24GB VRAM)
  • GiNZA (ja-ginza) for Japanese NER

8. Guiding Principles

  • Local First: ローカル環境で完結する技術を選定(コスト・プライバシー)
  • Visual Verification: グラフ可視化で「データの繋がり」を目で検証
  • Modular Design: モデル・DB・検索手法を差し替え可能な設計

Author: [Manabu TERADA / CMScom Lab] Status: Series 1-4 Complete Last Updated: 2026-03-07

About

GraphRAGの調査研究

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors