基于 Spring Boot + Vue 的本地知识库管理系统,支持文章录入、LLM 自动归类、同主题聚合为知识、全量版本管理与变更 diff 展示。

weisijie d253d9f8de 1. 实现了基于 Spring Boot 3 + Vue 3 的本地知识库管理系统,支持文章录入、LLM 归类与同主题聚合; před 1 týdnem
backend d253d9f8de 1. 实现了基于 Spring Boot 3 + Vue 3 的本地知识库管理系统,支持文章录入、LLM 归类与同主题聚合; před 1 týdnem
docs d253d9f8de 1. 实现了基于 Spring Boot 3 + Vue 3 的本地知识库管理系统,支持文章录入、LLM 归类与同主题聚合; před 1 týdnem
frontend d253d9f8de 1. 实现了基于 Spring Boot 3 + Vue 3 的本地知识库管理系统,支持文章录入、LLM 归类与同主题聚合; před 1 týdnem
.gitattributes d253d9f8de 1. 实现了基于 Spring Boot 3 + Vue 3 的本地知识库管理系统,支持文章录入、LLM 归类与同主题聚合; před 1 týdnem
.gitignore d253d9f8de 1. 实现了基于 Spring Boot 3 + Vue 3 的本地知识库管理系统,支持文章录入、LLM 归类与同主题聚合; před 1 týdnem
README.md d253d9f8de 1. 实现了基于 Spring Boot 3 + Vue 3 的本地知识库管理系统,支持文章录入、LLM 归类与同主题聚合; před 1 týdnem
prompts.md d253d9f8de 1. 实现了基于 Spring Boot 3 + Vue 3 的本地知识库管理系统,支持文章录入、LLM 归类与同主题聚合; před 1 týdnem
run.bat d253d9f8de 1. 实现了基于 Spring Boot 3 + Vue 3 的本地知识库管理系统,支持文章录入、LLM 归类与同主题聚合; před 1 týdnem
run.sh d253d9f8de 1. 实现了基于 Spring Boot 3 + Vue 3 的本地知识库管理系统,支持文章录入、LLM 归类与同主题聚合; před 1 týdnem

README.md

知识库管理系统

基于 Spring Boot + Vue 的本地知识库管理系统,支持文章录入、LLM 自动归类、同主题聚合为知识、全量版本管理与变更 diff 展示。

核心功能

  • 分级标签体系:基于 tag-system 标准三表(tag_group / tag / tag_assignment),支持任意层级、导入导出
  • 多格式文章录入:Markdown / 纯文本 / 链接(自动抓取网页正文)
  • LLM 智能归类:OpenAI 兼容协议,自动匹配/新建标签 + 归纳主题
  • 同主题聚合:LLM 判定并入已有知识或新建,自动整合内容
  • 全量版本管理:每次变更保存完整快照 + diff 行数统计
  • 时间轴 UI:三栏布局展示知识全文 + 时间轴 + 版本详情 + 差异
  • 单用户登录:JWT 认证,首次启动引导设置管理员
  • 前端配置 LLM:base_url / api_key / model 通过前端设置页配置,api_key AES 加密入库

快速开始

1. 准备 MySQL 数据库

mysql -u root -p < backend/src/main/resources/schema.sql

或在 MySQL 客户端中执行 backend/src/main/resources/schema.sql 全部内容。

2. 修改数据库配置(可选)

如需修改数据库连接,编辑 backend/src/main/resources/application.yml

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/knowledge_extractor?...
    username: root
    password: your_password

3. 一键构建运行(Windows)

run.bat            # 构建 + 启动(端口 7945)
run.bat build      # 仅构建

4. 一键构建运行(Linux/macOS)

chmod +x run.sh
./run.sh            # 构建 + 启动
./run.sh build      # 仅构建

5. 访问系统

浏览器打开 http://localhost:7945

首次访问会跳转到 /setup 页面,设置管理员账号并配置 LLM。

技术栈

技术
后端 Spring Boot 3.2 + MyBatis Plus + MySQL 8 + JWT (jjwt) + Jsoup + DiffMatchPatch
前端 Vue 3 + Vite + Element Plus + Pinia + Vue Router + marked + diff-match-patch
部署 合并部署(前端构建产物直出后端 static),端口 7945

项目结构

knowledge-extractor/
├── backend/                    Spring Boot 后端
├── frontend/                   Vue 3 前端
├── docs/                       设计文档
│   ├── 01-requirements.md      需求与决策记录
│   ├── 02-architecture.md      架构设计
│   ├── 03-skill-constraints.md 技能约束备忘录
│   └── 04-llm-prompts.md       LLM Prompt 设计
├── run.bat / run.sh            一键构建脚本
├── .gitattributes
└── README.md

文档导航

详细设计请查看 docs/ 目录下 4 份文档。

LLM 配置说明

系统使用 OpenAI 兼容协议,已测试可用的服务商:

服务商 base_url model 示例
OpenAI https://api.openai.com/v1 gpt-4o-mini
DeepSeek https://api.deepseek.com/v1 deepseek-chat
智谱 GLM https://open.bigmodel.cn/api/paas/v4 glm-4-flash
Moonshot https://api.moonshot.cn/v1 moonshot-v1-8k
通义千问 https://dashscope.aliyuncs.com/compatible-mode/v1 qwen-plus
本地 Ollama http://localhost:11434/v1 llama3.1:8b

任何兼容 OpenAI /v1/chat/completions 协议的服务均可使用。

业务流程

录入文章(md/txt/链接)
   ↓
LLM 归类
   ├── 匹配已有标签(0~5 个)
   ├── 建议新增标签(最多 2 个,含父路径)
   └── 归纳主题名
   ↓
LLM 聚合判定
   ├── 并入已有知识 → 生成增补内容 + diff
   └── 新建知识 → 生成初版全文 + diff
   ↓
知识库展示
   └── 时间轴查看每次变更(描述 + diff + 关联原文章)

常见问题

Q:忘记管理员密码怎么办?

直接操作数据库重置:

-- 用 BCrypt 工具生成新密码 hash(如密码 "123456")
UPDATE sys_user SET password_hash = '$2a$10$xxx', salt = '$2a$10$xxx' WHERE username = 'admin';

Q:如何修改 JWT 密钥?

编辑 backend/src/main/resources/application.ymljwt.secret 字段(至少 32 字节)。

Q:前端如何修改后再部署?

只需重新执行 run.batrun.bat build,Vite 会自动把最新前端打包到后端 static 目录。

Q:链接抓取失败怎么办?

在文章录入页选择"链接"类型时,若抓取失败,系统会提示错误。可改用 md 类型手动粘贴正文。