上篇给大家分享了Spring AI 2.0 基础极速落地,实现了普通问答、流式输出、结构化返回等基础功能。
很多小伙伴私信:基础功能够用,但企业真实场景根本不够!
真实业务中,我们需要解决3大核心难题:
❌ AI 没有记忆,每次对话都是全新开始
❌ 无法读取私有业务文档,只能依赖大模型训练数据,答案滞后、不准
❌ 不会主动调用工具、查询数据,只能被动问答,无法落地复杂业务
今天直接安排Spring AI 2.0 高阶实战续篇!
手把手带你搞定会话记忆、RAG私有知识库、AI工具调用、多模型动态切换四大企业级核心能力,看完直接无缝落地生产!
先划重点:Spring AI 2.0 高阶核心升级
相较于1.x版本,2.0真正的杀招不是简单问答,而是标准化企业级AI能力:
•✅ Advisors 增强链路:一行配置搞定会话记忆、权限拦截、日志监控
•✅ 原生RAG架构:内置检索增强,无需自研向量适配,快速搭建私有知识库
•✅ 全新@Tool注解:极简实现AI工具调用,自主执行业务逻辑
•✅ MCP统一协议:多模型无缝切换,适配国内外所有主流大模型
高阶实战一:AI 上下文记忆对话(带历史会话)
默认的AI问答是无状态的,上下文完全不互通。Spring AI 2.0 依托 MessageChatMemoryAdvisor,零代码实现会话记忆,完美适配聊天机器人场景。
1、配置记忆会话Bean
javaimport org.springframework.ai.chat.client.ChatClient;import org.springframework.ai.chat.memory.InMemoryChatMemory;import org.springframework.ai.chat.memory.ChatMemory;import org.springframework.ai.chat.advisors.MessageChatMemoryAdvisor;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class AiMemoryConfig {// 内存级会话记忆(测试/轻量业务直接用)@Beanpublic ChatMemory chatMemory() {return new InMemoryChatMemory();}// 带记忆能力的ChatClient@Beanpublic ChatClient memoryChatClient(ChatClient.Builder builder, ChatMemory chatMemory) {return builder.defaultAdvisors(MessageChatMemoryAdvisor.builder(chatMemory).build()).build();}} |
2、记忆对话接口实战
javaimport org.springframework.ai.chat.client.ChatClient;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;@RestControllerpublic class AiMemoryController {private final ChatClient memoryChatClient;public AiMemoryController(ChatClient memoryChatClient) {this.memoryChatClient = memoryChatClient;}// 带上下文记忆的AI对话@GetMapping("/ai/memory/chat")public String memoryChat(@RequestParam String message) {return memoryChatClient.prompt(message).call().content();}} |
效果:连续对话AI可以精准记住上文内容,无需每次重复描述需求,完全对标商用AI聊天机器人!
生产提示:线上业务建议替换为Redis持久化记忆,避免重启丢失会话。
高阶实战二:RAG私有知识库(企业核心能力)
这是企业落地AI的刚需功能!让AI读取我们的私有文档、业务手册、接口文档、产品手册,实现私有数据智能问答。
Spring AI 2.0 内置标准化RAG链路,依托 RetrieveAdvisor,无需自研向量检索,开箱即用。
1、引入向量数据库依赖(以PGVector为例)
xml<!-- PostgreSQL向量数据库依赖 --><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-vector-store-pgvector</artifactId><version>2.0.0</version></dependency> |
2、RAG核心配置
javaimport org.springframework.ai.embedding.EmbeddingModel;import org.springframework.ai.vectorstore.PgVectorStore;import org.springframework.ai.vectorstore.VectorStore;import org.springframework.ai.chat.advisors.RetrieveAdvisor;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.jdbc.core.JdbcTemplate;@Configurationpublic class AiRagConfig {// 初始化向量存储@Beanpublic VectorStore vectorStore(JdbcTemplate jdbcTemplate, EmbeddingModel embeddingModel) {return new PgVectorStore(jdbcTemplate, embeddingModel);}// 绑定RAG检索链路@Beanpublic ChatClient ragChatClient(ChatClient.Builder builder, VectorStore vectorStore) {return builder.defaultAdvisors(RetrieveAdvisor.builder(vectorStore).build()).build();}} |
3、RAG知识库问答接口
java@RestControllerpublic class AiRagController {private final ChatClient ragChatClient;public AiRagController(ChatClient ragChatClient) {this.ragChatClient = ragChatClient;}// 私有知识库问答@GetMapping("/ai/rag/chat")public String ragChat(@RequestParam String question) {String systemPrompt = "你是企业私有知识库助手,仅根据检索到的文档内容回答问题,无相关内容如实告知,禁止编造信息。";return ragChatClient.prompt().system(systemPrompt).user(question).call().content();}} |
核心优势:彻底解决大模型「幻觉问题」,所有答案基于私有真实文档,精准可靠,适配企业客服、内部知识库、文档答疑场景。
⚡ 高阶实战三:AI Tool工具调用(真正智能体能力)
Spring AI 2.0 彻底重构工具调用体系,废弃老旧Function回调,全新 @Tool注解极简开发,AI可自主判断、主动调用业务工具,实现真正智能化。
1、自定义AI业务工具
javaimport org.springframework.ai.tool.annotation.Tool;import org.springframework.stereotype.Component;import java.time.LocalDateTime;import java.util.HashMap;import java.util.Map;@Componentpublic class AiBusinessTool {/*** 工具描述必须清晰,大模型靠描述判断是否调用该工具* 获取当前系统时间*/@Tool(description = "获取服务器当前系统时间,用于时间相关问答、业务时间校验")public String getCurrentServerTime() {return LocalDateTime.now().toString();}/*** 模拟业务工具:查询用户信息*/@Tool(description = "根据用户ID查询用户基础信息")public Map<String, String> getUserInfo(Long userId) {Map<String, String> userMap = new HashMap<>();userMap.put("userId", String.valueOf(userId));userMap.put("userName", "测试用户");userMap.put("status", "正常");return userMap;}} |
2、工具调用接口
java@RestControllerpublic class AiToolController {private final ChatClient chatClient;public AiToolController(ChatClient.Builder builder) {this.chatClient = builder.build();}@GetMapping("/ai/tool/chat")public String toolChat(@RequestParam String message) {// 绑定自定义工具,AI自主判断调用return chatClient.prompt(message).tools("aiBusinessTool").call().content();}} |
效果演示:提问「现在服务器时间是多少」「查询ID为1001的用户信息」,AI会自动触发工具调用,执行Java方法、获取数据、整理答案返回,不再局限纯文本问答!
Spring AI 2.0 生产级避坑更新
续篇补充官方最新变更,帮大家规避上线踩坑:
•⚠️ 智谱AI已废弃:2.0版本逐步移除智谱原生适配,建议优先采用OpenAI兼容接口对接
•⚠️ 环境版本强制要求:正式版需 Java21 + SpringBoot4.x,低版本需升级适配
•✅MCP协议统一:所有模型统一遵循MCP模型上下文协议,切换模型无需改代码
•✅ Tool注解全覆盖:彻底废弃1.x FunctionCallback,统一使用@Tool开发工具
✨ 写在最后
如果说上篇的基础实战是「入门AI开发」,那本篇高阶实战就是企业落地的核心关键。
会话记忆 + 私有RAG知识库 + 自主工具调用,三大能力叠加,彻底让Java AI从「简单聊天」升级为「可落地、可赋能、可生产」的智能业务系统。
2026年企业智能化改造刚需,Spring AI 2.0 + SpringBoot绝对是Java后端最值得深耕的技术栈!
整理好了Spring AI 2.0 全套源码(记忆+RAG+工具调用)+ 生产级配置文件 + 离线Ollama部署教程
持续更新Java AI高阶实战,点赞+在看+关注,吃透AI技术风口!
#SpringAI2 #JavaAI #RAG知识库 #AI智能体 #SpringBoot #程序员干货 #企业级AI落地
夜雨聆风