派聪明起不来?小莜手摸手教你!
本文目录 · 39 节
星球:Java进阶之路&二哥编程星球 | 专栏:派聪明RAG知识库 | 作者:YaeMivo | 发布:2025-08-02
派聪明起不来?小莜手摸手教你!
派聪明起不来?小莜手摸手教你!
Hi ~ 不知道大家对我是否还有印象哈哈,
其实二哥的上一个微服务项目 PmHub 我也写有部署教程 ~ 😄
语雀浏览效果更佳哦~ https://www.yuque.com/apple-pie/bt5z3b/rhqaf7mn9yn82gbf?singleDoc#
也可以关注我的语雀花园, 里面有我整理的 Java 技术专栏 ~ Yaeovo · 语雀

1.前置碎碎念, 可跳过直接看实操~
前两天看到了二哥上线了大家期待已久的 RAG 项目 派聪明 - pai-smart
正好在秋招前上线, 看来这段时间二哥的行程被安排的满满当当的呀, 哈哈~
学习一个项目最前置的步骤当然是将项目跑起来啦~
不然干瞪眼看着代码, 学习的效率估计也是上不来的哈哈~
浏览了一下现在已出的教程, 发现只有一个本地启动的教程, 还是 Mac 版的
正好今天是星期五, 晚上下班之后就没什么事情, 于是忙完自己的日常就着手写一篇~
顺便也是帮二哥把教程文档这块完善一下, 嘻嘻~
(非常有幸能在大二遇到二哥~ 帮我抹平了非常多的信息差, 受益匪浅~)
友情提示, 这篇文章的部署仅供学习参考, 切勿上生产环境~
所有的中间件我均采用的是 Docker 容器化部署, 代码可在本地启动
不过后面也有教如何将代码打包成镜像和中间件一同部署在 Docker 中
如果使用服务器或者虚拟机的话, 记得开放对应的端口或者关闭防火墙(服务器开放对应端口)
2.前置环境部署
2.1 JDK 安装
因为派聪明用的SpringBoot的版本是3.x 所以要用JDK17及以上的版本 : JDK 17 下载
下载完之后直接双击 .exe 文件即可安装, 如果想在 Windows 上进行 JDK 多版本切换
可以参考我之前写的一篇文章, 这里就不过多赘述了, 节约大家的时间~ 🥝JDK版本切换 - Windows
如果是后面要将本地的后端代码也一起部署在 Docker 上运行的话, linux 也是要安装 JDK17以上版本
这里也同样是为了压缩文章篇幅, 直接放一个我之前写好的教程吧~ 🐅22. Docker 部署 JDK11
JDK 11 和 JDK 17 是一个道理的, 只需要将包切换成 JDK17 即可~
2.2 MySQL 安装
[Step 1] : 拉取 MYSQL 镜像
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker pull mysql:8.0.33

[Step 2] : 创建 MYSQL 相关目录 ➡️ 启动 MYSQL 容器 ➡️ 拷贝文件 ➡️ 授权文件夹 ➡️ 删除容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
# 创建 MYSQL 相关目录
mkdir -p /data/mysql/{conf,log,data}
# 启动 MYSQL 容器
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=ovoAdmin123 -d mysql:8.0.33
# 拷贝文件
docker cp mysql:/var/log /data/mysql
docker cp mysql:/etc/my.cnf /data/mysql/conf
# 授权文件夹
chmod 777 /data/mysql/{log,data}
chmod 644 /data/mysql/conf/my.cnf
# 删除容器
docker rm -f mysql
对应的目录下会创建有相应的文件夹

[Step 3] : 创建 MYSQL 容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker run -p 3306:3306 --name mysql \
-v /data/mysql/log:/var/log/mysql \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-e TZ=Asia/Shanghai --restart=always \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.33
相关参数解释 :
1.
docker run: 创建并运行一个容器, -d是让容器在后台运行
2.
-- name mysql: 给容器起一个名字, 名字必须唯一
3.
-v /data/mysql/log:/var/log/mysql : 挂载配置文件
4.
-p 3306:3306: 设置端口映射
5.
-e KEY = VALUE: 设置环境变量 -e就是environment的意思
6.
TZ=Asia/Shanghai : 设置数据库时区为东八区
7.
--restart=always : 自启动 ( 服务器重启后会自启动 )
8.
MYSQL_ROOT_PASSWORD : 数据库密码
9.
mysql:指定运行的镜像的名字, 后面可以跟版本号, 如果不跟默认最新版
[Step 4] : 查看 MYSQL 日志
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker logs -f mysql
没有 Error 就是启动成功了

[Step 5] : 使用工具连接 MYSQL
填写连接信息

测试连接成功 !

到这里就将 MySQL 部署成功啦~
2.3 ElasticSearch 安装
这个的安装就有点小复杂啦~ 不过跟着我的步骤来就会简单很多!! (其实都是CV哈哈哈~)
我这里偷懒直接装的 7.14.0 版本, 最后测试也是没问题的~ 不过尽量还是保持和二哥的版本一致~
[Step 1] : 拉取 ElasticSearch 镜像
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker pull elasticsearch:7.14.0

