Spring AI 是一个为开发 AI 应用程序提供 Spring 友好的 API 和抽象层的项目。它将 Spring 生态系统的设计原则(如可移植性和模块化设计)应用到 AI 领域,并促进使用 POJO 作为 AI 应用程序的构建块。
核心理念 💡
❝在其核心,Spring AI 解决了 AI 集成的根本挑战:将您的企业「数据」和「API」与「AI 模型」连接起来。
❞
技术架构层次 🏛️
图1:Spring AI 技术架构层次图
快速开始(以Ollma为例) 🚀
1. 添加依赖
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-starter-model-ollama</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency>
2. 使用 OllamaChatModel
package cn.jishuba; import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.chat.model.ChatModel; import org.springframework.ai.ollama.OllamaChatModel; import org.springframework.ai.ollama.api.OllamaApi; import org.springframework.ai.ollama.api.OllamaOptions; public class App { public static void main( String[] args ) { // 指定Ollama API的地址 OllamaApi ollamaApi = OllamaApi.builder() .baseUrl("http://localhost:11434") .build(); // 创建Ollama聊天模型 ChatModel model = OllamaChatModel.builder() .defaultOptions(OllamaOptions.builder() .model("qwen2.5:latest") .build()) .ollamaApi(ollamaApi) .build(); // 创建聊天客户端 ChatClient chatClient = ChatClient.builder(model) .build(); String response = chatClient.prompt() .user("你好,讲个关于Java的笑话") .call() .content(); System.out.println(response); } }
整体架构 🏗️
图2:Spring AI 核心架构与生态系统
主要功能模块 🎯
1. AI 模型支持 🤖
支持的模型类型
- 「聊天完成」 (Chat Completion) 💬
- 「嵌入」 (Embedding) 🔗
- 「文本转图像」 (Text to Image) 🎨
- 「音频转录」 (Audio Transcription) 🎵
- 「文本转语音」 (Text to Speech) 🔊
- 「内容审核」 (Moderation) 🛡️
支持的提供商
提供商 | 模块名称 | 支持功能 |
OpenAI | spring-ai-openai |
聊天、嵌入、图像、音频 |
Anthropic | spring-ai-anthropic |
聊天、嵌入 |
Azure OpenAI | spring-ai-azure-openai |
聊天、嵌入、图像 |
AWS Bedrock | spring-ai-bedrock |
聊天、嵌入 |
Google Gemini | spring-ai-vertex-ai-gemini |
聊天、嵌入 |
Ollama | spring-ai-ollama |
本地部署聊天模型 |
DeepSeek | spring-ai-deepseek |
聊天、嵌入 |
Minimax | spring-ai-minimax |
聊天 |
智谱AI | spring-ai-zhipuai |
聊天、嵌入 |
2. 向量数据库支持 🗄️
支持的向量数据库
数据库 | 模块名称 | 特性 |
PostgreSQL/PGVector | spring-ai-pgvector-store |
🐘 开源、SQL兼容 |
Chroma | spring-ai-chroma-store |
🎨 轻量级、易用 |
Pinecone | spring-ai-pinecone-store |
🌲 云原生、高性能 |
Redis | spring-ai-redis-store |
🔴 内存存储、高速 |
Elasticsearch | spring-ai-elasticsearch-store |
🔍 全文搜索 |
MongoDB Atlas | spring-ai-mongodb-atlas-store |
🍃 文档数据库 |
Neo4j | spring-ai-neo4j-store |
🔗 图数据库 |
Apache Cassandra | spring-ai-cassandra-store |
🔧 分布式 |
Weaviate | spring-ai-weaviate-store |
🕸️ 向量搜索 |
3. 核心功能组件 ⚙️
ChatClient API 💬
- 流式 API,类似于 WebClient 和 RestClient
- 支持同步和异步调用
- 内置对话记忆管理
- 支持 RAG (检索增强生成)
Advisors API 🎯
- 封装常见的生成式 AI 模式
- 转换发送到/从语言模型的数据
- 提供跨不同模型的可移植性
工具/函数调用 🛠️
- 允许模型请求执行客户端工具和函数
- 访问实时信息
- 扩展 AI 应用的功能边界
观测性 📊
- 提供 AI 相关操作的洞察
- 监控模型性能和使用情况
- 集成 Spring Boot Actuator
4. 数据处理 📈
ETL 框架
- 文档注入 ETL 框架
- 数据工程支持
- 文档读取器:
jsoup-reader
- HTML 解析markdown-reader
- Markdown 文档pdf-reader
- PDF 文档tika-reader
- 多格式文档
结构化输出
- AI 模型输出到 POJO 的映射
- 类型安全的响应处理
模块关系图 🔄
图3:Spring AI 模块关系与依赖图
主要特性 ✨
🔧 可移植性
- 统一的 API 抽象,轻松切换不同的 AI 提供商
- 标准化的配置方式
🎯 Spring 集成
- 完整的 Spring Boot 自动配置
- 依赖注入支持
- Spring 生态系统兼容
📈 可扩展性
- 模块化设计,按需选择组件
- 插件式架构,易于扩展
🛡️ 企业级
- 完整的观测性支持
- 错误处理和重试机制
- 生产就绪的特性
🌐 多语言支持
- 不仅限于 Python 开发者
- Java 生态系统的完整支持
总结 🎉
Spring AI 为 Java 开发者提供了一个强大、灵活、易于使用的 AI 应用开发框架。通过其模块化设计和 Spring 生态系统的深度集成,开发者可以快速构建生产级的 AI 应用程序,同时保持代码的可维护性和可扩展性。
无论您是要构建聊天机器人、知识问答系统、还是复杂的 AI 工作流,Spring AI 都为您提供了必要的工具和抽象层,让您专注于业务逻辑的实现,而不是底层的 AI 模型集成细节。