# 个人知识库 **Repository Path**: bingbingyihao/personal-knowledge-base ## Basic Information - **Project Name**: 个人知识库 - **Description**: 采用SpringBoot、vue3结合通义千问,mysql、es 实现个人知识库管理及检索 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-02 - **Last Updated**: 2026-06-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 个人知识库 ## 介绍 采用 SpringBoot、Vue3 结合通义千问AI、MySQL、Elasticsearch 实现个人知识库管理及检索系统。支持文档上传、AI自动提取知识条目、全文检索等功能。 ## 技术栈 ### 后端 - Spring Boot 2.7.18 - Java 8 - MyBatis-Plus 3.5.3.1 - MySQL 8.0.33 - Elasticsearch 7.17.9 - Apache PDFBox(PDF解析) - Apache POI(Word解析) - OkHttp(AI API调用) - Hutool(工具类库) - Lombok ### 前端 - Vue 3 - Vue Router 4 - Axios - v-md-editor(Markdown编辑器) - Prism.js(代码高亮) ## 功能特性 - **文档上传**: 支持 txt、md、pdf、docx、图片(jpg/png/bmp/gif)、音频(mp3/wav/flac/aac/m4a/ogg)、视频(mp4/avi/mkv/mov/wmv/flv)等多种格式 - **AI知识提取**: 自动分析文档内容,提取关键知识条目(标题、内容、标签) - **图片OCR识别**: 支持图片文字识别并提取知识 - **视频/音频识别**: 视频自动转音频后,使用通义千问音频识别接口提取语音文字内容并提取知识 - **全文检索**: 基于 Elasticsearch 的多字段搜索,支持高亮显示 - **分页展示**: 文档列表和搜索结果均支持分页 - **标签管理**: AI自动为知识条目打标签 ## 环境要求 - JDK 8+ - Node.js 14+ - MySQL 8.0+ - Elasticsearch 7.x - Maven 3.6+ ## 快速开始 ### 1. 数据库初始化 执行 `code/SpringBoot/src/main/resources/sql/init.sql` 初始化数据库和表结构: ```bash mysql -u root -p < code/SpringBoot/src/main/resources/sql/init.sql ``` ### 2. Elasticsearch索引初始化 执行 `code/SpringBoot/src/main/resources/elasticsearch/init_index.http` 创建ES索引和映射。 ### 3. 后端配置 修改 `code/SpringBoot/src/main/resources/application.properties` 配置文件: ```properties # 数据库配置 spring.datasource.url=jdbc:mysql://localhost:3306/knowledge_base spring.datasource.username=root spring.datasource.password=123456 # AI API配置 ai.api.key=your_api_key # 替换为你的通义千问API Key # 文件上传路径 file.upload-dir=C:/bbyh/workspace/IDEA/personal-knowledge-base/code/SpringBoot/uploads ``` ### 4. 启动后端 ```bash cd code/SpringBoot mvn spring-boot:run ``` 后端默认运行在 `http://localhost:8080` ### 5. 启动前端 ```bash cd code/vue npm install npm run serve ``` 前端默认运行在 `http://localhost:8081` ## API接口 ### 文档管理 | 接口 | 方法 | 描述 | |------|------|------| | `/api/doc/upload` | POST | 上传文档 | | `/api/doc/list` | GET | 获取文档列表(分页) | | `/api/doc/{id}` | GET | 获取文档详情 | | `/api/doc/{id}` | DELETE | 删除文档 | ### 搜索接口 | 接口 | 方法 | 描述 | |------|------|------| | `/api/search` | POST | 搜索知识(支持关键字、文件类型过滤) | | `/api/search/{id}` | GET | 获取知识详情 | | `/api/search/doc/{docId}` | GET | 获取文档下的所有知识记录 | | `/api/search/doc/{docId}/detail` | GET | 获取文档详细信息 | ## 系统架构 ``` ┌─────────────┐ 上传文档 ┌─────────────┐ │ 前端Vue │ ──────────────> │ SpringBoot │ │ (8081) │ <────────────── │ (8080) │ └─────────────┘ 响应 └──────┬──────┘ │ ┌────────────────────┼────────────────────┐ ▼ ▼ ▼ ┌────────────┐ ┌────────────┐ ┌────────────────┐ │ MySQL │ │ ES │ │ 通义千问AI API │ │ 知识存储 │ │ 全文检索 │ │ 知识提取 │ └────────────┘ └────────────┘ └────────────────┘ ``` ## 文档处理流程 1. 用户上传文档到服务器 2. 异步任务启动文档处理: - 文本文件:解析文件内容 → AI提取知识 → 保存到MySQL → 索引到ES - 图片文件:AI OCR识别 → 提取知识 → 保存到MySQL → 索引到ES - 音频文件:AI语音识别 → 转文字 → AI提取知识 → 保存到MySQL → 索引到ES - 视频文件:FFmpeg提取音频 → AI语音识别 → 转文字 → AI提取知识 → 保存到MySQL → 索引到ES 3. 处理完成后,用户可通过搜索功能检索知识 ## 项目结构 ``` personal-knowledge-base/ ├── code/ │ ├── SpringBoot/ # 后端代码 │ │ ├── src/main/java/ │ │ │ └── com/boot/ │ │ │ ├── MainApplication.java # 启动类 │ │ │ ├── config/ # 配置类 │ │ │ ├── controller/ # 控制器 │ │ │ ├── dto/ # 数据传输对象 │ │ │ ├── entity/ # 实体类 │ │ │ ├── enums/ # 枚举类 │ │ │ ├── exception/ # 异常处理 │ │ │ ├── mapper/ # MyBatis映射 │ │ │ ├── service/ # 业务逻辑 │ │ │ └── utils/ # 工具类 │ │ └── src/main/resources/ │ │ ├── application.properties # 配置文件 │ │ └── sql/ # SQL脚本 │ └── vue/ # 前端代码 │ └── src/ │ ├── api/ # API请求 │ ├── components/ # 公共组件 │ ├── views/ # 页面视图 │ └── router/ # 路由配置 ├── test_docs/ # 测试文档 └── README.md ``` ## 注意事项 - 首次使用需要配置通义千问 API Key - 文件上传大小限制为 50MB - 删除文档会同时删除 MySQL、ES 索引和物理文件 - AI知识提取失败时会自动重试 3 次 ## License [Apache 2.0 License](LICENSE)