[Step 2] : 创建网络➡️创建目录➡️启动容器➡️拷贝文件➡️授权文件➡️删除容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
# 创建网络
docker network create elastic
# 创建目录
mkdir -p /data/elasticsearch/{config,data,logs,plugins}
# 启动容器
docker run --name elasticsearch --restart=always \
-p 9200:9200 -p 9300:9300 \
--privileged --network elastic \
-e "discovery.type=single-node" \
-d elasticsearch:7.14.0
# 拷贝文件
docker cp -a elasticsearch:/usr/share/elasticsearch/config/ /data/elasticsearch
docker cp -a elasticsearch:/usr/share/elasticsearch/data/ /data/elasticsearch
docker cp -a elasticsearch:/usr/share/elasticsearch/logs/ /data/elasticsearch
docker cp -a elasticsearch:/usr/share/elasticsearch/plugins/ /data/elasticsearch
# 授权文件
chmod -R 777 /data/elasticsearch/{config,data,logs,plugins}
# 删除容器
docker rm -f elasticsearch
[Step 3] : 启动 ElasticSearch 容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker run --name elasticsearch --restart=always \
-p 9200:9200 -p 9300:9300 \
--privileged=true --network elastic \
-e ES_JAVA_OPTS="-Xms256m -Xmx512m" \
-e "discovery.type=single-node" \
-e KEYSTORE_USERNAME=elastic \
-e KEYSTORE_PASSWORD=elastic \
-e "ingest.geoip.downloader.enabled=false" \
-v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /data/elasticsearch/logs:/usr/share/elasticsearch/logs \
-v /data/elasticsearch/config:/usr/share/elasticsearch/config \
-d elasticsearch:7.14.0
相关参数解释 :
1.
--privileged=true: 以特权模式运行容器,类似于主机上的 root 权限。
2.
--network elastic: 将容器加入名为 elastic 的 Docker 网络中,这可以方便容器之间的通信。
3.
-e ES_JAVA_OPTS="-Xms256m -Xmx512m": 用于配置 JVM 的最大最小堆内存。
4.
-e "discovery.type=single-node": 设置 Elasticsearch 为单节点模式
5.
-e KEYSTORE_USERNAME=elastic 和 -e KEYSTORE_PASSWORD=elastic: 设置 Elasticsearch 的认证用户名和密码为 elastic,这些变量将用于存储在密钥库中的凭据。
[Step 4] : 访问 ElasticSearch 服务
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
# IP地址改成自己的
http://172.29.32.233:9200/

[Step 5] : 安装 IK 分词器 ~
在这里下载与 elasticsearch 对应版本的 ik 分词器 : https://release.infinilabs.com/analysis-ik/stable/
比如我的是 7.14.0 就下载这个

下载之后上传到我们挂载的 plugins 文件夹下, 之后再重启 elasticsearch 即可

ik 文件夹的内容如下 :

重启 elasticsearch :
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker restart elasticsearch
测试是否安装成功 : (记得换成自己的ip地址)
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
curl -X GET "你的ip地址:9200/_analyze?pretty" -H 'Content-Type: application/json' -d'
{
"analyzer": "ik_smart",
"text": "中华人民共和国万岁"
}
'
出现如下图结果即为 ik 分词器生效啦~

2.4 Redis 安装
[Step 1] : 拉取 Redis 镜像, 推荐使用 7 的 Redis 版本
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker pull redis:7.0.12

[Step 2] : 创建 Redis 相关目录 ➡️ 启动 Redis 容器 ➡️ 拷贝文件 ➡️ 授权文件夹 ➡️ 删除容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
# 创建 Redis 相关目录
mkdir -p /data/redis/{conf,data,log}
touch /data/redis/log/redis.log
touch /data/redis/conf/redis.conf
# 启动 Redis 容器
docker run -p 6379:6379 --name redis -d redis:7.0.12
# 拷贝文件
docker cp redis:/data /data/redis
docker cp redis:/etc/redis.log /data/redis/log
docker cp redis:/etc/redis/redis.conf /data/redis/conf
# 授权文件夹
chmod -R 777 /data/redis/conf/redis.conf /data/redis/log/redis.log /data/redis/data
# 删除容器
docker rm -f redis
[Step 3] : 创建 Redis 容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker run --name redis \
-p 6379:6379 --restart=always \
-v /data/redis/data:/data \
-v /data/redis/log/redis.log:/etc/redis.log \
-v /data/redis/conf:/etc/redis/redis.conf \
-d redis:7.0.12 redis-server /etc/redis/redis.conf
[Step 4] : 查看 Redis 日志
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker logs -f redis

[Step 5] : 用Redis连接工具查看是否成功部署 Redis
填写 Redis 连接信息

连接成功 !

2.5 Minio 安装
[Step 1] : 拉取 Minio 镜像
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker pull minio/minio:RELEASE.2025-04-22T22-12-26Z

[Step 2] : 启动 Minio 容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker run --name minio --restart=always \
-p 9000:9000 -p 9090:9090 \
-e "MINIO_ROOT_USER=minio" \
-e "MINIO_ROOT_PASSWORD=minio123456" \
-v /data/minio/data:/data \
-v /data/minio/conf:/root/.minio \
-d minio/minio:RELEASE.2025-04-22T22-12-26Z server \
/data --console-address ":9090" -address ":9000"
[Step 3] : 访问 Minio 控制台
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
# 换成自己的IP地址
http://172.29.32.233:9090/login

[Step 4] : 创建 Bucket 容器


[Step 5] : 修改访问权限为 public

2.6Kafka 安装
Kafka对于zookeeper是强依赖,保存kafka相关的节点数据,
所以安装Kafka之前必须先安装zookeeper
创建一个网络用于两者互连
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker network create kafka-net
[Step 1] : 部署 Zookeeper -> 拉取 Zookeeper 镜像 ➡️ 启动 Zookeeper 容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker pull zookeeper:3.4.14
docker run -d --name zookeeper --network kafka-net zookeeper:3.4.14


