1. 项目概述:轻量级知识图谱系统的设计与实现
这套知识图谱系统是我在探索企业知识管理解决方案时开发的一个轻量级原型。不同于市面上复杂的企业级产品,它的核心目标是在30分钟内完成从零部署到可视化展示的全流程,让技术团队能够快速验证知识图谱在具体业务场景中的可行性。
系统采用前后端分离架构,前端基于Vue3+Vite实现响应式交互界面,后端使用Express提供RESTful API,数据存储则巧妙地利用SQL.js实现了浏览器环境下的SQLite功能。这种设计使得整套系统可以单机运行,无需依赖复杂的数据库服务,特别适合原型验证和内部演示场景。
在实际使用中发现,90%的团队在初次接触知识图谱时,最需要的是一个能立即跑通的"最小可行产品",而不是功能繁杂的完整解决方案。这正是本系统的设计初衷。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构解析
2.1 整体技术栈选择
前端技术栈:
- Vue3 + Vite:构建响应式单页应用
- D3.js:实现知识图谱可视化
- Pinia:状态管理
- Element Plus:UI组件库
后端技术栈:
- Express.js:轻量级Web框架
- SQL.js:浏览器端SQLite实现
- PDF.js:PDF文档解析
- Cheerio:Markdown/HTML解析
2.2 数据流向设计
系统数据流遵循清晰的单向流动原则:
- 文件上传 → 后端解析 → 生成节点关系
- 节点关系 → 前端存储 → 可视化渲染
- 用户查询 → 关键词提取 → 文档/图谱检索 → LLM生成回答
这种设计使得每个模块职责单一,便于后续扩展。例如当需要替换解析引擎时,只需修改对应的服务模块,不会影响其他功能。
3. 核心功能实现细节
3.1 知识抽取模块
文件解析是系统的核心能力之一,我们实现了多层次的解析策略:
结构化数据解析
- JSON文件:直接提取nodes和edges数组
- CSV文件:支持两种格式:
- 实体表+关系表模式
- 三元组模式(subject,predicate,object)
非结构化文本解析
- 正则抽取:预定义实体和关系模式
- LLM智能抽取:采用prompt模板:
python复制你是一个知识抽取专家,请从以下文本中提取
