知识图谱管理系统是一个基于 NestJS 和多种数据库技术构建的综合性知识管理平台,旨在提供高效、可扩展的知识存储、检索和可视化服务。系统结合了关系型数据库、图数据库、搜索引擎和缓存服务,形成一个完整的知识管理生态系统。
系统采用模块化设计,由以下核心组件构成:
- API服务层:基于 NestJS 框架,提供 RESTful API
- 数据存储层:
- MySQL:存储结构化数据和本体模型
- ArangoDB:支持图数据存储和查询
- Elasticsearch:提供全文搜索和知识检索
- Redis:缓存服务和队列管理
- 文件存储:基于 MinIO 的对象存储服务
- 用户认证:JWT 基于令牌的认证机制
系统支持多环境配置,包括:
- 开发环境(development)
- 测试环境(test)
- 生产环境(production)
通过 .env.[environment]
文件进行环境特定配置,实现不同环境的灵活切换。
- 用户管理:用户的创建、查询、更新和删除
- 角色管理:基于角色的权限控制
- 组织管理:组织机构树形结构管理
- 菜单管理:系统菜单和操作权限管理
- 模式管理:知识图谱本体模式定义
- 属性管理:知识实体属性配置
- 限定词管理:知识描述的限定词管理
- 标签管理:知识分类标签体系
- 知识创建与编辑:支持多种知识实体的创建和编辑
- 知识融合:相似知识的自动发现与融合
- 知识关联:实体间关系的建立与管理
- 知识可视化:基于图的知识展示
- 模板系统:支持自定义内容模板
- 文件上传:支持图片、视频、文档等多媒体文件
- 缩略图生成:视频和PDF缩略图自动生成
- 远程图片代理:远程图片的安全获取与缓存
- 数据导入:批量数据导入队列处理
- 热点分析:基于Redis的知识热度统计
- 插件扩展:支持功能插件扩展
- Node.js >= 16.x
- MySQL >= 8.0
- ArangoDB >= 3.8
- Elasticsearch >= 7.10
- Redis >= 6.0
- MinIO 服务
npm install
- 根据环境创建或修改配置文件:
.env.development
、.env.test
或.env.production
- 设置数据库连接、外部服务地址等配置项
开发环境:
npm run start:dev
生产环境:
# 先构建
npm run build:prod
# 再运行
npm run start:prod
测试环境:
npm run start:test
启动服务后,访问 Swagger UI 界面:
http://localhost:3000/api
api/
├── src/
│ ├── addons/ # 插件扩展模块
│ ├── auth/ # 认证授权模块
│ ├── config/ # 配置管理模块
│ ├── core/ # 核心功能模块
│ ├── knowledge/ # 知识管理模块
│ ├── minio/ # MinIO文件存储模块
│ ├── ontology/ # 本体建模模块
│ ├── redis/ # Redis缓存模块
│ ├── system/ # 系统管理模块
│ ├── app.module.ts # 应用主模块
│ └── main.ts # 应用入口
├── .env.development # 开发环境配置
├── .env.production # 生产环境配置
├── .env.test # 测试环境配置
├── nest-cli.json # NestJS CLI配置
├── package.json # 项目依赖配置
└── README.md # 项目文档
- 用户管理:用户增删改查和权限分配
- 角色管理:角色定义和菜单权限分配
- 组织管理:树形组织结构管理
- 菜单管理:系统菜单和按钮权限配置
- 操作管理:系统操作权限定义
- Schema管理:定义知识类型和结构
- Property管理:定义知识属性和约束
- Qualify管理:定义属性的限定词
- Tag管理:知识标签体系
- Application管理:知识应用场景定义
- 节点管理:知识实体的增删改查
- 边管理:知识关系的管理
- 知识融合:相似知识的合并
- 知识检索:基于Elasticsearch的知识搜索
- 知识可视化:基于图的知识展示
- 数据导入:基于队列的批量数据导入
- 文件上传:文件的上传和管理
- 文件预览:图片、视频、文档的预览
- 缩略图生成:视频和PDF文件的缩略图生成
- 远程资源代理:安全获取远程资源
- 后端框架:NestJS
- 数据库:MySQL、ArangoDB、Elasticsearch、Redis
- 文件存储:MinIO
- 认证鉴权:Passport、JWT
- 队列处理:BullMQ
- API文档:Swagger
- ORM:TypeORM
- 自然语言处理:nodejieba
- Fork 项目仓库
- 创建功能分支 (
git checkout -b feature/amazing-feature
) - 提交修改 (
git commit -m 'Add some amazing feature'
) - 推送到分支 (
git push origin feature/amazing-feature
) - 创建 Pull Request
项目采用 MIT 许可证 - 详见 LICENSE 文件