[Step 2] : 部署 Kafka 服务 -> 拉取镜像 ➡️ 启动Kafka容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
# 拉取 Kafka 镜像
docker pull wurstmeister/kafka:2.12-2.3.1
# 启动Kafka容器 - 记得修改成自己的IP地址还有Kafka的端口
docker run -d --name kafka \
--network kafka-net \
--env KAFKA_ADVERTISED_HOST_NAME=192.168.100.233 \
--env KAFKA_ZOOKEEPER_CONNECT=192.168.100.233:2181 \
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.100.233:9092 \
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
--env KAFKA_HEAP_OPTS="-Xmx256M -Xms256M" \
-p 9092:9092 wurstmeister/kafka:2.12-2.3.1
[Step 3] : 查看 Kafka 启动日志
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker logs -f kafka
b
[Step 4] : 创建对应的主题和队列
进入 Kafka 容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker exec -it kafka bash
切换到 Kafka 的 bin 目录
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
cd /opt/kafka/bin
创建文件处理主题
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
./kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic file-processing
创建向量化主题
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
./kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic vectorizatio
具体操作如下图 :

3.启动项目
前置部署 : 本地部署 DeepSeek 参考 -> 🍒0. 本地部署 Deepseek-R1
(不想本地部署的话就直接去DeepSeekAPI开放平台充点钱拿个Key就行 DeepSeek Platform)
3.1 启动后端 - Windows 版
首先把代码拉取下来, 刷新 maven 确保依赖都正确引入, 修改项目的 JDK为17及以上版本
之后就是最简单的修改对应的配置信息啦~


派聪明, 启动 ~
出现这个说明就启动成功啦~ 你已经离成功只差 1% 了 !!!

可以通过一下命令来查看索引是否创建成功~
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
curl -X GET 'http://你的ip地址:9200/knowledge_base/_mapping?pretty' -u 'elastic:elastic'

配置好 DeepSeek 的 Key, 分清楚是本地还是调官方的API, 因为请求地址不一样
这是本地的配置 :

这是调官方API的配置 :

Windows 后端到此就结束啦~
3.2 启动后端 - Docker 版
上面的配置信息都填写正确之后, 将后端打成 jar 包, 然后上传到服务器中

编写 Dockerfile 文件, 可以直接拷贝我的
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
FROM eclipse-temurin:17-jre
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Shanghai
ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8
COPY SmartPAI-0.0.1-SNAPSHOT.jar /pai-smart.jar
ENTRYPOINT ["java","-jar","/pai-smart.jar"]
将 jar 包和 Docker 文件放在同一个目录下, 然后进入这个目录, 比如我的在 /data/pai-smart/
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
cd /data/pai-smart
将 jar 包打包成镜像然后再部署到 Docker 上即可
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker build -t pai-smart:v1.0 .

启动后端项目
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker run -d --name pai-smart -p 38848:38848 pai-smart:v1.0
查看启动日志, 检查是否启动成功
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker logs -f pai-smart

3.3 启动前端
没有拉取前端代码的话, 也可以直接访问前端测试页面 ~
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
http://localhost:8081/test.html

有前端代码的话, 将代码里的 fronted 文件夹放到对应的前端软件然后 pnpm i 再 pnpm dev run

之后就可以使用啦~

文章到这基本就结束啦, 非常感谢小伙伴可以耐心地看完~
最后还是非常感谢二哥能给我们带来这样一个项目, 期间付出的汗水自然不必多说哈哈~
如果对本文章有任何疑问都可以评论留言, 我看到会及时回复的~
或者觉得本文章还有哪些可以改进的地方都可以提, 互相探讨, 共同进步, 支持开源~
引用二哥的一句话, "一个人可以走的很快, 但是一群人才能走的更远"~ 共勉! 😄
在这祝各位学生学有所成, 祝各位已经工作的工作顺利哈哈哈~
Hi ~ 不知道大家对我是否还有印象哈哈,
其实二哥的上一个微服务项目 PmHub 我也写有部署教程 ~ 😄
语雀浏览效果更佳哦~ https://www.yuque.com/apple-pie/bt5z3b/rhqaf7mn9yn82gbf?singleDoc#
也可以关注我的语雀花园, 里面有我整理的 Java 技术专栏 ~ Yaeovo · 语雀

1.前置碎碎念, 可跳过直接看实操~
前两天看到了二哥上线了大家期待已久的 RAG 项目 派聪明 - pai-smart
正好在秋招前上线, 看来这段时间二哥的行程被安排的满满当当的呀, 哈哈~
学习一个项目最前置的步骤当然是将项目跑起来啦~
不然干瞪眼看着代码, 学习的效率估计也是上不来的哈哈~
浏览了一下现在已出的教程, 发现只有一个本地启动的教程, 还是 Mac 版的
正好今天是星期五, 晚上下班之后就没什么事情, 于是忙完自己的日常就着手写一篇~
顺便也是帮二哥把教程文档这块完善一下, 嘻嘻~
(非常有幸能在大二遇到二哥~ 帮我抹平了非常多的信息差, 受益匪浅~)
友情提示, 这篇文章的部署仅供学习参考, 切勿上生产环境~
所有的中间件我均采用的是 Docker 容器化部署, 代码可在本地启动
不过后面也有教如何将代码打包成镜像和中间件一同部署在 Docker 中
如果使用服务器或者虚拟机的话, 记得开放对应的端口或者关闭防火墙(服务器开放对应端口)
2.前置环境部署
2.1 JDK 安装
因为派聪明用的SpringBoot的版本是3.x 所以要用JDK17及以上的版本 : JDK 17 下载
下载完之后直接双击 .exe 文件即可安装, 如果想在 Windows 上进行 JDK 多版本切换
可以参考我之前写的一篇文章, 这里就不过多赘述了, 节约大家的时间~ 🥝JDK版本切换 - Windows
如果是后面要将本地的后端代码也一起部署在 Docker 上运行的话, linux 也是要安装 JDK17以上版本
这里也同样是为了压缩文章篇幅, 直接放一个我之前写好的教程吧~ 🐅22. Docker 部署 JDK11
JDK 11 和 JDK 17 是一个道理的, 只需要将包切换成 JDK17 即可~
2.2 MySQL 安装
[Step 1] : 拉取 MYSQL 镜像
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker pull mysql:8.0.33

