知识图生成器MCP服务器
一种知识图生成器,使用本地AI模型将文本或web内容转换为结构化知识图,并集成MCP(模型上下文协议),用于Neo4j和Qdrant中的持久存储。
🚀 特性
- 本地AI处理:通过Ollama或LM Studio使用本地模型进行实体提取
- 大内容支持:通过智能分块处理任意大的内容(300MB+)
- Web内容提取:无大小限制地抓取和分析完整网页
- 知识图生成:创建具有实体和关系的结构化图形
- 智能分块:通过句子边界检测自动分块大内容
- 实体合并:智能地跨块合并重复实体
- 实时可视化:处理块时实时SVG图形更新
- 交互式SVG输出:带有进度跟踪的颜色编码实体类型
- MCP集成:将数据存储在Neo4j(图形数据库)和Qdrant(矢量数据库)中
- UUID跟踪:生成UUID v8,用于跨系统的统一实体跟踪
- Gradio界面:用户友好的web界面,具有双JSON/SVG输出
📊 提取的实体类型
- 👥 人:姓名、个人、关键人物
- 🏢 组织:公司、机构、团体
- 📍 位置:地点、国家、地区、地址
- 💡 概念:思想、技术、抽象概念
- 📅 事件:具体事件、事件、事件
- 🔧 其他:不适合其他类别的其他实体
🔧 设置
需求
pip install -r requirements.txt
# For full visualization capabilities:
pip install networkx matplotlib环境变量
有关详细的配置说明和完整的环境变量参考,请参阅 配置 下面的部分。
快速启动配置:
# Basic setup (uses sensible defaults)
export MODEL_PROVIDER=ollama
export LOCAL_MODEL=llama3.2:latest
# Optional: Custom endpoints and processing limits
export OLLAMA_BASE_URL=http://localhost:11434
export CHUNK_SIZE=2000
export MAX_CHUNKS=0注: 所有环境变量都是可选的,并且都有合理的默认值。应用程序将在没有任何配置的情况下运行。
本地模型设置
对于Ollama:
# Install and start Ollama
curl -fsSL https://ollama.ai/install.sh | sh
ollama serve
# Pull a model
ollama pull llama3.2:latest对于LM工作室:
- 下载并安装LM Studio
- 在本地服务器中加载模型
- 在端口1234上启动本地服务器
🏃 运行应用程序
python app.py该应用程序将启动启用MCP服务器功能的Gradio界面。
📝 用法
文本输入
粘贴要分析的任何文本内容:
Apple Inc. was founded by Steve Jobs, Steve Wozniak, and Ronald Wayne in 1976. The company is headquartered in Cupertino, California.URL输入
提供web URL以提取和分析:
https://en.wikipedia.org/wiki/Artificial_intelligence大内容处理(300MB+文件)
对于LLM对话摘录等非常大的内容:
# Example: Processing a 300MB conversation log
# The system will automatically:
# 1. Detect large content (>2000 chars by default)
# 2. Split into intelligent chunks at sentence boundaries
# 3. Process each chunk with the local AI model
# 4. Merge and deduplicate entities/relationships
# 5. Store with full lineage tracking in hKG
# Processing will show progress:
# "Processing large content (314,572,800 chars) in chunks..."
# "Processing 157,286 chunks..."
# "Processing chunk 1/157,286 (2000 chars)..."
# "Merged results: 45,231 entities, 128,904 relationships"输出格式
系统返回一个结构化的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_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生成功能
- 颜色编码实体类型:每种实体类型都有不同的颜色(人=红色,组织=青色,位置=蓝色,概念=绿色,事件=黄色,其他=梅花色)
- 交互式布局:使用NetworkX弹簧布局算法自动进行图形布局
- 关系标签:显示实体之间关系类型的边标签
- 实体信息:带有实体名称和类型的节点标签
- 传说:根据存在的实体类型自动生成图例
- 统计:实时实体和关系计数
大内容的实时处理
- 进度跟踪:显示块处理完成的视觉进度条
- 增量更新:处理每个块后图形更新
- 实时统计:发现的实体和关系的总数
- 增量文件保存:每个块创建一个带时间戳的SVG文件
- 最终可视化:完整图形保存为最终SVG
文件输出
- 单一内容:
knowledge_graph_.svg - 大容量(块状):
- 增量: knowledge_graph__chunk_0001.svg, chunk_0002.svg等等。 - 决赛: knowledge_graph_.svg
大型内容处理示例
# Processing a 300MB conversation log:
# "Processing large content (314,572,800 chars) in chunks..."
# "Processing 157,286 chunks..."
#
# Real-time updates:
# "Processing chunk 1/157,286 (2000 chars)..."
# "Real-time graph updated: Updated graph: 5 entities, 3 relationships (Chunk 1/157,286)"
# "Saved incremental graph: knowledge_graph_12345678_chunk_0001.svg"
#
# "Processing chunk 2/157,286 (2000 chars)..."
# "Real-time graph updated: Updated graph: 12 entities, 8 relationships (Chunk 2/157,286)"
# "Saved incremental graph: knowledge_graph_12345678_chunk_0002.svg"
#
# ... continues for all chunks ...
#
# "Final results: 45,231 entities, 128,904 relationships"
# "Final SVG visualization saved: knowledge_graph_12345678.svg"🗄️ hKG(混合知识图)存储与可视化集成
Neo4j集成(图形数据库)
- 将实体存储为具有属性和增强元数据的节点
- 通过沿袭跟踪在实体之间创建关系
- 维护UUID v8,用于跨所有数据库进行实体跟踪
- 跟踪用于大型内容处理的分块元数据
- 记录处理方法(单张与分块)
- 新:实体观察中的可视化元数据,包括:
- SVG文件路径和可用性状态 - 图形可视化的实体颜色映射 - 分块处理的实时更新跟踪 - 用于大型内容处理的增量文件计数
- 可通过MCP服务器工具访问
Qdrant集成(矢量数据库)
- 将知识图存储为具有增强元数据的向量嵌入
- 支持跨任何大小的图形进行语义搜索
- 维护每个知识图的元数据,包括块信息
- 跟踪内容长度、处理方法和块计数
- 支持跨大型文档集合的相似性搜索
- 新:可视化沿袭跟踪,包括:
- 实体类型和颜色映射信息 - SVG生成时间戳和文件路径 - 实时可视化更新历史 - 大内容的增量SVG文件跟踪
- 可通过MCP服务器工具访问
hKG可视化谱系统一跟踪
- UUID v8跨所有系统:共同祖先编码标识符
- 内容谱系:跟踪大型内容的处理和分块方式
- 正在处理元数据:记录块大小、重叠和处理方法
- 实体来源:跟踪哪些块为每个实体做出了贡献
- 关系映射:维护跨块边界的关系
- 语义连贯:确保跨数据库的知识图一致性
- 新-可视化谱系:完全跟踪视觉表现:
- 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():基于人工智能的实体提取,实时更新(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存储:Neo4j(图形)和Qdrant(矢量)中的持久性,具有统一的UUID v8跟踪
- 输出:JSON响应,包含完整的知识图、hKG元数据和SVG可视化
🎛️ 配置
环境变量引用
所有配置都是通过环境变量处理的。该应用程序为所有设置提供了合理的默认值,允许它在不进行任何配置的情况下运行,同时仍然提供完全的自定义。
完整环境变量表
| 变量 | 类型 | 默认值 | 必填 | 描述 | 示例值 |
|---|---|---|---|---|---|
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.环境变量(推荐)
# Core Model Configuration
export MODEL_PROVIDER=ollama
export LOCAL_MODEL=llama3.2:latest
export OLLAMA_BASE_URL=http://localhost:11434
# Large Content Processing
export CHUNK_SIZE=2000
export CHUNK_OVERLAP=200
export MAX_CHUNKS=02.外壳配置(.bashrc/.zshrc)
# Add to ~/.bashrc or ~/.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=03.Python环境文件(.env)
# Create .env file in project root
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配置(默认)
# Basic Ollama setup
export MODEL_PROVIDER=ollama
export LOCAL_MODEL=llama3.2:latest
export OLLAMA_BASE_URL=http://localhost:11434
# Alternative models
export LOCAL_MODEL=mistral:7b # Mistral 7B
export LOCAL_MODEL=codellama:13b # Code Llama 13B
export LOCAL_MODEL=llama3.2:3b # Llama 3.2 3B (faster)
export LOCAL_MODEL=phi3:mini # Phi-3 Mini (lightweight)
# Remote Ollama instance
export OLLAMA_BASE_URL=http://192.168.1.100:11434LM工作室配置
# Basic LM Studio setup
export MODEL_PROVIDER=lmstudio
export LOCAL_MODEL=any-model-name # Model name is flexible for LM Studio
export LMSTUDIO_BASE_URL=http://localhost:1234
# Custom LM Studio port
export LMSTUDIO_BASE_URL=http://localhost:8080
# Remote LM Studio instance
export LMSTUDIO_BASE_URL=http://192.168.1.200:1234大内容处理配置
块大小优化
# Small chunks (faster processing, more chunks)
export CHUNK_SIZE=1000
export CHUNK_OVERLAP=100
# Medium chunks (balanced performance)
export CHUNK_SIZE=2000 # Default
export CHUNK_OVERLAP=200 # Default
# Large chunks (fewer chunks, more context)
export CHUNK_SIZE=4000
export CHUNK_OVERLAP=400
# Very large chunks (maximum context, slower)
export CHUNK_SIZE=8000
export CHUNK_OVERLAP=800处理限制
# Unlimited processing (default)
export MAX_CHUNKS=0
# Process only first 100 chunks (testing)
export MAX_CHUNKS=100
# Process first 1000 chunks (moderate datasets)
export MAX_CHUNKS=1000
# Process first 10000 chunks (large datasets)
export MAX_CHUNKS=10000性能调整指南
用于速度优化
# Smaller chunks, less overlap, limited processing
export CHUNK_SIZE=1000
export CHUNK_OVERLAP=50
export MAX_CHUNKS=500
export LOCAL_MODEL=llama3.2:3b # Faster model用于质量优化
# Larger chunks, more overlap, unlimited processing
export CHUNK_SIZE=4000
export CHUNK_OVERLAP=400
export MAX_CHUNKS=0
export LOCAL_MODEL=llama3.2:latest # Full model适用于内存受限的系统
# Balanced settings for limited resources
export CHUNK_SIZE=1500
export CHUNK_OVERLAP=150
export MAX_CHUNKS=1000
export LOCAL_MODEL=phi3:mini # Lightweight model配置验证
应用程序执行配置设置的自动验证:
- 模型提供者:验证
MODEL_PROVIDER要么"ollama"或"lmstudio" - 网址:验证提供程序URL是否可访问
- 数值:确保
CHUNK_SIZE,CHUNK_OVERLAP,以及MAX_CHUNKS是有效整数 - 型号可用性:检查提供程序上是否有指定的型号
配置故障排除
常见问题及解决方法
1.模型提供者没有响应
# Check if Ollama is running
curl http://localhost:11434/api/version
# Check if LM Studio is running
curl http://localhost:1234/v1/models
# Solution: Start the appropriate service
ollama serve # For Ollama
# Or start LM Studio GUI and enable local server2.未找到型号
# List available Ollama models
ollama list
# Pull missing model
ollama pull llama3.2:latest
# For LM Studio: Load model in GUI3.大内容的内存问题
# Reduce chunk size and set limits
export CHUNK_SIZE=1000
export MAX_CHUNKS=100
# Use lighter model
export LOCAL_MODEL=llama3.2:3b4.处理速度慢
# Optimize for speed
export CHUNK_SIZE=1500
export CHUNK_OVERLAP=100
export MAX_CHUNKS=500
export LOCAL_MODEL=phi3:mini示例配置场景
场景1:开发设置
# Fast iteration, limited processing
export MODEL_PROVIDER=ollama
export LOCAL_MODEL=llama3.2:3b
export CHUNK_SIZE=1000
export CHUNK_OVERLAP=100
export MAX_CHUNKS=50场景2:生产设置
# High quality, unlimited processing
export MODEL_PROVIDER=ollama
export LOCAL_MODEL=llama3.2:latest
export CHUNK_SIZE=3000
export CHUNK_OVERLAP=300
export MAX_CHUNKS=0场景3:大数据集处理
# Optimized for 300MB+ files
export MODEL_PROVIDER=ollama
export LOCAL_MODEL=llama3.2:latest
export CHUNK_SIZE=2000
export CHUNK_OVERLAP=200
export MAX_CHUNKS=0场景4:资源受限的环境
# Minimal resource usage
export MODEL_PROVIDER=ollama
export LOCAL_MODEL=phi3:mini
export CHUNK_SIZE=800
export CHUNK_OVERLAP=50
export MAX_CHUNKS=200高级配置
自定义模型端点
# Docker-based Ollama
export OLLAMA_BASE_URL=http://ollama-container:11434
# Kubernetes service
export OLLAMA_BASE_URL=http://ollama-service.default.svc.cluster.local:11434
# Load balancer
export OLLAMA_BASE_URL=http://ollama-lb.example.com:11434动态配置
应用程序在启动时读取环境变量。要更改配置,请执行以下操作:
- 设置新的环境变量
- 重新启动应用程序
- 配置更改立即生效
错误处理
全面的错误处理:
- URL无效或网络故障
- 缺少本地模型或API终结点
- LLM响应中的JSON解析错误
- 输入格式错误或为空
- 数据库连接问题
- 配置值无效
- 模型提供程序连接问题
- 大型内容处理过程中的内存限制
🔍 hKG MCP与视觉谱系的集成
该应用程序与MCP服务器集成,用于混合知识图存储,并具有完整的可视化跟踪功能:
- Neo4j:具有增强元数据+可视化沿袭的图形数据库存储和查询
- Qdrant:用于语义搜索的矢量数据库,带有块跟踪+视觉元数据
- 统一跟踪:UUID v8跨所有存储系统,用于实体沿袭+可视化来源
- 元数据持久化:处理方法、块计数、内容沿袭+SVG生成跟踪
- 大内容支持:通过分块+实时可视化无缝处理300MB+内容
- 可视化集成:在所有存储系统中完成可视化表示跟踪
通过MCP增强hKG功能
- 实体来源:跟踪哪些内容块为每个实体做出了贡献+它们的视觉表示
- 关系谱系:维护跨块边界的关系+视觉边缘跟踪
- 内容祖先:用于分层内容跟踪的UUID v8编码+可视化文件沿袭
- 处理审计:处理大型内容的完整记录+可视化生成
- 语义搜索:任何大小的知识图之间的矢量相似性+可视化元数据搜索
- 新-视觉谱系:完整的可视化跟踪,包括:
- SVG文件来源:使用时间戳跟踪所有生成的可视化文件 - 实体颜色一致性:维护所有块和存储系统的颜色映射 - 实时可视化历史记录:记录处理过程中的每次增量图形更新 - 跨数据库可视化同步:Neo4j和Qdrant中的同步可视化元数据 - 增量可视化审计:完整跟踪大型内容的实时更新
可视化增强存储
- Neo4j实体观察 现在包括:
- SVG文件路径和生成状态 - 实体颜色分配以实现视觉一致性 - 分块处理的实时更新计数 - 可视化可用性和发动机信息
- Qdrant矢量内容 现在包括:
- 用于相似性搜索的实体颜色映射信息 - SVG生成时间戳和文件路径 - 实时可视化更新元数据 - 用于大型内容可视化的增量文件跟踪
在配置了MCP服务器的Claude Code环境中运行时,MCP工具会自动可用。
🎯 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 # Main application
├── requirements.txt # Dependencies
├── CLAUDE.md # Claude Code instructions
├── ARCHITECTURE.md # System architecture
├── test_core.py # Core functionality tests
└── test_integration.py # Integration tests测试
# Run core tests
python test_core.py
# Run integration tests
python test_integration.py利用本地AI和MCP集成的力量,将任何内容转换为结构化的知识图!
