Skip to content

Angular 和 Nestjs 构建的开源知识图谱管理系统,基于 @ng-nest/ui 组件库

Notifications You must be signed in to change notification settings

yulongbb/knowledge_graph

Repository files navigation

知识图谱管理系统

项目简介

知识图谱管理系统是一个基于 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

配置环境

  1. 根据环境创建或修改配置文件:.env.development.env.test.env.production
  2. 设置数据库连接、外部服务地址等配置项

启动服务

开发环境:

npm run start:dev

生产环境:

# 先构建
npm run build:prod
# 再运行
npm run start:prod

测试环境:

npm run start:test

访问API文档

启动服务后,访问 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

贡献指南

  1. Fork 项目仓库
  2. 创建功能分支 (git checkout -b feature/amazing-feature)
  3. 提交修改 (git commit -m 'Add some amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 创建 Pull Request

许可证

项目采用 MIT 许可证 - 详见 LICENSE 文件

About

Angular 和 Nestjs 构建的开源知识图谱管理系统,基于 @ng-nest/ui 组件库

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published