[Step 2] : 创建 MYSQL 相关目录 ➡️ 启动 MYSQL 容器 ➡️ 拷贝文件 ➡️ 授权文件夹 ➡️ 删除容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
# 创建 MYSQL 相关目录
mkdir -p /data/mysql/{conf,log,data}
# 启动 MYSQL 容器
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=ovoAdmin123 -d mysql:8.0.33
# 拷贝文件
docker cp mysql:/var/log /data/mysql
docker cp mysql:/etc/my.cnf /data/mysql/conf
# 授权文件夹
chmod 777 /data/mysql/{log,data}
chmod 644 /data/mysql/conf/my.cnf
# 删除容器
docker rm -f mysql
对应的目录下会创建有相应的文件夹

[Step 3] : 创建 MYSQL 容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker run -p 3306:3306 --name mysql \
-v /data/mysql/log:/var/log/mysql \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-e TZ=Asia/Shanghai --restart=always \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.33
相关参数解释 :
1.
docker run: 创建并运行一个容器, -d是让容器在后台运行
2.
-- name mysql: 给容器起一个名字, 名字必须唯一
3.
-v /data/mysql/log:/var/log/mysql : 挂载配置文件
4.
-p 3306:3306: 设置端口映射
5.
-e KEY = VALUE: 设置环境变量 -e就是environment的意思
6.
TZ=Asia/Shanghai : 设置数据库时区为东八区
7.
--restart=always : 自启动 ( 服务器重启后会自启动 )
8.
MYSQL_ROOT_PASSWORD : 数据库密码
9.
mysql:指定运行的镜像的名字, 后面可以跟版本号, 如果不跟默认最新版
[Step 4] : 查看 MYSQL 日志
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker logs -f mysql
没有 Error 就是启动成功了

[Step 5] : 使用工具连接 MYSQL
填写连接信息

测试连接成功 !

到这里就将 MySQL 部署成功啦~
2.3 ElasticSearch 安装
这个的安装就有点小复杂啦~ 不过跟着我的步骤来就会简单很多!! (其实都是CV哈哈哈~)
我这里偷懒直接装的 7.14.0 版本, 最后测试也是没问题的~ 不过尽量还是保持和二哥的版本一致~
[Step 1] : 拉取 ElasticSearch 镜像
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker pull elasticsearch:7.14.0

[Step 2] : 创建网络➡️创建目录➡️启动容器➡️拷贝文件➡️授权文件➡️删除容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
# 创建网络
docker network create elastic
# 创建目录
mkdir -p /data/elasticsearch/{config,data,logs,plugins}
# 启动容器
docker run --name elasticsearch --restart=always \
-p 9200:9200 -p 9300:9300 \
--privileged --network elastic \
-e "discovery.type=single-node" \
-d elasticsearch:7.14.0
# 拷贝文件
docker cp -a elasticsearch:/usr/share/elasticsearch/config/ /data/elasticsearch
docker cp -a elasticsearch:/usr/share/elasticsearch/data/ /data/elasticsearch
docker cp -a elasticsearch:/usr/share/elasticsearch/logs/ /data/elasticsearch
docker cp -a elasticsearch:/usr/share/elasticsearch/plugins/ /data/elasticsearch
# 授权文件
chmod -R 777 /data/elasticsearch/{config,data,logs,plugins}
# 删除容器
docker rm -f elasticsearch
[Step 3] : 启动 ElasticSearch 容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker run --name elasticsearch --restart=always \
-p 9200:9200 -p 9300:9300 \
--privileged=true --network elastic \
-e ES_JAVA_OPTS="-Xms256m -Xmx512m" \
-e "discovery.type=single-node" \
-e KEYSTORE_USERNAME=elastic \
-e KEYSTORE_PASSWORD=elastic \
-e "ingest.geoip.downloader.enabled=false" \
-v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /data/elasticsearch/logs:/usr/share/elasticsearch/logs \
-v /data/elasticsearch/config:/usr/share/elasticsearch/config \
-d elasticsearch:7.14.0
相关参数解释 :
1.
--privileged=true: 以特权模式运行容器,类似于主机上的 root 权限。
2.
--network elastic: 将容器加入名为 elastic 的 Docker 网络中,这可以方便容器之间的通信。
3.
-e ES_JAVA_OPTS="-Xms256m -Xmx512m": 用于配置 JVM 的最大最小堆内存。
4.
-e "discovery.type=single-node": 设置 Elasticsearch 为单节点模式
5.
-e KEYSTORE_USERNAME=elastic 和 -e KEYSTORE_PASSWORD=elastic: 设置 Elasticsearch 的认证用户名和密码为 elastic,这些变量将用于存储在密钥库中的凭据。
[Step 4] : 访问 ElasticSearch 服务
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
# IP地址改成自己的
http://172.29.32.233:9200/

