news 2026/9/5 7:09:17

Spring AI详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring AI详解

可以。你可以把Spring AI理解成:

Spring Boot 生态里的 AI 应用开发框架,用 Spring 的方式把 LLM、Prompt、RAG、向量数据库、Tool Calling、MCP、Agent 等能力接进 Java 应用。

如果你已经熟悉 Spring Boot,那么 Spring AI 是目前比较适合你切入 AI 应用开发的框架。


一、Spring AI 到底是什么?

传统 Spring Boot 应用:

Spring Boot │ ├── Controller ├── Service ├── MyBatis ├── Redis ├── MySQL └── Kafka

加入 AI 后:

Spring Boot │ ├── Controller ├── Service ├── MyBatis ├── Redis ├── Kafka │ └── Spring AI │ ├── LLM ├── Prompt ├── ChatClient ├── Embedding ├── Vector Store ├── RAG ├── Tool Calling ├── MCP └── Agent

所以它不是一个大模型

它更像:

Java/Spring 应用和各种 AI 能力之间的适配层。


二、Spring AI 主要解决什么问题?

假设你不用 Spring AI。

Java 调 OpenAI:

Java ↓ 自己组 HTTP 请求 ↓ 自己处理 JSON ↓ 自己处理模型返回

换一个模型:

OpenAI ↓ 换成 Qwen ↓ 又写一套

再加入:

向量数据库 RAG Tool Calling MCP

代码会越来越复杂。

Spring AI 的目标就是统一这些能力:

Spring AI │ ┌────────────┼────────────┐ ↓ ↓ ↓ OpenAI Qwen DeepSeek ↓ ↓ ↓ 统一接口

你的业务代码尽量不用关心底层模型供应商。


三、Spring AI 核心组件

这是学习 Spring AI 最重要的一部分。

Spring AI │ ├── ChatClient │ ├── ChatModel │ ├── Prompt │ ├── Embedding │ ├── Vector Store │ ├── Document │ ├── RAG │ ├── Tool Calling │ ├── MCP │ └── Evaluation

我们一个一个看。


四、ChatClient —— 最重要的入口

如果你只学 Spring AI 一个东西:

先把 ChatClient 搞明白。

它可以理解成:

Java 应用调用 LLM 的主要客户端。

例如:

@RestControllerpublicclassChatController{privatefinalChatClientchatClient;publicChatController(ChatClient.Builderbuilder){this.chatClient=builder.build();}@GetMapping("/chat")publicStringchat(Stringmessage){returnchatClient.prompt(message).call().content();}}

调用:

GET /chat?message=什么是Redis

流程:

浏览器 ↓ Controller ↓ ChatClient ↓ Spring AI ↓ LLM ↓ 返回结果

这就是最简单的 Spring AI 应用。


五、ChatModel 是什么?

这里容易和 ChatClient 搞混。

可以理解:

ChatClient ↓ ChatModel ↓ 具体的大模型

例如:

ChatClient ↓ ChatModel ↓ OpenAI

或者:

ChatClient ↓ ChatModel ↓ Qwen

或者:

ChatClient ↓ ChatModel ↓ Ollama

ChatClient

更偏向:

开发者使用的高级 API。

ChatModel

更偏向:

底层模型抽象。


六、Prompt

Prompt 就是:

告诉 LLM 应该怎么做。

最简单:

chatClient.prompt("解释一下 Kafka Consumer Group").call().content();

实际项目一般不会这么简单。

通常会有:

System Prompt + User Prompt + 上下文

例如:

System: 你是一名资深 Java 架构师。 User: 解释一下 Kafka Consumer Group。

Spring AI 可以把 Prompt 模板化。

例如:

你是一名{role}。 请解释: {question}

然后传:

role = Java架构师 question = Kafka Consumer Group

七、Structured Output

实际企业开发中非常重要。

比如你让 LLM 返回:

{"name":"Redis","type":"database","score":90}

