Spring AI 项目介绍

Spring AI 是一个为开发 AI 应用程序提供 Spring 友好的 API 和抽象层的项目。它将 Spring 生态系统的设计原则(如可移植性和模块化设计)应用到 AI 领域,并促进使用 POJO 作为 AI 应用程序的构建块。

核心理念 💡

在其核心,Spring AI 解决了 AI 集成的根本挑战:将您的企业**「数据」 「API」「AI 模型」**连接起来。

技术架构层次 🏛️

图1:Spring AI 技术架构层次图

快速开始(以Ollma为例) 🚀

1. 添加依赖

xml 复制代码
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-model-ollama</artifactId>
    <version>1.0.0-SNAPSHOT</version>
</dependency>

2. 使用 OllamaChatModel

java 复制代码
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 模型集成细节。

相关推荐
浮游本尊10 分钟前
一次合同同步背后的多阶段流水线:从外部主数据到本地歧义消解
后端
lv__pf12 分钟前
springboot原理
java·spring boot·后端
段小二1 小时前
服务一重启全丢了——Spring AI Alibaba Agent 三层持久化完整方案
java·后端
UIUV1 小时前
Go语言入门到精通学习笔记
后端·go·编程语言
lizhongxuan1 小时前
开发 Agent 的坑
后端
段小二1 小时前
Agent 自动把机票改错了,推理完全正确——这才是真正的风险
java·后端
itjinyin2 小时前
ShardingSphere-jdbc 5.5.0 + spring boot 基础配置 - 实战篇
java·spring boot·后端
Victor3562 小时前
MongoDB(91)如何在MongoDB中使用TTL索引?
后端
老王以为2 小时前
前端重生之 - 前端视角下的 Python
前端·后端·python