[Step 5] : 安装 IK 分词器 ~
在这里下载与 elasticsearch 对应版本的 ik 分词器 : https://release.infinilabs.com/analysis-ik/stable/
比如我的是 7.14.0 就下载这个

下载之后上传到我们挂载的 plugins 文件夹下, 之后再重启 elasticsearch 即可

ik 文件夹的内容如下 :

重启 elasticsearch :
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker restart elasticsearch
测试是否安装成功 : (记得换成自己的ip地址)
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
curl -X GET "你的ip地址:9200/_analyze?pretty" -H 'Content-Type: application/json' -d'
{
"analyzer": "ik_smart",
"text": "中华人民共和国万岁"
}
'
出现如下图结果即为 ik 分词器生效啦~

2.4 Redis 安装
[Step 1] : 拉取 Redis 镜像, 推荐使用 7 的 Redis 版本
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker pull redis:7.0.12

[Step 2] : 创建 Redis 相关目录 ➡️ 启动 Redis 容器 ➡️ 拷贝文件 ➡️ 授权文件夹 ➡️ 删除容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
# 创建 Redis 相关目录
mkdir -p /data/redis/{conf,data,log}
touch /data/redis/log/redis.log
touch /data/redis/conf/redis.conf
# 启动 Redis 容器
docker run -p 6379:6379 --name redis -d redis:7.0.12
# 拷贝文件
docker cp redis:/data /data/redis
docker cp redis:/etc/redis.log /data/redis/log
docker cp redis:/etc/redis/redis.conf /data/redis/conf
# 授权文件夹
chmod -R 777 /data/redis/conf/redis.conf /data/redis/log/redis.log /data/redis/data
# 删除容器
docker rm -f redis
[Step 3] : 创建 Redis 容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker run --name redis \
-p 6379:6379 --restart=always \
-v /data/redis/data:/data \
-v /data/redis/log/redis.log:/etc/redis.log \
-v /data/redis/conf:/etc/redis/redis.conf \
-d redis:7.0.12 redis-server /etc/redis/redis.conf
[Step 4] : 查看 Redis 日志
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker logs -f redis

[Step 5] : 用Redis连接工具查看是否成功部署 Redis
填写 Redis 连接信息

连接成功 !

2.5 Minio 安装
[Step 1] : 拉取 Minio 镜像
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker pull minio/minio:RELEASE.2025-04-22T22-12-26Z

[Step 2] : 启动 Minio 容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker run --name minio --restart=always \
-p 9000:9000 -p 9090:9090 \
-e "MINIO_ROOT_USER=minio" \
-e "MINIO_ROOT_PASSWORD=minio123456" \
-v /data/minio/data:/data \
-v /data/minio/conf:/root/.minio \
-d minio/minio:RELEASE.2025-04-22T22-12-26Z server \
/data --console-address ":9090" -address ":9000"
[Step 3] : 访问 Minio 控制台
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
# 换成自己的IP地址
http://172.29.32.233:9090/login

[Step 4] : 创建 Bucket 容器


[Step 5] : 修改访问权限为 public

2.6Kafka 安装
Kafka对于zookeeper是强依赖,保存kafka相关的节点数据,
所以安装Kafka之前必须先安装zookeeper
创建一个网络用于两者互连
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker network create kafka-net
[Step 1] : 部署 Zookeeper -> 拉取 Zookeeper 镜像 ➡️ 启动 Zookeeper 容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker pull zookeeper:3.4.14
docker run -d --name zookeeper --network kafka-net zookeeper:3.4.14


[Step 2] : 部署 Kafka 服务 -> 拉取镜像 ➡️ 启动Kafka容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
# 拉取 Kafka 镜像
docker pull wurstmeister/kafka:2.12-2.3.1
# 启动Kafka容器 - 记得修改成自己的IP地址还有Kafka的端口
docker run -d --name kafka \
--network kafka-net \
--env KAFKA_ADVERTISED_HOST_NAME=192.168.100.233 \
--env KAFKA_ZOOKEEPER_CONNECT=192.168.100.233:2181 \
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.100.233:9092 \
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
--env KAFKA_HEAP_OPTS="-Xmx256M -Xms256M" \
-p 9092:9092 wurstmeister/kafka:2.12-2.3.1
[Step 3] : 查看 Kafka 启动日志
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker logs -f kafka
b
[Step 4] : 创建对应的主题和队列
进入 Kafka 容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker exec -it kafka bash
切换到 Kafka 的 bin 目录
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
cd /opt/kafka/bin
创建文件处理主题
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
./kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic file-processing
创建向量化主题
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
./kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic vectorizatio
具体操作如下图 :

3.启动项目
前置部署 : 本地部署 DeepSeek 参考 -> 🍒0. 本地部署 Deepseek-R1
(不想本地部署的话就直接去DeepSeekAPI开放平台充点钱拿个Key就行 DeepSeek Platform)
3.1 启动后端 - Windows 版
首先把代码拉取下来, 刷新 maven 确保依赖都正确引入, 修改项目的 JDK为17及以上版本
之后就是最简单的修改对应的配置信息啦~


派聪明, 启动 ~
出现这个说明就启动成功啦~ 你已经离成功只差 1% 了 !!!

可以通过一下命令来查看索引是否创建成功~
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
curl -X GET 'http://你的ip地址:9200/knowledge_base/_mapping?pretty' -u 'elastic:elastic'

配置好 DeepSeek 的 Key, 分清楚是本地还是调官方的API, 因为请求地址不一样
这是本地的配置 :

这是调官方API的配置 :