Spring AI 可以把模型输出转换成 Java 对象。

例如:

publicclassProductInfo{privateStringname;privateStringtype;privateIntegerscore;}

这样 AI 就可以从:

自然语言

变成:

Java对象

这对后端开发非常重要。

因为你最终要:

LLM ↓ Java Object ↓ 业务逻辑 ↓ MySQL

八、Embedding

这是 RAG 的核心。

LLM 本身处理文本。

Embedding 的作用是:

把文本转换成向量。

例如:

"Redis 是内存数据库"

经过 Embedding:

[0.12, -0.31, 0.87, ...]

然后:

文档 ↓ Embedding ↓ 向量 ↓ Vector Database

九、Vector Store

向量数据库就是保存这些向量。

常见:

Milvus pgvector Elasticsearch OpenSearch Pinecone Redis

Spring AI 对这些向量存储提供统一抽象。

例如:

Spring AI ↓ VectorStore ↓ Milvus

以后换:

Milvus ↓ pgvector

业务代码可以尽量少改。


十、RAG

Spring AI 非常重要的能力就是 RAG。

RAG:

Retrieval-Augmented Generation

也就是:

先检索,再让 LLM 回答。

例如公司有:

BACnet技术文档 MQTT技术文档 项目接口文档 数据库设计文档 运维手册

用户:

“BACnet 火警告警怎么处理?”

流程:

用户问题 ↓ Embedding ↓ Vector Store ↓ 检索相关文档 ↓ Context ↓ LLM ↓ 答案

十一、Spring AI 做 RAG 的完整架构

用户 │ ▼ Spring Boot │ ▼ Spring AI │ ┌──────────┴──────────┐ │ │ ▼ ▼ VectorStore LLM │ │ Milvus Qwen/GPT ES DeepSeek pgvector Claude │ │ └──────────┬──────────┘ ▼ 答案

十二、Tool Calling

这个是从 RAG 进入 Agent 的关键。

假设用户问:

“查询一下订单 10001 的状态。”

LLM 自己不知道数据库里的订单。

所以你提供一个工具:

publicOrderqueryOrder(StringorderId){returnorderService.getById(orderId);}

告诉 LLM:

你可以使用 queryOrder 工具。

然后:

用户 ↓ LLM ↓ 判断需要查询订单 ↓ 调用 queryOrder ↓ Java Service ↓ MySQL ↓ 返回结果 ↓ LLM ↓ 最终回答

这就是 Tool Calling。


十三、Tool Calling 和 RAG 的区别

非常重要。

RAG

解决:

“你不知道的知识,我给你查。”

问题 ↓ 知识库 ↓ 文档 ↓ LLM

Tool Calling

解决:

“你需要操作/查询外部系统,我给你工具。”

问题 ↓ LLM ↓ Tool ↓ MySQL/API/Redis ↓ 结果

例如:

“公司退款规则是什么?” ↓ RAG

而:

“帮我查询订单10001” ↓ Tool Calling

十四、MCP

Spring AI 现在也涉及 MCP。

MCP:

Model Context Protocol

它解决:

AI 如何标准化连接外部工具和数据。

例如:

Agent │ MCP │ ┌────────────┼────────────┐ ↓ ↓ ↓ MySQL GitHub 文件系统

所以:

Tool Calling

更像是一种调用工具的能力。

而:

MCP

更像是一套:

标准化工具连接协议。


十五、Agent

Spring AI 可以作为 Agent 应用的基础。

Agent 的核心:

用户 ↓ LLM ↓ 判断任务 ↓ 选择工具 ↓ 执行工具 ↓ 观察结果 ↓ 继续决策 ↓ 完成任务

例如你做一个:

生产环境巡检 Agent

用户:

“检查一下 MySQL、Redis、Kafka。”

Agent:

Agent │ ┌──────────┼──────────┐ ↓ ↓ ↓ MySQL Redis Kafka │ │ │ └──────────┼──────────┘ ↓ LLM ↓ 分析结果 ↓ 巡检报告

