我来为您详细介绍如何搭建这个知识库系统。
一、系统架构概览
这是一个基于 Spring Boot + React 的企业知识库系统,采用前后端分离架构:
前端 (React + TypeScript) ←→ 后端 (Spring Boot + H2) ←→ 数据库 (H2)
↑ ↑
用户界面 业务逻辑 + API

二、环境要求
必需软件
-
Java: JDK 8+ (推荐 JDK 11 或 17)
-
Node.js: 16+ (推荐 18+)
-
Maven: 3.6+ (用于后端构建)
-
Git: 用于版本控制
可选工具
-
IDE: IntelliJ IDEA, VS Code, Eclipse
-
数据库工具: H2 Console (内置)

三、 安装步骤
1. 克隆项目
git clone <your-repository-url>
cd company-knowledge-base
2. 后端环境准备
# 检查Java版本
java -version
# 检查Maven版本
mvn -version
# 进入后端目录
cd backend
# 清理并编译项目
mvn clean compile
# 启动后端服务
mvn spring-boot:run
3. 前端环境准备
# 新开一个终端,进入前端目录
cd frontend
# 安装依赖
npm install
# 启动前端服务
npm start
⚙️ 配置说明
后端配置 (backend/src/main/resources/application.properties)
# 服务器配置
server.port=8080
# 数据库配置 (H2内存数据库)
spring.datasource.url=jdbc:h2:file:./knowledgebase
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
# JPA配置
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update
# H2控制台
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
# 文件上传配置
spring.servlet.multipart.max-file-size=50MB
spring.servlet.multipart.max-request-size=50MB
# AI服务配置
deepseek.api.url=https://api.deepseek.com/v1
deepseek.api.key=${DEEPSEEK_API_KEY:your-api-key}
deepseek.model=deepseek-chat
# Embedding配置 (可选)
embeddings.enabled=false
前端配置 (frontend/src/services/api.ts)
// API基础URL配置
const api = axios.create({
baseURL: 'http://localhost:8080', // 后端服务地址
headers: {
'Content-Type': 'application/json',
},
});
四、 启动流程
完整启动命令
# 终端1: 启动后端
cd backend
mvn spring-boot:run
# 终端2: 启动前端
cd frontend
npm start
验证服务状态
# 检查后端 (端口8080)
curl http://localhost:8080/api/documents
# 检查前端 (端口3000)
curl http://localhost:3000

五、系统功能模块
1. 文档管理模块
-
文档上传: 支持多种格式 (PDF, DOCX, TXT等)
-
文档列表: 分页显示,支持搜索
-
文档详情: 查看文档内容和元数据
-
文档删除: 安全删除文档
2. 知识索引模块
-
自动解析: 使用Apache Tika解析文档内容
-
智能分割: 将长文档分割成知识条目
-
向量存储: 支持语义搜索 (可选)
3. 知识问答模块
-
智能问答: 基于知识库内容回答问题
-
多轮对话: 支持上下文对话
-
答案溯源: 显示答案来源
4. 搜索模块
-
关键词搜索: 基于文档标题和内容
-
语义搜索: 基于向量相似度 (可选)
-
分类筛选: 按文档分类筛选

六、自定义配置
修改数据库
# 使用MySQL
spring.datasource.url=jdbc:mysql://localhost:3306/knowledgebase
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=password
# 使用PostgreSQL
spring.datasource.url=jdbc:postgresql://localhost:5432/knowledgebase
spring.datasource.driverClassName=org.postgresql.Driver
启用Embedding功能
# 启用向量搜索
embeddings.enabled=true
embeddings.api.url=https://api.openai.com/v1/embeddings
embeddings.api.key=${OPENAI_API_KEY}
embeddings.model=text-embedding-3-small
修改端口
# 后端端口
server.port=9090
# 前端端口 (在package.json中)
"scripts": {
"start": "PORT=3001 react-scripts start"
}
📁 项目结构
company-knowledge-base/
├── backend/ # 后端项目
│ ├── src/main/java/
│ │ └── com/company/knowledgebase/
│ │ ├── controller/ # REST API控制器
│ │ ├── service/ # 业务逻辑服务
│ │ ├── model/ # 数据模型
│ │ ├── repository/ # 数据访问层
│ │ └── config/ # 配置类
│ ├── src/main/resources/
│ │ └── application.properties
│ └── pom.xml
├── frontend/ # 前端项目
│ ├── src/
│ │ ├── components/ # React组件
│ │ ├── pages/ # 页面组件
│ │ ├── services/ # API服务
│ │ └── App.tsx
│ ├── package.json
│ └── tsconfig.json
└── README.md
七、 使用流程
1. 文档上传
-
访问 http://localhost:3000
-
点击"上传文档"
-
选择文件,填写元数据
-
点击上传
2. 文档索引
-
在文档列表中找到未索引的文档
-
点击"索引"按钮
-
系统自动生成知识条目
3. 知识问答
-
点击"知识问答"
-
输入问题
-
系统基于知识库回答

八、 故障排除
常见问题
-
端口冲突
# 检查端口占用 lsof -i :8080 lsof -i :3000 # 修改端口配置 -
数据库连接失败
# 检查H2数据库文件 ls -la backend/knowledgebase.mv.db # 重新创建数据库 rm backend/knowledgebase.mv.db -
前端依赖问题
cd frontend rm -rf node_modules package-lock.json npm install -
后端编译错误
cd backend mvn clean mvn compile
九、性能优化
生产环境配置
# 数据库连接池
spring.datasource.hikari.maximum-pool-size=20
spring.datasource.hikari.minimum-idle=5
# JPA性能
spring.jpa.show-sql=false
spring.jpa.properties.hibernate.jdbc.batch_size=20
# 缓存配置
spring.cache.type=caffeine
前端优化
// package.json
{
"scripts": {
"build": "GENERATE_SOURCEMAP=false react-scripts build"
}
}
十、部署建议
开发环境
-
使用H2内存数据库
-
启用详细日志
-
开启H2控制台
生产环境
-
使用MySQL/PostgreSQL
-
配置反向代理 (Nginx)
-
启用HTTPS
-
配置监控和日志
📞 技术支持
如果遇到问题,可以:
-
查看日志文件
-
检查配置文件
-
验证网络连接
-
确认依赖版本
系统已完全就绪,可以开始使用了! 🎉
许可证
本项目采用 MIT License 开源许可证, 项目源码需要商业付费。
1609

被折叠的 条评论
为什么被折叠?



