🚀 知識グラフビルダーMCPサーバー
この知識グラフビルダーは、MCP(Model Context Protocol)を統合したローカルAIモデルを使用して、テキストやウェブコンテンツを構造化された知識グラフに変換し、Neo4jとQdrantに永続的に保存します。
🚀 クイックスタート
知識グラフビルダーMCPサーバーを使用することで、テキストやウェブコンテンツから構造化された知識グラフを生成できます。以下のセクションでは、このアプリケーションの機能、セットアップ、実行方法、使用例などについて説明します。
✨ 主な機能
- ローカルAI処理:OllamaまたはLM Studioを介してローカルモデルを使用してエンティティを抽出します。
- 大規模コンテンツ対応:インテリジェントなチャンク分割により、任意の大きさのコンテンツ(300MB以上)を処理できます。
- ウェブコンテンツ抽出:サイズ制限なしで、ウェブページ全体をスクレイピングして分析します。
- 知識グラフ生成:エンティティと関係を持つ構造化されたグラフを作成します。
- スマートチャンク分割:文境界検出により、大規模コンテンツを自動的にチャンク分割します。
- エンティティマージ:チャンク間で重複するエンティティをインテリジェントにマージします。
- リアルタイム可視化:チャンクが処理されるたびに、SVGグラフがリアルタイムに更新されます。
- インタラクティブなSVG出力:エンティティタイプが色分けされ、進捗状況が追跡されます。
- MCP統合:データをNeo4j(グラフデータベース)とQdrant(ベクトルデータベース)に保存します。
- UUID追跡:システム全体で統一的なエンティティ追跡のために、UUIDv8を生成します。
- Gradioインターフェイス:JSONとSVGのデュアル出力を持つユーザーフレンドリーなウェブインターフェイスが提供されます。
📊 抽出されるエンティティタイプ
- 👥 PERSON:名前、個人、主要人物
- 🏢 ORGANIZATION:会社、機関、グループ
- 📍 LOCATION:場所、国、地域、住所
- 💡 CONCEPT:アイデア、技術、抽象的な概念
- 📅 EVENT:特定のイベント、出来事、事故
- 🔧 OTHER:他のカテゴリに適合しないその他のエンティティ
📦 インストール
必要条件
pip install -r requirements.txt
pip install networkx matplotlib
環境変数
詳細な設定手順と完全な環境変数のリファレンスについては、以下の設定セクションを参照してください。
クイックスタート設定:
export MODEL_PROVIDER=ollama
export LOCAL_MODEL=llama3.2:latest
export OLLAMA_BASE_URL=http://localhost:11434
export CHUNK_SIZE=2000
export MAX_CHUNKS=0
注意: すべての環境変数はオプションであり、適切なデフォルト値が設定されています。設定なしでもアプリケーションは実行できます。
ローカルモデルのセットアップ
Ollamaの場合:
curl -fsSL https://ollama.ai/install.sh | sh
ollama serve
ollama pull llama3.2:latest
LM Studioの場合:
- LM Studioをダウンロードしてインストールします。
- ローカルサーバーでモデルをロードします。
- ポート1234でローカルサーバーを起動します。
💻 使用例
基本的な使用法
テキスト入力
分析するテキストコンテンツを貼り付けます。
Apple Inc. was founded by Steve Jobs, Steve Wozniak, and Ronald Wayne in 1976. The company is headquartered in Cupertino, California.
URL入力
ウェブURLを指定して、コンテンツを抽出し分析します。
https://en.wikipedia.org/wiki/Artificial_intelligence
大規模コンテンツの処理 (300MB以上のファイル)
非常に大きなコンテンツ(例えばLLMの会話抽出物)を処理する場合:
出力形式
システムは構造化されたJSON形式の知識グラフを返します。
{
"source": {
"type": "text|url",
"value": "input_value",
"content_preview": "first 200 characters..."
},
"knowledge_graph": {
"entities": [
{
"name": "Apple Inc.",
"type": "ORGANIZATION",
"description": "Technology company founded in 1976"
}
],
"relationships": [
{
"source": "Steve Jobs",
"target": "Apple Inc.",
"relationship": "FOUNDED",
"description": "Steve Jobs founded Apple Inc."
}
],
"entity_count": 5,
"relationship_count": 4
},
"visualization": {
"svg_content": "<svg>...</svg>",
"svg_file_path": "/path/to/knowledge_graph_12345678.svg",
"visualization_available": true,
"real_time_updates": false,
"incremental_files_saved": 0,
"entity_color_mapping": {
"ORGANIZATION": "#4ECDC4",
"PERSON": "#FF6B6B"
},
"svg_generation_timestamp": "2024-01-15T10:30:05Z",
"visualization_engine": "networkx+matplotlib"
},
"metadata": {
"model": "ollama:llama3.2:latest",
"content_length": 150,
"uuid": "xxxxxxxx-xxxx-8xxx-xxxx-xxxxxxxxxxxx",
"neo4j_stored": true,
"qdrant_stored": true,
"timestamp": "2024-01-15T10:30:00Z",
"hkg_metadata": {
"processing_method": "single",
"chunk_count": 1,
"chunk_size": 2000,
"chunk_overlap": 200,
"source_type": "text",
"supports_large_content": true,
"max_content_size": "unlimited",
"visualization_integration": {
"real_time_visualization": false,
"svg_files_generated": 1,
"entity_color_tracking": true,
"visualization_lineage": true,
"incremental_updates": false,
"neo4j_viz_metadata": true,
"qdrant_viz_metadata": true
}
}
}
}
📚 ドキュメント
リアルタイムグラフ可視化
SVG生成の機能
- 色分けされたエンティティタイプ:各エンティティタイプには固有の色が割り当てられています(Person=赤色、Organization=水色、Location=青色、Concept=緑色、Event=黄色、Other=紫色)
- インタラクティブなレイアウト:NetworkXのspringレイアウトアルゴリズムを使用して自動的にグラフのレイアウトが設定されます。
- 関係ラベル:エンティティ間の関係タイプを示すエッジラベルが表示されます。
- エンティティ情報:ノードラベルにはエンティティの名前とタイプが表示されます。
- 凡例:存在するエンティティタイプに基づいて自動的に凡例が生成されます。
- 統計情報:リアルタイムのエンティティと関係の数が表示されます。
大規模コンテンツのリアルタイム処理
- 進捗追跡:チャンクの処理完了状況を示すビジュアルな進捗バーが表示されます。
- 増分更新:各チャンクが処理された後にグラフが更新されます。
- ライブ統計:発見されたエンティティと関係の合計数が表示されます。
- 増分ファイル保存:各チャンクでタイムスタンプ付きのSVGファイルが作成されます。
- 最終可視化:完全なグラフが最終的なSVGファイルとして保存されます。
ファイル出力
- 単一コンテンツ:
knowledge_graph_<uuid8>.svg
- 大規模コンテンツ (チャンク分割):
- 増分:
knowledge_graph_<uuid8>_chunk_0001.svg
, chunk_0002.svg
, など
- 最終:
knowledge_graph_<uuid8>.svg
大規模コンテンツ処理の例
hKG (Hybrid Knowledge Graph) の可視化統合ストレージ
Neo4j統合 (グラフデータベース)
- エンティティをプロパティと拡張メタデータを持つノードとして保存します。
- エンティティ間の関係を履歴追跡付きで作成します。
- すべてのデータベースでエンティティ追跡のためにUUIDv8を維持します。
- 大規模コンテンツ処理のためのチャンク分割メタデータを追跡します。
- 処理方法(単一またはチャンク分割)を記録します。
- 新機能: エンティティの観測データに可視化メタデータが含まれるようになりました。
- SVGファイルのパスと可用性の状態
- グラフ可視化のためのエンティティの色マッピング
- チャンク分割処理のためのリアルタイム更新の追跡
- 大規模コンテンツ処理のための増分ファイルのカウント
- MCPサーバーツールを通じてアクセス可能です。
Qdrant統合 (ベクトルデータベース)
- 知識グラフを拡張メタデータ付きのベクトル埋め込みとして保存します。
- 任意のサイズのグラフに対する意味検索を可能にします。
- 各知識グラフのメタデータ(チャンク情報を含む)を維持します。
- コンテンツの長さ、処理方法、チャンク数を追跡します。
- 大規模なドキュメントコレクションに対する類似性検索をサポートします。
- 新機能: 可視化の履歴追跡が含まれるようになりました。
- エンティティタイプと色マッピングの情報
- SVG生成のタイムスタンプとファイルパス
- リアルタイム可視化の更新履歴
- 大規模コンテンツのための増分SVGファイルの追跡
- MCPサーバーツールを通じてアクセス可能です。
可視化履歴付きのhKG統一追跡
- すべてのシステムでUUIDv8:共通の祖先エンコードされた識別子
- コンテンツの履歴:大規模コンテンツがどのように処理され、チャンク分割されたかを追跡
- 処理メタデータ:チャンクサイズ、オーバーラップ、処理方法を記録
- エンティティの出所:各エンティティに寄与したチャンクを追跡
- 関係マッピング:チャンク境界を越えて関係を維持
- 意味的な一貫性:データベース間で知識グラフの一貫性を確保
- 新機能 - 可視化履歴:ビジュアル表現の完全な追跡
- SVGファイルの出所:生成されたすべての可視化ファイルをタイムスタンプ付きで追跡
- エンティティの色の一貫性:すべてのチャンクとストレージシステムで色マッピングを維持
- リアルタイム可視化の履歴:処理時のすべての増分グラフ更新を記録
- クロスデータベースのビジュアル同期:Neo4jとQdrantで可視化メタデータを同期
- 増分可視化の監査:リアルタイム更新の完全なトレイルを記録
アーキテクチャ
コアコンポーネント
app.py
:Gradioインターフェイスを持つメインアプリケーションファイル
extract_text_from_url()
:ウェブスクレイピング機能 (app.py:41)
chunk_text()
:文境界検出によるスマートなコンテンツチャンク分割 (app.py:214)
merge_extraction_results()
:チャンク結果のインテリジェントなマージ (app.py:250)
get_entity_color()
:エンティティタイプの色マッピング (app.py:299)
create_knowledge_graph_svg()
:SVGグラフの生成 (app.py:311)
RealTimeGraphVisualizer
:リアルタイムの増分可視化 (app.py:453)
extract_entities_and_relationships()
:AIによるエンティティ抽出とリアルタイム更新 (app.py:645)
extract_entities_and_relationships_single()
:単一チャンクの処理 (app.py:722)
build_knowledge_graph()
:可視化付きのメインオーケストレーション関数 (app.py:795)
generate_uuidv8()
:エンティティ追跡のためのUUID生成 (app.py:68)
hKG統合とリアルタイム可視化を伴うデータフロー
- 入力処理:テキストまたはURL入力の検証
- コンテンツ抽出:URLの場合はウェブスクレイピング、テキスト入力の場合は直接テキストを使用
- リアルタイム可視化システムのセットアップ:増分グラフ可視化システムを初期化
- コンテンツのチャンク分割:大規模コンテンツ(2000文字以上)を文境界検出でスマートにチャンク分割
- AI分析とライブ更新:ローカルモデルで各チャンクをエンティティ/関係の分析
- 増分可視化:各チャンクが完了した後にリアルタイムでSVGグラフを更新
- 結果のマージ:チャンク間でエンティティ/関係をインテリジェントに重複排除してマージ
- hKGメタデータの作成:履歴追跡のための処理メタデータを生成
- グラフの生成:拡張メタデータ付きの構造化された知識グラフを作成
- 最終可視化:すべてのエンティティと関係を含む完全なSVGグラフを生成
- hKGストレージ:統一されたUUIDv8追跡付きでNeo4j(グラフ)とQdrant(ベクトル)に永続化
- 出力:完全な知識グラフ、hKGメタデータ、SVG可視化を含むJSONレスポンス
設定
環境変数のリファレンス
すべての設定は環境変数を通じて行われます。アプリケーションはすべての設定に適切なデフォルト値を提供しており、設定なしでも実行できますが、完全なカスタマイズも可能です。
変数 |
タイプ |
デフォルト |
必須 |
説明 |
例の値 |
MODEL_PROVIDER |
文字列 |
"ollama" |
いいえ |
使用するAIモデルプロバイダー |
"ollama" , "lmstudio" |
LOCAL_MODEL |
文字列 |
"llama3.2:latest" |
いいえ |
ローカルモデルの識別子 |
"llama3.2:latest" , "mistral:7b" , "codellama:13b" |
OLLAMA_BASE_URL |
文字列 |
"http://localhost:11434" |
いいえ |
OllamaのAPIエンドポイント |
"http://localhost:11434" , "http://192.168.1.100:11434" |
LMSTUDIO_BASE_URL |
文字列 |
"http://localhost:1234" |
いいえ |
LM StudioのAPIエンドポイント |
"http://localhost:1234" , "http://127.0.0.1:1234" |
CHUNK_SIZE |
整数 |
2000 |
いいえ |
AI処理のためのチャンクあたりの文字数 |
1000 , 2000 , 4000 , 8000 |
CHUNK_OVERLAP |
整数 |
200 |
いいえ |
コンテキストのためのチャンク間のオーバーラップ |
100 , 200 , 400 , 500 |
MAX_CHUNKS |
整数 |
0 |
いいえ |
処理する最大チャンク数 (0=無制限) |
0 , 100 , 1000 , 5000 |
HF_TOKEN |
文字列 |
None |
いいえ |
HuggingFaceのAPIトークン (レガシー、未使用) |
"hf_xxxxxxxxxxxx" |
設定方法
1. 環境変数 (推奨)
export MODEL_PROVIDER=ollama
export LOCAL_MODEL=llama3.2:latest
export OLLAMA_BASE_URL=http://localhost:11434
export CHUNK_SIZE=2000
export CHUNK_OVERLAP=200
export MAX_CHUNKS=0
2. シェル設定 (.bashrc/.zshrc)
export MODEL_PROVIDER=ollama
export LOCAL_MODEL=llama3.2:latest
export OLLAMA_BASE_URL=http://localhost:11434
export CHUNK_SIZE=2000
export CHUNK_OVERLAP=200
export MAX_CHUNKS=0
3. Python環境ファイル (.env)
MODEL_PROVIDER=ollama
LOCAL_MODEL=llama3.2:latest
OLLAMA_BASE_URL=http://localhost:11434
LMSTUDIO_BASE_URL=http://localhost:1234
CHUNK_SIZE=2000
CHUNK_OVERLAP=200
MAX_CHUNKS=0
モデルプロバイダーの設定
Ollamaの設定 (デフォルト)
export MODEL_PROVIDER=ollama
export LOCAL_MODEL=llama3.2:latest
export OLLAMA_BASE_URL=http://localhost:11434
export LOCAL_MODEL=mistral:7b
export LOCAL_MODEL=codellama:13b
export LOCAL_MODEL=llama3.2:3b
export LOCAL_MODEL=phi3:mini
export OLLAMA_BASE_URL=http://192.168.1.100:11434
LM Studioの設定
export MODEL_PROVIDER=lmstudio
export LOCAL_MODEL=any-model-name
export LMSTUDIO_BASE_URL=http://localhost:1234
export LMSTUDIO_BASE_URL=http://localhost:8080
export LMSTUDIO_BASE_URL=http://192.168.1.200:1234
大規模コンテンツ処理の設定
チャンクサイズの最適化
export CHUNK_SIZE=1000
export CHUNK_OVERLAP=100
export CHUNK_SIZE=2000
export CHUNK_OVERLAP=200
export CHUNK_SIZE=4000
export CHUNK_OVERLAP=400
export CHUNK_SIZE=8000
export CHUNK_OVERLAP=800
処理制限
export MAX_CHUNKS=0
export MAX_CHUNKS=100
export MAX_CHUNKS=1000
export MAX_CHUNKS=10000
パフォーマンスチューニングガイドライン
速度最適化のため
export CHUNK_SIZE=1000
export CHUNK_OVERLAP=50
export MAX_CHUNKS=500
export LOCAL_MODEL=llama3.2:3b
品質最適化のため
export CHUNK_SIZE=4000
export CHUNK_OVERLAP=400
export MAX_CHUNKS=0
export LOCAL_MODEL=llama3.2:latest
メモリ制限のあるシステムのため
export CHUNK_SIZE=1500
export CHUNK_OVERLAP=150
export MAX_CHUNKS=1000
export LOCAL_MODEL=phi3:mini
設定の検証
アプリケーションは設定の自動検証を行います。
- モデルプロバイダー:
MODEL_PROVIDER
が "ollama"
または "lmstudio"
であることを検証
- URL:プロバイダーのURLがアクセス可能であることを検証
- 数値:
CHUNK_SIZE
, CHUNK_OVERLAP
, MAX_CHUNKS
が有効な整数であることを確認
- モデルの可用性:指定されたモデルがプロバイダーで利用可能であることを確認
設定のトラブルシューティング
一般的な問題と解決策
1. モデルプロバイダーが応答しない場合
curl http://localhost:11434/api/version
curl http://localhost:1234/v1/models
ollama serve
2. モデルが見つからない場合
ollama list
ollama pull llama3.2:latest
3. 大規模コンテンツでメモリ問題が発生する場合
export CHUNK_SIZE=1000
export MAX_CHUNKS=100
export LOCAL_MODEL=llama3.2:3b
4. 処理が遅い場合
export CHUNK_SIZE=1500
export CHUNK_OVERLAP=100
export MAX_CHUNKS=500
export LOCAL_MODEL=phi3:mini
設定シナリオの例
シナリオ1: 開発環境の設定
export MODEL_PROVIDER=ollama
export LOCAL_MODEL=llama3.2:3b
export CHUNK_SIZE=1000
export CHUNK_OVERLAP=100
export MAX_CHUNKS=50
シナリオ2: 本番環境の設定
export MODEL_PROVIDER=ollama
export LOCAL_MODEL=llama3.2:latest
export CHUNK_SIZE=3000
export CHUNK_OVERLAP=300
export MAX_CHUNKS=0
シナリオ3: 大規模データセットの処理
export MODEL_PROVIDER=ollama
export LOCAL_MODEL=llama3.2:latest
export CHUNK_SIZE=2000
export CHUNK_OVERLAP=200
export MAX_CHUNKS=0
シナリオ4: リソース制限のある環境
export MODEL_PROVIDER=ollama
export LOCAL_MODEL=phi3:mini
export CHUNK_SIZE=800
export CHUNK_OVERLAP=50
export MAX_CHUNKS=200
高度な設定
カスタムモデルエンドポイント
export OLLAMA_BASE_URL=http://ollama-container:11434
export OLLAMA_BASE_URL=http://ollama-service.default.svc.cluster.local:11434
export OLLAMA_BASE_URL=http://ollama-lb.example.com:11434
動的な設定
アプリケーションは起動時に環境変数を読み取ります。設定を変更するには:
- 新しい環境変数を設定
- アプリケーションを再起動
- 設定の変更が即座に反映されます
エラーハンドリング
以下のエラーに対する包括的なエラーハンドリングが行われます。
- 無効なURLまたはネットワーク障害
- 欠落しているローカルモデルまたはAPIエンドポイント
- LLMのレスポンスのJSONパースエラー
- 不正なまたは空の入力
- データベース接続問題
- 無効な設定値
- モデルプロバイダーの接続問題
- 大規模コンテンツ処理時のメモリ制約
hKG MCPの可視化履歴付き統合
アプリケーションはMCPサーバーと統合され、完全な可視化追跡付きのハイブリッド知識グラフストレージを提供します。
- Neo4j:拡張メタデータと可視化履歴付きのグラフデータベースのストレージとクエリ
- Qdrant:チャンク追跡とビジュアルメタデータ付きの意味検索用のベクトルデータベース
- 統一追跡:すべてのストレージシステムでUUIDv8を使用したエンティティの履歴と可視化の出所追跡
- メタデータの永続化:処理方法、チャンク数、コンテンツの履歴、SVG生成の追跡
- 大規模コンテンツ対応:チャンク分割とリアルタイム可視化により、300MB以上のコンテンツをシームレスに処理
- 可視化統合:すべてのストレージシステムでの完全なビジュアル表現の追跡
MCPによるhKGの拡張機能
- エンティティの出所:各エンティティに寄与したコンテンツチャンクとそのビジュアル表現を追跡
- 関係の履歴:チャンク境界を越えて関係を維持し、ビジュアルエッジを追跡
- コンテンツの祖先:階層的なコンテンツ追跡と可視化ファイルの履歴のためのUUIDv8エンコーディング
- 処理の監査:大規模コンテンツがどのように処理され、可視化が生成されたかの完全な記録
- 意味検索:任意のサイズの知識グラフ間のベクトル類似性とビジュアルメタデータの検索
- 新機能 - 可視化履歴:以下を含む完全な可視化追跡
- SVGファイルの出所:タイムスタンプ付きで生成されたすべての可視化ファイルを追跡
- エンティティの色の一貫性:すべてのチャンクとストレージシステムで色マッピングを維持
- リアルタイム可視化の履歴:処理時のすべての増分グラフ更新を記録
- クロスデータベースのビジュアル同期:Neo4jとQdrantで可視化メタデータを同期
- 増分可視化の監査:大規模コンテンツのためのリアルタイム更新の完全なトレイル
可視化拡張ストレージ
- Neo4jのエンティティ観測データには現在以下が含まれます。
- SVGファイルのパスと生成状態
- ビジュアルの一貫性のためのエンティティの色の割り当て
- チャンク分割処理のためのリアルタイム更新のカウント
- 可視化の可用性とエンジン情報
- Qdrantのベクトルコンテンツには現在以下が含まれます。
- 類似性検索のためのエンティティの色マッピング情報
- SVG生成のタイムスタンプとファイルパス
- リアルタイム可視化の更新メタデータ
- 大規模コンテンツの可視化のための増分ファイルの追跡
MCPツールは、MCPサーバーが構成されたClaude Code環境で実行すると自動的に利用可能になります。
hKG可視化アーキテクチャ
統合された可視化履歴システム
hKGシステムは、従来の知識グラフストレージと並行して完全な可視化履歴を維持します。
┌─────────────────┐ ┌──────────────────────┐ ┌─────────────────────┐
│ Source Text │───▶│ Chunking + AI │───▶│ Entity/Relation │
│ (300MB+) │ │ Processing │ │ Extraction │
└─────────────────┘ └──────────────────────┘ └─────────────────────┘
│ │
▼ ▼
┌─────────────────┐ ┌──────────────────────┐ ┌─────────────────────┐
│ Real-Time SVG │◀───│ Incremental Graph │◀───│ Merged Results │
│ Generation │ │ Visualization │ │ + Deduplication │
└─────────────────┘ └──────────────────────┘ └─────────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌──────────────────────┐ ┌─────────────────────┐
│ SVG File │ │ Visualization │ │ hKG Storage │
│ Storage │ │ Metadata Creation │ │ (Neo4j + Qdrant) │
│ (Incremental) │ │ │ │ + Viz Metadata │
└─────────────────┘ └──────────────────────┘ └─────────────────────┘
可視化メタデータのフロー
- リアルタイム更新:各チャンクが進捗追跡付きで増分SVGを生成
- 色の一貫性:すべてのチャンクとストレージシステムでエンティティの色を維持
- ファイルの履歴:生成されたすべてのSVGファイルの完全な監査トレイル
- クロスデータベース同期:Neo4jとQdrantで可視化メタデータを同期
- 出所追跡:ソースチャンク、エンティティ、およびそのビジュアル表現の間のリンク
大規模コンテンツ (300MB以上) のためのhKGの利点
- ビジュアルな進捗監視:処理時のリアルタイムのグラフの進化
- チャンクレベルの可視化:各処理段階の個別のSVGファイル
- 完全な監査トレイル:ソーステキストから最終的な可視化までの完全な履歴
- 相互参照機能:エンティティをそのソースチャンクとビジュアル外観に戻すリンク
- スケーラブルな可視化:一貫したパフォーマンスで任意の大きさのグラフを処理
🔧 技術詳細
開発
プロジェクト構造
KGB-mcp/
├── app.py # メインアプリケーション
├── requirements.txt # 依存関係
├── CLAUDE.md # Claude Codeの指示書
├── ARCHITECTURE.md # システムアーキテクチャ
├── test_core.py # コア機能のテスト
└── test_integration.py # 統合テスト
テスト
python test_core.py
python test_integration.py
ローカルAIとMCP統合の力を借りて、あらゆるコンテンツを構造化された知識グラフに変換しましょう!