Skip to content

Latest commit

 

History

History
150 lines (103 loc) · 5.39 KB

File metadata and controls

150 lines (103 loc) · 5.39 KB

🕸️ Cross Graph - 知识图谱构建与跨文档问答生成

English Chinese

Cross-Graph 是一个基于大语言模型(LLM)的端到端系统,旨在从非结构化文本(PDF/TXT/MD)中构建知识图谱,并基于图谱路径生成高质量跨文档的多跳推理问题。

系统概览

🌟 主要功能

  1. 双语 UI 支持:无缝切换中文和英文界面。
  2. 自动化 Schema 设计:基于领域描述,AI 辅助生成实体和关系 Schema。
  3. 数据预处理:批量将 PDF、TXT 和 MD 文件转换为适合抽取的 JSONL 格式。
  4. 知识抽取:利用LangExtract兼容 OpenAI 调用LLM(如 GPT-4o, DeepSeek 等)进行并行化信息抽取。
  5. 图谱存储:自动将抽取的实体和关系导入 Neo4j 图数据库。
  6. 稀有节点分析:识别长尾/稀有节点,发现深层、非显而易见的知识关联。
  7. 随机游走采样:从稀有节点出发进行跨文档随机游走,生成推理路径。
  8. 复杂问答生成:基于图谱路径生成高难度的多跳问答对(QA Pairs)。

📂 项目结构

cross_graph/
├── src/
│   ├── core/                 # 核心逻辑模块
│   │   ├── data_processor.py    # 数据预处理 (Folder -> JSONL)
│   │   ├── extractor.py         # 知识抽取 (LLM-based)
│   │   ├── graph_importer.py    # Neo4j 导入
│   │   ├── rare_node_analyzer.py # 稀有节点分析
│   │   ├── random_walker.py     # 随机游走路径生成
│   │   └── question_generator.py # 问答对生成
│   └── ui/                   # 用户界面
│       └── app.py               # Gradio 主程序
├── examples/                 # 示例数据和配置
├── docs/                     # 文档
├── requirements.txt          # 项目依赖
├── README.md                 # 英文说明文档
└── README_ZH.md              # 中文说明文档

🚀 快速开始

1. 环境准备

  • Python 3.8+
  • Neo4j 数据库:确保已安装并运行 Neo4j(社区版或企业版均可)。

2. 安装

安装所需的 Python 包:

pip install -r requirements.txt

3. 启动应用

在项目根目录下运行以下命令:

# 默认启动 (http://127.0.0.1:7860)
python -m src.ui.app

# 自定义主机和端口
python -m src.ui.app --host 0.0.0.0 --port 8000

# 创建公开分享链接 (例如 *.gradio.live)
python -m src.ui.app --share

启动后,访问终端显示的 URL 地址。

语言切换

📖 使用指南

标签页 1:Schema 设计 (Schema Design)

定义知识图谱的结构。

  1. 领域设置:输入目标领域(例如:“金融”、“医疗”)。
  2. AI 自动生成:配置 LLM(API Key, Base URL),点击 "🚀 AI 自动生成配置" 自动创建实体和关系。
  3. 手动微调:使用 UI 添加、编辑或删除实体和关系。
  4. 示例管理:提供 Few-shot 示例以提高抽取准确性。
  5. 保存配置:点击 "💾 保存配置" 将配置保存为 extraction_config.json

标签页 1 截图

标签页 2:数据处理与抽取 (Data Processing & Extraction)

处理原始文件并抽取知识。

  1. 数据预处理
    • 输入:包含源文件(PDF/TXT/MD)的文件夹路径。
    • 操作:点击 "🔄 执行预处理"
    • 输出:生成一个 .jsonl 文件。
  2. 知识抽取
    • 输入:生成的 .jsonl 文件。
    • 配置:设置 LLM 参数(API Key, 模型等)和高级设置(并发数, Batch 大小)。
    • 操作:点击 "▶️ 启动知识抽取"
    • 输出:包含提取出的实体和关系的 .jsonl 文件。

标签页 2 截图

标签页 3:图谱导入与分析 (Import & Analysis)

将数据导入 Neo4j 并分析图谱结构。

  1. 导入 Neo4j
    • 输入 Neo4j URI、用户名和密码。
    • 选择抽取输出文件。
    • 点击 "⬆️ 执行导入"
  2. 稀有节点分析
    • 点击 "🔍 分析稀有节点" 查找度中心性较低的节点。
    • 调整 "保留稀有度前 %" (Top Percent) 控制稀有度阈值。
  3. 随机游走
    • 生成从稀有节点出发的路径,揭示隐藏连接。
    • 调整 "最大路径长度" 和 "跨文档权重"。

标签页 3 截图 neo4j Screenshot

标签页 4:问答生成 (QA Generation)

生成高质量的问答对用于训练或评估。

  1. 配置
    • 选择标签页 3 生成的路径文件。
    • 配置用于问题生成的 LLM 设置。
  2. 生成
    • 点击 "✨ 开始生成问题"
    • 系统将利用路径生成多跳推理问题。
    • 结果保存为 JSON 文件。

标签页 4 截图

🛠️ 核心模块

  • extractor.py:使用 langchain 和自定义 Prompt 处理并行知识抽取。
  • graph_importer.py:管理 Neo4j 的 Cypher 查询生成和批量执行。
  • random_walker.py:实现偏向跨文档边缘的随机游走算法。
  • app.py:基于 Gradio 的前端编排层。