Spring AI 实战指南(三):从0到1打造企业级 AI 知识库项目(EduAgentX实战版)
前言
标签:Spring AI、RAG、PGVector、Redis、DeepSeek、知识库、AI教育平台、Java项目实战
适用人群:Java开发工程师、AI应用开发者、应届生毕设、企业项目开发
项目名称:EduAgentX 智能教育知识库系统
前两篇文章我们已经掌握了:
- Spring AI基础开发
- ChatClient使用
- Prompt工程
- Embedding向量化
- PGVector向量数据库
- RAG检索增强生成
- Tool Calling
- Agent开发思想
但很多开发者学完之后仍然会有一个问题:
我知道这些概念,但不知道如何真正落地一个项目。
所以本篇文章直接以一个完整项目为例,带你从0到1搭建:
EduAgentX AI知识库系统
实现效果:
学生提问
↓
AI检索课程资料
↓
结合知识库回答
↓
返回准确答案
而不是普通AI的:
我不知道
一、项目背景
假设我们开发一个在线教育平台。
目前已有:
用户系统
课程系统
考试系统
学习记录系统
学生经常提问:
什么是SpringMVC?
Redis缓存穿透是什么?
Java线程池有哪些参数?
我这次考试为什么成绩下降?
传统方式:
老师回答
问题:
成本高
效率低
无法24小时服务
于是增加:
AI学习助手
二、项目整体架构设计
整体架构如下:
Vue3
│
Spring Gateway
│
┌──────────┴──────────┐
│ │
用户服务 AI知识库服务
│
Spring AI
│
┌─────────────┬─────────────┐
│ │ │
Redis PGVector DeepSeek
│
MySQL
职责划分:
MySQL
存储:
用户
课程
考试
成绩
Redis
缓存:
用户信息
课程详情
热点问题
聊天记录
PGVector
存储:
知识库向量
DeepSeek
负责:
理解问题
生成答案
Spring AI
负责:
统一调用模型
向量检索
Prompt组装
三、数据库设计
用户表
CREATE TABLE sys_user(
id BIGINT PRIMARY KEY,
username VARCHAR(50),
password VARCHAR(100),
create_time DATETIME
);
课程表
CREATE TABLE course(
id BIGINT PRIMARY KEY,
course_name VARCHAR(100),
teacher_name VARCHAR(50),
description TEXT
);
AI聊天记录表
CREATE TABLE ai_chat_record(
id BIGINT PRIMARY KEY,
user_id BIGINT,
question TEXT,
answer TEXT,
create_time DATETIME
);
知识库文档表
CREATE TABLE knowledge_document(
id BIGINT PRIMARY KEY,
title VARCHAR(255),
content LONGTEXT,
status TINYINT,
create_time DATETIME
);
四、知识库文档上传设计
企业项目中知识来源:
PDF
Word
Markdown
Excel
TXT
网页内容
例如上传:
Java面试宝典.pdf
后台接口:
@PostMapping("/upload")
public Result upload(
MultipartFile file){
return knowledgeService.upload(file);
}
处理流程:
上传文件
↓
解析内容
↓
切片
↓
向量化
↓
存入PGVector
五、文档切片(Chunk)
很多新人直接把:
100页PDF
发送给大模型。
这是错误的。
原因:
Token限制。
正确方式:
切片
例如:
Java线程池
核心线程数
最大线程数
阻塞队列
切成:
Chunk1
Chunk2
Chunk3
每块:
300~500字
最佳。
Spring AI支持:
TokenTextSplitter
代码:
TokenTextSplitter splitter =
new TokenTextSplitter();
List<Document> docs =
splitter.apply(
List.of(document)
);
结果:
一个文档
↓
多个Chunk
六、Embedding向量化
切片后:
文字
模型无法检索。
需要:
向量化
注入:
@Autowired
private EmbeddingModel embeddingModel;
执行:
EmbeddingResponse response =
embeddingModel.call(
new EmbeddingRequest(
List.of(content),
EmbeddingOptionsBuilder
.builder()
.build()
)
);
结果:
Java线程池
↓
[0.11,0.35,0.77...]
七、接入PGVector
Maven依赖
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>
spring-ai-pgvector-store
</artifactId>
</dependency>
配置
spring:
datasource:
url: jdbc:postgresql://localhost:5432/eduagentx
存储向量
vectorStore.add(
List.of(
new Document(content)
)
);
数据库:
内容
+
向量
同时保存。
八、用户提问流程
学生输入:
什么是Redis缓存穿透?
系统执行:
问题
↓
Embedding
↓
向量搜索
↓
获取相关文档
↓
构造Prompt
↓
调用DeepSeek
↓
返回答案
九、核心RAG代码实现
查询知识:
List<Document> docs =
vectorStore.similaritySearch(
question
);
获取:
Redis缓存穿透
Redis布隆过滤器
Redis缓存击穿
相关内容。
构造Prompt:
String prompt = """
你是一名Java高级讲师。
请根据以下知识回答:
%s
用户问题:
%s
"""
.formatted(
docs.toString(),
question
);
调用模型:
String answer =
chatClient
.prompt(prompt)
.call()
.content();
返回:
缓存穿透指...
十、聊天记忆实现
普通聊天:
问一次
忘一次
用户:
我叫张三
下一句:
我叫什么?
AI不知道。
解决:
Chat Memory
Redis存储:
user:1001:chat
格式:
[
{
"role":"user",
"content":"我叫张三"
},
{
"role":"assistant",
"content":"好的"
}
]
Spring AI支持:
MessageChatMemoryAdvisor
配置:
Advisor advisor =
new MessageChatMemoryAdvisor(
chatMemory
);
效果:
连续对话
实现。
十一、热点问题缓存优化
例如:
学生频繁提问:
什么是SpringMVC?
什么是Redis?
每次都调用模型。
成本极高。
方案:
Redis缓存。
Key:
ai:question:hash
流程:
问题
↓
Redis查询
↓
存在
↓
直接返回
↓
不存在
↓
调用AI
↓
写入Redis
Java实现:
String cache =
redisTemplate.opsForValue()
.get(key);
if(cache != null){
return cache;
}
成本直接下降:
70%以上
十二、Prompt工程优化
很多项目效果差:
不是模型问题。
而是Prompt垃圾。
错误Prompt:
解释Redis
优化后:
你是一位拥有10年经验的Java架构师。
请从以下几个方面解释Redis:
1. 定义
2. 核心数据结构
3. 使用场景
4. 面试重点
要求:
通俗易懂
包含代码示例
回答质量提升明显。
十三、权限控制设计
企业知识库必须做权限。
例如:
学生:
只能访问课程资料
教师:
访问全部资料
管理员:
访问系统文档
实现:
if(role.equals("student")){
queryCourseDoc();
}
避免:
数据泄露
十四、AI学习助手升级
在EduAgentX中。
基础版:
问
↓
答
升级版:
分析成绩
↓
发现薄弱知识点
↓
推荐课程
↓
生成学习计划
例如:
学生:
Java成绩65分
AI:
集合框架掌握较差
建议学习:
ArrayList
HashMap
ConcurrentHashMap
十五、企业部署方案
开发环境:
Docker
生产环境:
Nginx
↓
Spring Boot
↓
Redis集群
↓
PostgreSQL
↓
PGVector
↓
DeepSeek
推荐配置:
4核8G
Redis 4G
PostgreSQL 8G
即可支撑:
5000+
在线用户
十六、项目亮点(简历可写)
如果你准备找工作。
项目描述可以写:
EduAgentX智能教育平台
技术栈:
Spring Boot
Spring AI
DeepSeek
PGVector
Redis
MySQL
Vue3
项目亮点:
1. 基于Spring AI实现RAG知识库
2. 使用PGVector完成向量检索
3. Redis缓存热点问题
4. 实现多轮对话记忆
5. 支持PDF知识库导入
6. 支持课程资料智能问答
7. AI生成学习计划
8. Agent辅助学习分析
总结
当下企业真正需要的已经不是:
调用一下ChatGPT接口
而是:
Spring AI
+
RAG
+
向量数据库
+
Redis
+
Agent
构建能够解决实际业务问题的 AI 系统。
如果你把这套 EduAgentX AI知识库项目 完整做出来,无论是校招还是社招,都已经具备了一个比较有竞争力的 AI 应用项目。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)