一个基于 Streamlit 的自动化工具,用于从工程设计文档中提取实体信息并生成符合 OpenSPG 标准的知识图谱 Schema。
- 📄 多格式文档支持: 支持 PDF、DOCX、TXT 格式的文档上传和解析
- 🤖 多 LLM 提供商支持: 支持 OpenAI API 和 Ollama 本地部署,统一接口调用
- 🔗 OpenSPG 标准: 严格遵循 OpenSPG 知识图谱的 Schema 格式和标准
- 📊 实时统计: 显示新增、修改的实体数量和建议删除的实体
- 💾 Schema 管理: 支持 Schema 的预览、复制和下载
- 🎯 增量更新: 支持多文档的增量处理和 Schema 合并
- 🔒 数据隐私: 支持本地 LLM 部署,保护数据隐私
- Python 3.11
- Streamlit: Web 应用框架
- Poetry: 依赖管理
- OpenAI GPT: 实体提取和分析
- LangChain: LLM 应用开发框架
- Python 3.11+
- Poetry (用于依赖管理)
# 安装 Poetry (如果尚未安装)
curl -sSL https://install.python-poetry.org | python3 -
# 安装项目依赖
poetry install-
安装 Ollama:
- 访问 Ollama 官网 下载安装
- Windows: 下载 .exe 安装包
- macOS:
brew install ollama - Linux:
curl -fsSL https://ollama.ai/install.sh | sh
-
下载模型:
ollama pull llama2 ollama pull mistral ollama pull codellama
-
启动 Ollama 服务:
ollama serve
-
获取 OpenAI API Key:
- 访问 OpenAI 平台
- 创建 API Key
-
设置环境变量 (可选):
export OPENAI_API_KEY="your-api-key-here"
# 激活虚拟环境
poetry shell
# 启动 Streamlit 应用
streamlit run app.py应用将在 http://localhost:8501 启动。
应用支持两种 LLM 提供商,可在侧边栏中选择和配置:
- 选择 "OpenAI" 提供商
- 输入 OpenAI API Key
- 可选择自定义 Base URL (支持 OpenAI 兼容接口)
- 选择模型 (推荐 gpt-4)
- 测试连接确保配置正确
- 选择 "Ollama" 提供商
- 配置 Ollama 服务地址 (默认: http://localhost:11434)
- 选择已安装的模型 (如 llama2, mistral 等)
- 确保 Ollama 服务正在运行
推荐配置:
- 开发测试: 使用 Ollama (免费、本地)
- 生产环境: 使用 OpenAI GPT-4 (质量更高)
- 企业内部: 使用 OpenAI 兼容接口
在侧边栏中配置以下参数:
- 文档分块大小: 控制文档分割的粒度 (默认 1500 字符)
- 命名空间: Schema 的命名空间 (默认 "Engineering")
- 支持同时上传多个文档
- 支持的格式:PDF、DOCX、TXT
- 系统会自动检测文件编码
- 文档解析: 自动提取文档文本内容
- 智能分块: 将文档分割成合适大小的文本块
- 实体提取: 使用 LLM 从每个文本块中提取实体
- Schema 生成: 将提取的实体转换为 OpenSPG 格式
- 增量合并: 将新实体合并到现有 Schema 中
处理完成后,你可以:
- 查看处理统计(新增、修改、建议删除的实体)
- 预览生成的 Schema
- 复制或下载 Schema 文件
- 查看详细的处理日志
生成的 Schema 严格遵循 OpenSPG 标准格式:
namespace Engineering
Concept(概念): EntityType
properties:
description(描述): Text
name(名称): Text
semanticType(semanticType): Text
index: Text
ArtificialObject(人造物体): EntityType
properties:
description(描述): Text
name(名称): Text
semanticType(semanticType): Text
index: Text
系统支持以下 OpenSPG 标准实体类型:
- NaturalScience (自然科学)
- Building (建筑)
- GeographicLocation (地理位置)
- Medicine (药物)
- Works (作品)
- Event (事件)
- Person (人物)
- Transport (运输)
- Organization (组织机构)
- Date (日期)
- ArtificialObject (人造物体)
- Creature (生物)
- Keyword (关键词)
- Astronomy (天文学)
- SemanticConcept (语义概念)
- Concept (概念)
- Others (其他)
auto-openspg-schema/
├── app.py # 主应用文件
├── src/
│ ├── __init__.py
│ ├── document_processor.py # 文档处理模块
│ ├── llm_client.py # LLM 客户端
│ ├── schema_generator.py # Schema 生成器
│ └── schema_manager.py # Schema 管理器
├── pyproject.toml # Poetry 配置文件
└── README.md # 项目说明
# 克隆项目
git clone <repository-url>
cd auto-openspg-schema
# 安装开发依赖
poetry install --with dev
# 激活虚拟环境
poetry shell# 使用 Black 格式化代码
black .
# 使用 Flake8 检查代码质量
flake8 .pytest- API 费用: 使用 OpenAI API 会产生费用,请合理控制使用量
- 文档质量: 文档质量直接影响实体提取的准确性
- 模型选择: 推荐使用 GPT-4 以获得更好的提取效果
- 数据安全: 请确保上传的文档不包含敏感信息
MIT License
如有问题或建议,请提交 Issue 或 Pull Request。
poetry add streamlit openai python-docx pypdf2 chardet pandas numpy streamlit-extras requests langchain langchain-openai