Cross-Graph 是一个基于大语言模型(LLM)的端到端系统,旨在从非结构化文本(PDF/TXT/MD)中构建知识图谱,并基于图谱路径生成高质量跨文档的多跳推理问题。
- 双语 UI 支持:无缝切换中文和英文界面。
- 自动化 Schema 设计:基于领域描述,AI 辅助生成实体和关系 Schema。
- 数据预处理:批量将 PDF、TXT 和 MD 文件转换为适合抽取的 JSONL 格式。
- 知识抽取:利用LangExtract兼容 OpenAI 调用LLM(如 GPT-4o, DeepSeek 等)进行并行化信息抽取。
- 图谱存储:自动将抽取的实体和关系导入 Neo4j 图数据库。
- 稀有节点分析:识别长尾/稀有节点,发现深层、非显而易见的知识关联。
- 随机游走采样:从稀有节点出发进行跨文档随机游走,生成推理路径。
- 复杂问答生成:基于图谱路径生成高难度的多跳问答对(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 # 中文说明文档
- Python 3.8+
- Neo4j 数据库:确保已安装并运行 Neo4j(社区版或企业版均可)。
安装所需的 Python 包:
pip install -r requirements.txt在项目根目录下运行以下命令:
# 默认启动 (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 地址。
定义知识图谱的结构。
- 领域设置:输入目标领域(例如:“金融”、“医疗”)。
- AI 自动生成:配置 LLM(API Key, Base URL),点击 "🚀 AI 自动生成配置" 自动创建实体和关系。
- 手动微调:使用 UI 添加、编辑或删除实体和关系。
- 示例管理:提供 Few-shot 示例以提高抽取准确性。
- 保存配置:点击 "💾 保存配置" 将配置保存为
extraction_config.json。
处理原始文件并抽取知识。
- 数据预处理:
- 输入:包含源文件(PDF/TXT/MD)的文件夹路径。
- 操作:点击 "🔄 执行预处理"。
- 输出:生成一个
.jsonl文件。
- 知识抽取:
- 输入:生成的
.jsonl文件。 - 配置:设置 LLM 参数(API Key, 模型等)和高级设置(并发数, Batch 大小)。
- 操作:点击 "
▶️ 启动知识抽取"。 - 输出:包含提取出的实体和关系的
.jsonl文件。
- 输入:生成的
将数据导入 Neo4j 并分析图谱结构。
- 导入 Neo4j:
- 输入 Neo4j URI、用户名和密码。
- 选择抽取输出文件。
- 点击 "⬆️ 执行导入"。
- 稀有节点分析:
- 点击 "🔍 分析稀有节点" 查找度中心性较低的节点。
- 调整 "保留稀有度前 %" (Top Percent) 控制稀有度阈值。
- 随机游走:
- 生成从稀有节点出发的路径,揭示隐藏连接。
- 调整 "最大路径长度" 和 "跨文档权重"。
生成高质量的问答对用于训练或评估。
- 配置:
- 选择标签页 3 生成的路径文件。
- 配置用于问题生成的 LLM 设置。
- 生成:
- 点击 "✨ 开始生成问题"。
- 系统将利用路径生成多跳推理问题。
- 结果保存为 JSON 文件。
extractor.py:使用langchain和自定义 Prompt 处理并行知识抽取。graph_importer.py:管理 Neo4j 的 Cypher 查询生成和批量执行。random_walker.py:实现偏向跨文档边缘的随机游走算法。app.py:基于 Gradio 的前端编排层。





