Spring AI 实战指南(二):RAG、向量数据库、Tool Calling、Agent 企业级开发实战
前言
作者:XXX
标签:Spring AI、RAG、Agent、MCP、向量数据库、Milvus、PGVector、DeepSeek、OpenAI、AI知识库
阅读时间:30分钟
难度:⭐⭐⭐⭐⭐
上一篇我们讲了:
- Spring AI架构
- ChatClient
- Prompt工程
- PromptTemplate
- 结构化输出
- DeepSeek接入
但实际上在企业中,仅仅会调用大模型是远远不够的。
因为你会发现一个问题:
用户问:
我们公司的请假制度是什么?
AI回答:
抱歉,我不知道。
用户问:
EduAgentX系统数据库设计是什么?
AI回答:
我无法获取你的项目数据。
为什么?
因为大模型虽然聪明,但它并不知道你的私有数据。
例如:
- 公司知识库
- 项目文档
- ERP数据
- CRM数据
- OA数据
- 数据库信息
这些内容根本不在模型训练数据中。
于是:
RAG(Retrieval Augmented Generation)
诞生了。
一、什么是RAG?
RAG全称:
Retrieval Augmented Generation
翻译:
检索增强生成
传统大模型:
用户提问
↓
LLM
↓
回答
RAG模式:
用户提问
↓
知识库检索
↓
相关内容
↓
LLM
↓
回答
例如:
用户问:
EduAgentX有哪些功能?
系统流程:
问题
↓
向量搜索
↓
找到项目文档
↓
拼接Prompt
↓
发送给DeepSeek
↓
生成答案
此时AI回答的就不是:
互联网知识
而是:
你的企业知识
二、为什么RAG成为企业AI标配?
很多人以为:
直接微调模型不就行了?
实际上大部分企业不会这样做。
原因一:成本太高
微调一个模型:
GPU
训练
数据清洗
模型维护
成本巨大。
原因二:知识更新频繁
例如:
员工手册
产品文档
接口文档
每天都在变化。
如果每次更新:
重新训练模型
根本不现实。
所以:
知识放数据库
模型负责理解
才是企业主流方案。
三、RAG核心流程解析
一个标准RAG系统:
文档
↓
切片
↓
Embedding
↓
向量数据库
↓
用户提问
↓
Embedding
↓
相似度搜索
↓
TopK内容
↓
Prompt组装
↓
大模型回答
这张图面试必考。
很多公司:
AI工程师
Java AI开发
Agent工程师
都会问。
四、什么是Embedding?
很多新人最容易卡在这里。
假设有两句话:
Java是什么?
和:
Java语言介绍
对于人类:
意思相近
对于计算机:
完全不同
Embedding的作用:
把文字变成向量
例如:
Java是什么
↓
[0.12,0.55,0.21,0.88...]
另一句话:
Java语言介绍
↓
[0.11,0.58,0.20,0.86...]
因为向量接近:
余弦相似度高
所以系统认为:
内容相关
五、Spring AI中的Embedding
Spring AI已经封装好。
配置:
spring:
ai:
openai:
api-key: sk-xxx
注入:
@Autowired
private EmbeddingModel embeddingModel;
生成向量:
EmbeddingResponse response =
embeddingModel.call(
new EmbeddingRequest(
List.of("什么是Redis"),
EmbeddingOptionsBuilder.builder().build()
));
返回:
[0.12,0.34,0.56...]
六、向量数据库详解
生成向量后存哪里?
普通数据库:
MySQL
不适合。
需要:
Vector Database
向量数据库。
主流方案:
| 数据库 | 推荐指数 |
|---|---|
| Milvus | ⭐⭐⭐⭐⭐ |
| PGVector | ⭐⭐⭐⭐⭐ |
| Chroma | ⭐⭐⭐⭐ |
| Weaviate | ⭐⭐⭐⭐ |
| Elasticsearch | ⭐⭐⭐⭐ |
目前企业最常用:
Milvus
PGVector
七、为什么推荐PGVector?
对于Java开发来说:
PGVector学习成本最低。
因为:
PostgreSQL
+
Vector
=
PGVector
原来:
SELECT * FROM document;
现在:
SELECT *
FROM document
ORDER BY embedding <-> '[0.2,0.3,0.4]'
LIMIT 5;
直接完成:
向量相似度搜索
八、Spring AI接入PGVector
依赖:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-pgvector-store</artifactId>
</dependency>
配置:
spring:
datasource:
url: jdbc:postgresql://localhost:5432/ai
注入:
@Autowired
private VectorStore vectorStore;
保存文档:
vectorStore.add(
List.of(
new Document("Redis是缓存数据库")
)
);
查询:
vectorStore.similaritySearch(
"Redis是什么"
);
自动返回:
最相关文档
九、Spring AI RAG实战
完整流程:
存入知识:
vectorStore.add(
List.of(
new Document(
"EduAgentX支持AI问答"
)
)
);
用户提问:
EduAgentX有什么功能?
执行:
List<Document> docs =
vectorStore.similaritySearch(
question
);
得到:
相关知识
组装Prompt:
String prompt =
"""
根据以下知识回答:
%s
问题:
%s
"""
.formatted(
docs,
question
);
调用模型:
chatClient.prompt(prompt)
.call()
.content();
这就是最基础RAG。
十、Tool Calling详解
2025以后最火技术:
Tool Calling
传统AI:
只能聊天。
用户问:
北京天气如何?
AI不知道。
因为:
没有实时数据
于是:
AI调用工具。
流程:
用户提问
↓
LLM判断
↓
调用天气接口
↓
获得结果
↓
返回答案
Spring AI Tool
定义工具:
@Service
public class WeatherTool {
public String getWeather(
String city
){
return "北京 25℃";
}
}
注册:
chatClient.prompt(question)
.tools(new WeatherTool())
.call();
用户:
北京天气
模型自动:
调用工具
获取天气
组织答案
十一、Function Calling
OpenAI提出的概念。
Spring AI已经支持。
定义:
record WeatherRequest(
String city
){}
定义返回:
record WeatherResponse(
String weather
){}
模型自动生成:
{
"city":"北京"
}
后端执行:
getWeather("北京")
再返回给模型。
十二、什么是Agent?
目前AI领域最火:
Agent
很多人理解错了。
Agent不是模型。
Agent:
大模型
+
记忆
+
工具
+
规划能力
传统模式:
问
答
结束
Agent:
问
↓
分析任务
↓
调用工具
↓
执行任务
↓
总结结果
例如:
用户:
帮我分析最近销售情况
Agent:
查询数据库
↓
统计订单
↓
生成图表
↓
总结结果
↓
输出报告
十三、Spring AI Agent开发
Spring AI 1.x开始:
重点支持Agent能力。
典型架构:
ChatClient
↓
Advisor
↓
Memory
↓
Tool
↓
LLM
↓
Response
Advisor类似:
拦截器
可以实现:
用户上下文
权限控制
Prompt增强
日志记录
十四、企业级AI系统架构
生产环境推荐:
Vue3
↓
Gateway
↓
Spring Boot
↓
Spring AI
↓
Redis
↓
PGVector
↓
DeepSeek/OpenAI
↓
MySQL
职责:
MySQL:
业务数据
Redis:
会话缓存
Token缓存
Prompt缓存
PGVector:
知识库
向量检索
Spring AI:
统一AI编排
十五、EduAgentX项目升级方案
结合你之前做的教育平台项目。
第一阶段:
AI聊天助手
第二阶段:
课程知识库
学生提问:
什么是SpringMVC?
系统从课程资料检索。
第三阶段:
AI学习规划
根据成绩生成:
学习路线
第四阶段:
Agent学习导师
自动:
分析成绩
↓
发现弱项
↓
推荐课程
↓
生成学习计划
十六、面试高频题(AI方向)
什么是RAG?
回答:
通过向量检索获取外部知识,
再与用户问题一起发送给LLM,
从而提升回答准确率。
为什么不用微调?
回答:
成本高
更新慢
维护复杂
Embedding作用是什么?
回答:
把文本转换为向量,
便于语义相似度检索。
向量数据库有哪些?
回答:
Milvus
PGVector
Chroma
Weaviate
Elasticsearch
Agent和RAG区别?
回答:
RAG解决知识问题
Agent解决执行问题
总结
如果说 Spring Boot 是过去十年的 Java 开发标准,那么未来五年的 Java AI 开发标准,很可能就是:
Spring AI
真正企业落地的技术路线通常不是:
Spring AI + ChatGPT
而是:
Spring AI
+
RAG
+
PGVector
+
Redis
+
Tool Calling
+
Agent
+
DeepSeek
掌握这套技术栈后,你已经具备开发企业级:
- AI知识库
- AI客服
- AI教育平台
- AI办公助手
- AI数据分析平台
- AI Agent系统
的核心能力。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)