这个就和你前面学习的:

LLM + RAG + MCP + Agent

串起来了。


十六、Spring AI 和 Spring Boot 是什么关系?

你之前问过这个问题:

Spring AI 是不是 Spring Boot 加几个组件?

可以说:

理解方向基本对,但不完全准确。

更准确的是:

Spring Boot │ ├── 自动配置 ├── Starter ├── Bean管理 └── Web/数据/安全 │ ▼ Spring AI │ ├── ChatModel ├── ChatClient ├── VectorStore ├── Embedding ├── Tool └── MCP

Spring AI 是建立在 Spring 生态之上的:

AI 应用开发抽象和组件体系。


十七、Spring AI 和 LangChain4j 怎么选?

结合你是 Java 后端:

Spring AILangChain4j
Java⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Spring Boot⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
LLM⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
RAG⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Tool⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
MCP⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
企业 Spring 项目非常适合适合
学习成本较低中等
Spring 生态融合非常强

如果你的目标是:

Java + Spring Boot + 企业级 AI

我会优先:

Spring AI

然后再了解:

LangChain4j

十八、Spring AI 在企业项目中的典型架构

如果你以后做一个企业 AI 平台,可以这样设计:

前端 │ ▼ Spring Boot API │ ▼ ┌───────────┐ │ Spring AI │ └─────┬─────┘ │ ┌─────────────┼─────────────┐ │ │ │ ▼ ▼ ▼ LLM RAG Tools │ │ │ ┌────┼────┐ │ ┌────┼────┐ │ │ │ │ │ │ │ GPT Qwen DeepSeek │ MySQL Redis API │ ┌────┴─────┐ │Vector DB │ ├───────────┤ │ Milvus │ │ ES │ │ pgvector │ └───────────┘

再往上发展:

AI Agent │ ┌────────┼────────┐ ↓ ↓ ↓ RAG MCP Tools │ │ │ └────────┼────────┘ ↓ LLM

十九、你真正应该掌握哪些 Spring AI?

不要一开始把所有 API 都学完。

建议按这个顺序:

第一阶段:LLM

ChatClient ChatModel Prompt System/User Message Streaming Structured Output

第二阶段:RAG

Document DocumentReader Embedding VectorStore Retriever Chunk Metadata RAG Pipeline

第三阶段:Tool

Tool Calling Function Java Service REST API Database

第四阶段:MCP

MCP Client MCP Server Tools Resources Prompts

第五阶段:Agent

Agent Memory Tool Planning Workflow Human-in-the-loop

二十、如果结合技术栈

现在已经有:

Java Spring Boot MySQL Redis Kafka Linux MQTT BACnet Docker

那么非常适合做一个实际项目:

AI 运维 Agent

比如:

用户: “帮我检查生产环境 Kafka、Redis、MySQL” ↓ Spring AI ↓ Agent ↓ ┌───────┼────────┐ ↓ ↓ ↓ MySQL Redis Kafka ↓ ↓ ↓ Tool Tool MCP └───────┼────────┘ ↓ LLM ↓ RAG 查询运维规范 ↓ 综合分析 ↓ “Kafka正常,Redis内存 82%,MySQL存在锁等待”

Linux 巡检 + MySQL 监控 + Redis 监控 + Kafka 巡检

全部都能直接变成 AI Agent 的 Tool。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/5 7:08:41

WPS2013单元格数字格式设置全解析:从基础到高级应用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/5 7:08:20

滤波器核心原理与选型指南:从模拟电路到数字降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/5 7:07:35

可重构晶体管介质堆叠工艺:从原理到规模化制造的关键突破

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/5 7:06:46

MATLAB例程工程化实践:从命名解析到开箱即用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/5 7:06:30

AI日报:Agent上岗、模型部署与AI应用落地的工程化实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/5 7:05:35

测试芯片与PCM:半导体工艺监控的“体检表”解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华