返回市场
香港本体论者知识图谱MCP

香港本体论者知识图谱MCP

作者:rebots-online4 星标更新:2025-07-13

项目介绍

知识图谱构建器 MCP 服务器

一个使用本地AI模型(集成MCP协议)将文本或网页内容转换为结构化知识图谱的工具,并在Neo4j和Qdrant中持久存储。

🚀 功能特性

  • 本地AI处理:通过Ollama或LM Studio使用本地模型进行实体提取
  • 大内容支持:通过智能分块处理任意大的内容(300MB+)
  • 网页内容提取:无大小限制地抓取并分析整个网页
  • 知识图谱生成:创建包含实体和关系的结构化图谱
  • 智能分块:自动对大内容进行句子边界检测分块
  • 实体合并:跨分块智能合并重复实体
  • 实时可视化:随着分块处理实时更新SVG图
  • 交互式SVG输出:带有进度跟踪的颜色编码实体类型
  • MCP集成:数据存储在Neo4j(图数据库)和Qdrant(向量数据库)
  • UUID追踪:生成UUIDv8以统一跨系统实体追踪
  • Gradio界面:用户友好的web界面,双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:

# 安装并启动Ollama
curl -fsSL https://ollama.ai/install.sh | sh
ollama serve

# 拉取模型
ollama pull llama3.2:latest

对于LM Studio:

  1. 下载并安装LM Studio
  2. 在本地服务器上加载模型
  3. 在1234端口启动本地服务器

🏃 运行应用程序

python app.py

应用程序将启动具有MCP服务器功能的Gradio界面。

📝 使用方法

文本输入

粘贴要分析的任何文本内容:

苹果公司由史蒂夫·乔布斯、史蒂夫·沃兹尼亚克和罗纳德·韦恩于1976年创立。该公司总部位于加利福尼亚州库比蒂诺。

URL输入

提供一个网页URL以提取和分析:

https://en.wikipedia.org/wiki/Artificial_intelligence

大内容处理(300MB+文件)

对于非常大的内容,如LLM对话摘录:

# 示例:处理一个300MB的对话日志
# 系统将自动:
# 1. 检测大内容(默认超过2000个字符)
# 2. 在句子边界处分割成智能块
# 3. 使用本地AI模型处理每个块
# 4. 合并并去重实体/关系
# 5. 在hKG中存储完整的血缘追踪

# 处理将显示进度:
# "正在处理大内容(314,572,800个字符)的块..."
# "正在处理157,286个块..."
# "正在处理第1/157,286个块(2000个字符)..."
# "合并结果:45,231个实体,128,904个关系"

输出格式

系统返回一个结构化的JSON知识图谱:

{
  "source": {
    "type": "text|url",
    "value": "input_value",
    "content_preview": "前200个字符..."
  },
  "knowledge_graph": {
    "entities": [
      {
        "name": "苹果公司",
        "type": "ORGANIZATION",
        "description": "成立于1976年的科技公司"
      }
    ],
    "relationships": [
      {
        "source": "史蒂夫·乔布斯",
        "target": "苹果公司",
        "relationship": "FOUNDED",
        "description": "史蒂夫·乔布斯创立了苹果公司"
      }
    ],
    "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弹簧布局算法的自动图布局
  • 关系标签:显示实体间关系类型的边标签
  • 实体信息:带有实体名称和类型的节点标签
  • 图例:基于存在的实体类型自动生成图例
  • 统计信息:实时实体和关系计数

大内容实时处理

  • 进度跟踪:显示块处理完成情况的视觉进度条
  • 增量更新:每个块处理后更新图
  • 实时统计:发现的实体和关系的累计总数
  • 增量文件保存:每个块生成一个时间戳SVG文件
  • 最终可视化:完整的图保存为最终SVG

文件输出

  • 单个内容knowledge_graph_<uuid8>.svg
  • 大内容(分块)
    • 增量:knowledge_graph_<uuid8>_chunk_0001.svgchunk_0002.svg
    • 最终:knowledge_graph_<uuid8>.svg

大内容处理示例

# 处理一个300MB的对话日志:
# "正在处理大内容(314,572,800个字符)的块..."
# "正在处理157,286个块..."
#
# 实时更新:
# "正在处理第1/157,286个块(2000个字符)..."
# "实时图已更新:更新图:5个实体,3个关系(第1/157,286个块)"
# "保存增量图:knowledge_graph_12345678_chunk_0001.svg"
#
# "正在处理第2/157,286个块(2000个字符)..."
# "实时图已更新:更新图:12个实体,8个关系(第2/157,286个块)"
# "保存增量图:knowledge_graph_12345678_chunk_0002.svg"
#
# ... 对所有块继续...
#
# "最终结果:45,231个实体,128,904个关系"
# "最终SVG可视化已保存:knowledge_graph_12345678.svg"

🗄️ hKG(混合知识图谱)存储与可视化集成

Neo4j集成(图数据库)

  • 将实体作为带有属性和增强元数据的节点存储
  • 创建实体之间的关系并进行血缘追踪
  • 维护UUIDv8用于跨所有数据库的实体追踪
  • 跟踪大内容处理的分块元数据
  • 记录处理方法(单次 vs 分块)
  • 新功能:实体观察中的可视化元数据包括:
    • 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和实时可视化的数据流

  1. 输入处理:文本或URL输入验证
  2. 内容提取:URL的网络抓取,直接文本输入
  3. 实时可视化器设置:初始化增量图可视化系统
  4. 内容分块:大于2000个字符的大内容智能分块,带句子边界检测
  5. 实时更新的AI分析:本地模型处理每个分块的实体/关系
  6. 增量可视化:每个分块完成后实时SVG图更新
  7. 结果合并:跨分块智能去重和合并实体/关系
  8. hKG元数据创建:生成处理元数据以进行血缘追踪
  9. 图表生成:带有增强元数据的结构化知识图谱创建
  10. 最终可视化:生成包含所有实体和关系的完整SVG图
  11. hKG存储:在Neo4j(图)和Qdrant(向量)中持久化,统一的UUIDv8追踪
  12. 输出:带有完整知识图谱、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整数2000AI处理的每个分块的字符数1000, 2000, 4000, 8000
CHUNK_OVERLAP整数200分块之间的上下文重叠100, 200, 400, 500
MAX_CHUNKS整数0处理的最大分块数(0=不限)0, 100, 1000, 5000
HF_TOKEN字符串NoneHuggingFace 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. Shell配置(.bashrc/.zshrc)

# 添加到~/.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)

# 在项目根目录创建.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配置(默认)

# 基本Ollama设置
export MODEL_PROVIDER=ollama
export LOCAL_MODEL=llama3.2:latest
export OLLAMA_BASE_URL=http://localhost:11434

# 替代模型
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(更快)