Spring AI 实战指南(五):基于 Spring AI + DeepSeek + PGVector + Redis 从 0 实现企业级 AI Agent 项目(完整架构实战版)
# 前言
标签:Spring AI、DeepSeek、Agent、PGVector、Redis、RAG、Java AI开发、企业级项目
项目名称:EduAgentX-AI 智能学习助手
技术栈:Spring Boot 3.5 + Spring AI 1.x + DeepSeek + PostgreSQL + PGVector + Redis + Vue3
如果你准备找工作或者准备做一个真正有亮点的项目,那么仅仅实现:
chatClient.prompt("你好")
这样的 AI 聊天功能是远远不够的。
因为现在面试官真正感兴趣的是:
你是否真正理解 AI 应用架构?
例如:
- 如何实现知识库?
- 如何实现向量检索?
- 如何实现多轮对话?
- 如何实现 Agent?
- 如何实现 Tool Calling?
- 如何降低 Token 成本?
- 如何保证回答准确率?
这些问题才是 AI 项目的核心。
本篇文章将带你完整设计一个企业级 AI 项目。
一、项目目标
我们要实现:
EduAgentX AI学习助手
核心能力:
AI问答
学生提问
↓
AI回答
知识库检索
课程资料
↓
向量搜索
↓
精准回答
学习规划
分析成绩
↓
推荐课程
↓
生成学习计划
Agent执行
查询成绩
查询课程
生成报告
自动分析
二、整体架构设计
企业级架构如下:
Vue3
│
Gateway
│
┌────────────┴────────────┐
│ │
用户服务 AI服务
│
Spring AI
│
┌──────────────┬──────────────┐
│ │ │
Redis PGVector DeepSeek
│
MySQL
职责说明:
| 组件 | 作用 |
|---|---|
| MySQL | 业务数据 |
| Redis | 缓存、记忆 |
| PGVector | 向量存储 |
| DeepSeek | 大模型 |
| Spring AI | AI编排 |
| Agent | 自动执行任务 |
三、项目目录设计
推荐目录:
eduagentx-ai
├── controller
│
├── service
│
├── ai
│ ├── rag
│ ├── agent
│ ├── tool
│ ├── memory
│ └── prompt
│
├── vector
│
├── redis
│
├── config
│
└── entity
很多新人喜欢:
controller
service
mapper
全部堆一起。
AI项目必须模块化。
四、Maven依赖
核心依赖:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>
spring-ai-starter-model-openai
</artifactId>
</dependency>
PGVector:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>
spring-ai-pgvector-store
</artifactId>
</dependency>
Redis:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>
spring-boot-starter-data-redis
</artifactId>
</dependency>
PostgreSQL:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
五、接入DeepSeek
目前国内企业最常用:
DeepSeek-V3
DeepSeek-R1
配置:
spring:
ai:
openai:
base-url:
https://api.deepseek.com
api-key:
sk-xxxxxxxx
注意:
DeepSeek兼容:
OpenAI API
因此:
ChatClient
代码完全不需要修改。
六、ChatClient封装
企业开发:
不要每个地方直接调用。
封装:
@Component
public class AiChatService {
@Autowired
private ChatClient chatClient;
public String chat(String msg){
return chatClient
.prompt(msg)
.call()
.content();
}
}
Controller:
@GetMapping("/chat")
public String chat(String msg){
return aiChatService.chat(msg);
}
统一维护。
七、知识库设计
很多人以为:
上传PDF
↓
直接问
就叫知识库。
实际上:
完整流程:
文档
↓
切片
↓
Embedding
↓
向量存储
↓
检索
↓
Prompt增强
↓
大模型回答
八、文档切片
例如:
Java面试宝典.pdf
100页
不能直接向量化。
需要:
Chunk
Spring AI:
TokenTextSplitter splitter =
new TokenTextSplitter();
执行:
List<Document> docs =
splitter.apply(
List.of(document)
);
结果:
Chunk1
Chunk2
Chunk3
推荐大小:
300~500 Token
九、Embedding实现
注入:
@Autowired
private EmbeddingModel embeddingModel;
生成向量:
EmbeddingResponse response =
embeddingModel.call(
new EmbeddingRequest(
List.of(content),
EmbeddingOptionsBuilder
.builder()
.build()
));
返回:
[0.12,0.35,0.88...]
十、PGVector接入
建表:
CREATE EXTENSION vector;
向量表:
CREATE TABLE knowledge_vector(
id BIGSERIAL PRIMARY KEY,
content TEXT,
embedding vector(1536)
);
Spring AI:
vectorStore.add(
List.of(
new Document(content)
));
自动存储。
十一、RAG检索实现
用户:
什么是Redis缓存穿透?
执行:
List<Document> docs =
vectorStore
.similaritySearch(question);
得到:
Redis缓存穿透
Redis布隆过滤器
相关内容。
拼接Prompt:
String prompt = """
请根据以下知识回答:
%s
问题:
%s
"""
.formatted(
docs,
question
);
发送:
chatClient
.prompt(prompt)
.call()
.content();
十二、多轮对话记忆
用户:
我叫张三
下一句:
我叫什么?
需要:
Memory
能力。
Redis实现
Key:
chat:1001
Value:
[
{
"role":"user",
"content":"我叫张三"
}
]
Spring AI:
MessageChatMemoryAdvisor
配置:
chatClient
.prompt(msg)
.advisors(
memoryAdvisor
)
.call();
十三、Redis缓存优化
热门问题:
什么是Redis
什么是IOC
什么是线程池
每天被问:
10000+
次。
解决:
缓存答案
流程:
问题
↓
MD5
↓
Redis
↓
存在返回
↓
不存在调用模型
代码:
String cache =
redisTemplate
.opsForValue()
.get(key);
成本下降:
70%
以上。
十四、Tool开发规范
企业项目:
不要写:
public String test(){}
推荐:
@Service
public class ScoreTool {
}
一个工具:
一个职责
例如:
成绩工具
课程工具
考试工具
学习计划工具
分离。
十五、成绩分析Tool
例如:
@Service
public class ScoreTool {
public String
analyse(Long userId){
return """
Java:85
MySQL:78
Redis:60
""";
}
}
注册:
chatClient
.prompt(question)
.tools(
scoreTool
)
.call();
模型自动调用。
十六、课程推荐Tool
@Service
public class CourseTool {
public String recommend(
String weakPoint){
return "Redis高级课程";
}
}
Agent:
分析成绩
↓
发现Redis弱
↓
调用课程工具
↓
推荐课程
十七、学习计划Tool
@Service
public class PlanTool {
public String create(){
return """
第1周:
Redis基础
第2周:
Redis实战
""";
}
}
最终形成:
完整学习规划
十八、Agent设计
真正Agent:
用户问题
↓
分析意图
↓
调用工具
↓
获取结果
↓
再次推理
↓
返回答案
例如:
用户:
根据我最近成绩
生成学习计划
Agent:
调用ScoreTool
↓
分析弱项
↓
调用CourseTool
↓
调用PlanTool
↓
生成结果
十九、生产环境优化
企业项目必须考虑。
Token控制
限制:
单次提问
≤3000字
Prompt模板化
统一管理:
prompt/
teacher.txt
assistant.txt
agent.txt
敏感词过滤
避免:
违法内容
恶意Prompt
限流
推荐:
Redis
+
令牌桶
二十、面试亮点包装
如果这是你的项目。
简历可以写:
EduAgentX AI学习助手
技术栈:
Spring Boot
Spring AI
DeepSeek
PGVector
Redis
MySQL
Vue3
项目亮点:
1. 基于Spring AI实现企业级AI助手
2. 使用PGVector构建RAG知识库
3. Redis实现聊天记忆与热点缓存
4. DeepSeek实现智能问答
5. 基于Tool Calling实现Agent能力
6. 实现学习规划与课程推荐
7. 支持PDF知识库导入
8. 支持多轮对话
二十一、真正的企业级AI架构(2026)
很多教程停留在:
Spring AI
↓
ChatGPT
而大厂实际架构已经变成:
Spring AI
↓
Agent
↓
Workflow
↓
RAG
↓
Redis
↓
PGVector
↓
MCP
↓
DeepSeek
总结
到这里,你已经掌握了 Spring AI 企业级开发的完整主线:
第一阶段
ChatClient调用模型
↓
第二阶段
Prompt工程
↓
第三阶段
RAG知识库
↓
第四阶段
Redis记忆
↓
第五阶段
Tool Calling
↓
第六阶段
Agent开发
↓
第七阶段
MCP生态接入
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)