Windows 后端到此就结束啦~
3.2 启动后端 - Docker 版
上面的配置信息都填写正确之后, 将后端打成 jar 包, 然后上传到服务器中

编写 Dockerfile 文件, 可以直接拷贝我的
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
FROM eclipse-temurin:17-jre
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Shanghai
ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8
COPY SmartPAI-0.0.1-SNAPSHOT.jar /pai-smart.jar
ENTRYPOINT ["java","-jar","/pai-smart.jar"]
将 jar 包和 Docker 文件放在同一个目录下, 然后进入这个目录, 比如我的在 /data/pai-smart/
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
cd /data/pai-smart
将 jar 包打包成镜像然后再部署到 Docker 上即可
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker build -t pai-smart:v1.0 .

启动后端项目
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker run -d --name pai-smart -p 38848:38848 pai-smart:v1.0
查看启动日志, 检查是否启动成功
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker logs -f pai-smart

3.3 启动前端
没有拉取前端代码的话, 也可以直接访问前端测试页面 ~
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
http://localhost:8081/test.html

有前端代码的话, 将代码里的 fronted 文件夹放到对应的前端软件然后 pnpm i 再 pnpm dev run

之后就可以使用啦~

文章到这基本就结束啦, 非常感谢小伙伴可以耐心地看完~
最后还是非常感谢二哥能给我们带来这样一个项目, 期间付出的汗水自然不必多说哈哈~
如果对本文章有任何疑问都可以评论留言, 我看到会及时回复的~
或者觉得本文章还有哪些可以改进的地方都可以提, 互相探讨, 共同进步, 支持开源~
引用二哥的一句话, "一个人可以走的很快, 但是一群人才能走的更远"~ 共勉! 😄
在这祝各位学生学有所成, 祝各位已经工作的工作顺利哈哈哈~
Hi ~ 不知道大家对我是否还有印象哈哈,
其实二哥的上一个微服务项目 PmHub 我也写有部署教程 ~ 😄
语雀浏览效果更佳哦~ https://www.yuque.com/apple-pie/bt5z3b/rhqaf7mn9yn82gbf?singleDoc#
也可以关注我的语雀花园, 里面有我整理的 Java 技术专栏 ~ Yaeovo · 语雀

1.前置碎碎念, 可跳过直接看实操~
前两天看到了二哥上线了大家期待已久的 RAG 项目 派聪明 - pai-smart
正好在秋招前上线, 看来这段时间二哥的行程被安排的满满当当的呀, 哈哈~
学习一个项目最前置的步骤当然是将项目跑起来啦~
不然干瞪眼看着代码, 学习的效率估计也是上不来的哈哈~
浏览了一下现在已出的教程, 发现只有一个本地启动的教程, 还是 Mac 版的
正好今天是星期五, 晚上下班之后就没什么事情, 于是忙完自己的日常就着手写一篇~
顺便也是帮二哥把教程文档这块完善一下, 嘻嘻~
(非常有幸能在大二遇到二哥~ 帮我抹平了非常多的信息差, 受益匪浅~)
友情提示, 这篇文章的部署仅供学习参考, 切勿上生产环境~
所有的中间件我均采用的是 Docker 容器化部署, 代码可在本地启动
不过后面也有教如何将代码打包成镜像和中间件一同部署在 Docker 中
如果使用服务器或者虚拟机的话, 记得开放对应的端口或者关闭防火墙(服务器开放对应端口)
2.前置环境部署
2.1 JDK 安装
因为派聪明用的SpringBoot的版本是3.x 所以要用JDK17及以上的版本 : JDK 17 下载
下载完之后直接双击 .exe 文件即可安装, 如果想在 Windows 上进行 JDK 多版本切换
可以参考我之前写的一篇文章, 这里就不过多赘述了, 节约大家的时间~ 🥝JDK版本切换 - Windows
如果是后面要将本地的后端代码也一起部署在 Docker 上运行的话, linux 也是要安装 JDK17以上版本
这里也同样是为了压缩文章篇幅, 直接放一个我之前写好的教程吧~ 🐅22. Docker 部署 JDK11
JDK 11 和 JDK 17 是一个道理的, 只需要将包切换成 JDK17 即可~
2.2 MySQL 安装
[Step 1] : 拉取 MYSQL 镜像
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker pull mysql:8.0.33

[Step 2] : 创建 MYSQL 相关目录 ➡️ 启动 MYSQL 容器 ➡️ 拷贝文件 ➡️ 授权文件夹 ➡️ 删除容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
# 创建 MYSQL 相关目录
mkdir -p /data/mysql/{conf,log,data}
# 启动 MYSQL 容器
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=ovoAdmin123 -d mysql:8.0.33
# 拷贝文件
docker cp mysql:/var/log /data/mysql
docker cp mysql:/etc/my.cnf /data/mysql/conf
# 授权文件夹
chmod 777 /data/mysql/{log,data}
chmod 644 /data/mysql/conf/my.cnf
# 删除容器
docker rm -f mysql
对应的目录下会创建有相应的文件夹

[Step 3] : 创建 MYSQL 容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker run -p 3306:3306 --name mysql \
-v /data/mysql/log:/var/log/mysql \
-v /data/mysql/data:/var/lib/mysql \
-v /data/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-e TZ=Asia/Shanghai --restart=always \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.33
相关参数解释 :
1.
docker run: 创建并运行一个容器, -d是让容器在后台运行
2.
-- name mysql: 给容器起一个名字, 名字必须唯一
3.
-v /data/mysql/log:/var/log/mysql : 挂载配置文件
4.
-p 3306:3306: 设置端口映射
5.
-e KEY = VALUE: 设置环境变量 -e就是environment的意思
6.
TZ=Asia/Shanghai : 设置数据库时区为东八区
7.
--restart=always : 自启动 ( 服务器重启后会自启动 )
8.
MYSQL_ROOT_PASSWORD : 数据库密码
9.
mysql:指定运行的镜像的名字, 后面可以跟版本号, 如果不跟默认最新版
[Step 4] : 查看 MYSQL 日志
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker logs -f mysql
没有 Error 就是启动成功了

[Step 5] : 使用工具连接 MYSQL
填写连接信息

测试连接成功 !

到这里就将 MySQL 部署成功啦~
2.3 ElasticSearch 安装
这个的安装就有点小复杂啦~ 不过跟着我的步骤来就会简单很多!! (其实都是CV哈哈哈~)
我这里偷懒直接装的 7.14.0 版本, 最后测试也是没问题的~ 不过尽量还是保持和二哥的版本一致~
[Step 1] : 拉取 ElasticSearch 镜像
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker pull elasticsearch:7.14.0

[Step 2] : 创建网络➡️创建目录➡️启动容器➡️拷贝文件➡️授权文件➡️删除容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
# 创建网络
docker network create elastic
# 创建目录
mkdir -p /data/elasticsearch/{config,data,logs,plugins}
# 启动容器
docker run --name elasticsearch --restart=always \
-p 9200:9200 -p 9300:9300 \
--privileged --network elastic \
-e "discovery.type=single-node" \
-d elasticsearch:7.14.0
# 拷贝文件
docker cp -a elasticsearch:/usr/share/elasticsearch/config/ /data/elasticsearch
docker cp -a elasticsearch:/usr/share/elasticsearch/data/ /data/elasticsearch
docker cp -a elasticsearch:/usr/share/elasticsearch/logs/ /data/elasticsearch
docker cp -a elasticsearch:/usr/share/elasticsearch/plugins/ /data/elasticsearch
# 授权文件
chmod -R 777 /data/elasticsearch/{config,data,logs,plugins}
# 删除容器
docker rm -f elasticsearch
[Step 3] : 启动 ElasticSearch 容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker run --name elasticsearch --restart=always \
-p 9200:9200 -p 9300:9300 \
--privileged=true --network elastic \
-e ES_JAVA_OPTS="-Xms256m -Xmx512m" \
-e "discovery.type=single-node" \
-e KEYSTORE_USERNAME=elastic \
-e KEYSTORE_PASSWORD=elastic \
-e "ingest.geoip.downloader.enabled=false" \
-v /data/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-v /data/elasticsearch/data:/usr/share/elasticsearch/data \
-v /data/elasticsearch/logs:/usr/share/elasticsearch/logs \
-v /data/elasticsearch/config:/usr/share/elasticsearch/config \
-d elasticsearch:7.14.0
相关参数解释 :
1.
--privileged=true: 以特权模式运行容器,类似于主机上的 root 权限。
2.
--network elastic: 将容器加入名为 elastic 的 Docker 网络中,这可以方便容器之间的通信。
3.
-e ES_JAVA_OPTS="-Xms256m -Xmx512m": 用于配置 JVM 的最大最小堆内存。
4.
-e "discovery.type=single-node": 设置 Elasticsearch 为单节点模式
5.
-e KEYSTORE_USERNAME=elastic 和 -e KEYSTORE_PASSWORD=elastic: 设置 Elasticsearch 的认证用户名和密码为 elastic,这些变量将用于存储在密钥库中的凭据。
[Step 4] : 访问 ElasticSearch 服务
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
# IP地址改成自己的
http://172.29.32.233:9200/

[Step 5] : 安装 IK 分词器 ~
在这里下载与 elasticsearch 对应版本的 ik 分词器 : https://release.infinilabs.com/analysis-ik/stable/
比如我的是 7.14.0 就下载这个

下载之后上传到我们挂载的 plugins 文件夹下, 之后再重启 elasticsearch 即可

ik 文件夹的内容如下 :

重启 elasticsearch :
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker restart elasticsearch
测试是否安装成功 : (记得换成自己的ip地址)
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
curl -X GET "你的ip地址:9200/_analyze?pretty" -H 'Content-Type: application/json' -d'
{
"analyzer": "ik_smart",
"text": "中华人民共和国万岁"
}
'
出现如下图结果即为 ik 分词器生效啦~

2.4 Redis 安装
[Step 1] : 拉取 Redis 镜像, 推荐使用 7 的 Redis 版本
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker pull redis:7.0.12

[Step 2] : 创建 Redis 相关目录 ➡️ 启动 Redis 容器 ➡️ 拷贝文件 ➡️ 授权文件夹 ➡️ 删除容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
# 创建 Redis 相关目录
mkdir -p /data/redis/{conf,data,log}
touch /data/redis/log/redis.log
touch /data/redis/conf/redis.conf
# 启动 Redis 容器
docker run -p 6379:6379 --name redis -d redis:7.0.12
# 拷贝文件
docker cp redis:/data /data/redis
docker cp redis:/etc/redis.log /data/redis/log
docker cp redis:/etc/redis/redis.conf /data/redis/conf
# 授权文件夹
chmod -R 777 /data/redis/conf/redis.conf /data/redis/log/redis.log /data/redis/data
# 删除容器
docker rm -f redis
[Step 3] : 创建 Redis 容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker run --name redis \
-p 6379:6379 --restart=always \
-v /data/redis/data:/data \
-v /data/redis/log/redis.log:/etc/redis.log \
-v /data/redis/conf:/etc/redis/redis.conf \
-d redis:7.0.12 redis-server /etc/redis/redis.conf
[Step 4] : 查看 Redis 日志
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker logs -f redis

[Step 5] : 用Redis连接工具查看是否成功部署 Redis
填写 Redis 连接信息

连接成功 !

2.5 Minio 安装
[Step 1] : 拉取 Minio 镜像
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker pull minio/minio:RELEASE.2025-04-22T22-12-26Z

[Step 2] : 启动 Minio 容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker run --name minio --restart=always \
-p 9000:9000 -p 9090:9090 \
-e "MINIO_ROOT_USER=minio" \
-e "MINIO_ROOT_PASSWORD=minio123456" \
-v /data/minio/data:/data \
-v /data/minio/conf:/root/.minio \
-d minio/minio:RELEASE.2025-04-22T22-12-26Z server \
/data --console-address ":9090" -address ":9000"
[Step 3] : 访问 Minio 控制台
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
# 换成自己的IP地址
http://172.29.32.233:9090/login

[Step 4] : 创建 Bucket 容器


[Step 5] : 修改访问权限为 public

2.6Kafka 安装
Kafka对于zookeeper是强依赖,保存kafka相关的节点数据,
所以安装Kafka之前必须先安装zookeeper
创建一个网络用于两者互连
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker network create kafka-net
[Step 1] : 部署 Zookeeper -> 拉取 Zookeeper 镜像 ➡️ 启动 Zookeeper 容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker pull zookeeper:3.4.14
docker run -d --name zookeeper --network kafka-net zookeeper:3.4.14


[Step 2] : 部署 Kafka 服务 -> 拉取镜像 ➡️ 启动Kafka容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
# 拉取 Kafka 镜像
docker pull wurstmeister/kafka:2.12-2.3.1
# 启动Kafka容器 - 记得修改成自己的IP地址还有Kafka的端口
docker run -d --name kafka \
--network kafka-net \
--env KAFKA_ADVERTISED_HOST_NAME=192.168.100.233 \
--env KAFKA_ZOOKEEPER_CONNECT=192.168.100.233:2181 \
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.100.233:9092 \
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
--env KAFKA_HEAP_OPTS="-Xmx256M -Xms256M" \
-p 9092:9092 wurstmeister/kafka:2.12-2.3.1
[Step 3] : 查看 Kafka 启动日志
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker logs -f kafka
b
[Step 4] : 创建对应的主题和队列
进入 Kafka 容器
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker exec -it kafka bash
切换到 Kafka 的 bin 目录
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
cd /opt/kafka/bin
创建文件处理主题
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
./kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic file-processing
创建向量化主题
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
./kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic vectorizatio
具体操作如下图 :

3.启动项目
前置部署 : 本地部署 DeepSeek 参考 -> 🍒0. 本地部署 Deepseek-R1
(不想本地部署的话就直接去DeepSeekAPI开放平台充点钱拿个Key就行 DeepSeek Platform)
3.1 启动后端 - Windows 版
首先把代码拉取下来, 刷新 maven 确保依赖都正确引入, 修改项目的 JDK为17及以上版本
之后就是最简单的修改对应的配置信息啦~


派聪明, 启动 ~
出现这个说明就启动成功啦~ 你已经离成功只差 1% 了 !!!

可以通过一下命令来查看索引是否创建成功~
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
curl -X GET 'http://你的ip地址:9200/knowledge_base/_mapping?pretty' -u 'elastic:elastic'

配置好 DeepSeek 的 Key, 分清楚是本地还是调官方的API, 因为请求地址不一样
这是本地的配置 :

这是调官方API的配置 :

Windows 后端到此就结束啦~
3.2 启动后端 - Docker 版
上面的配置信息都填写正确之后, 将后端打成 jar 包, 然后上传到服务器中

编写 Dockerfile 文件, 可以直接拷贝我的
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
FROM eclipse-temurin:17-jre
ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Asia/Shanghai
ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8
COPY SmartPAI-0.0.1-SNAPSHOT.jar /pai-smart.jar
ENTRYPOINT ["java","-jar","/pai-smart.jar"]
将 jar 包和 Docker 文件放在同一个目录下, 然后进入这个目录, 比如我的在 /data/pai-smart/
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
cd /data/pai-smart
将 jar 包打包成镜像然后再部署到 Docker 上即可
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker build -t pai-smart:v1.0 .

启动后端项目
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker run -d --name pai-smart -p 38848:38848 pai-smart:v1.0
查看启动日志, 检查是否启动成功
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
docker logs -f pai-smart

3.3 启动前端
没有拉取前端代码的话, 也可以直接访问前端测试页面 ~
textjavascripttypescriptcsshtmlbashjsonmarkdownpythonjavaccpprubygorustphpsqlyaml Copy
http://localhost:8081/test.html

有前端代码的话, 将代码里的 fronted 文件夹放到对应的前端软件然后 pnpm i 再 pnpm dev run

之后就可以使用啦~

文章到这基本就结束啦, 非常感谢小伙伴可以耐心地看完~
最后还是非常感谢二哥能给我们带来这样一个项目, 期间付出的汗水自然不必多说哈哈~
如果对本文章有任何疑问都可以评论留言, 我看到会及时回复的~
或者觉得本文章还有哪些可以改进的地方都可以提, 互相探讨, 共同进步, 支持开源~
引用二哥的一句话, "一个人可以走的很快, 但是一群人才能走的更远"~ 共勉! 😄
在这祝各位学生学有所成, 祝各位已经工作的工作顺利哈哈哈~
