登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
Spring AI 代码分析(一)--工程结构
Spring AI 代码分析(一)--工程结构
[ 复制链接 ]
眺愤
2025-11-19 20:40:00
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
Spring AI 工程分析文档
请关注微信公众号:阿呆-bot
1. 工程结构概览
Spring AI 是一个大型的多模块 Maven 项目,采用模块化设计,主要分为核心模块、模型实现、向量存储、自动配置等几大类。下面我们来看看主要的目录结构(已排除 spec、doc 等文档相关文件夹):
spring-ai-main/
├── spring-ai-commons/ # 基础公共模块,无其他 Spring AI 依赖
├── spring-ai-model/ # AI 能力抽象层(ChatModel、EmbeddingModel 等)
├── spring-ai-vector-store/ # 向量数据库统一抽象
├── spring-ai-client-chat/ # 高级对话 AI API(ChatClient)
├── spring-ai-rag/ # 检索增强生成框架
├── spring-ai-retry/ # 重试机制
├── spring-ai-bom/ # 依赖管理 BOM
│
├── models/ # AI 模型实现
│ ├── spring-ai-openai/ # OpenAI 实现
│ ├── spring-ai-anthropic/ # Anthropic Claude 实现
│ ├── spring-ai-azure-openai/ # Azure OpenAI 实现
│ ├── spring-ai-ollama/ # Ollama 本地模型
│ └── ... (20+ 个模型实现)
│
├── vector-stores/ # 向量数据库实现
│ ├── spring-ai-pgvector-store/ # PostgreSQL/PGVector
│ ├── spring-ai-chroma-store/ # Chroma
│ ├── spring-ai-pinecone-store/ # Pinecone
│ ├── spring-ai-qdrant-store/ # Qdrant
│ └── ... (20+ 个向量存储实现)
│
├── auto-configurations/ # Spring Boot 自动配置
│ ├── models/ # 模型自动配置
│ ├── vector-stores/ # 向量存储自动配置
│ └── mcp/ # MCP 协议自动配置
│
├── document-readers/ # 文档读取器
│ ├── pdf-reader/ # PDF 解析
│ ├── markdown-reader/ # Markdown 解析
│ └── tika-reader/ # 通用文档解析
│
├── memory/repository/ # 对话记忆存储实现
│ ├── spring-ai-model-chat-memory-repository-jdbc/
│ ├── spring-ai-model-chat-memory-repository-mongodb/
│ └── ...
│
└── spring-ai-spring-boot-starters/ # Spring Boot Starters
├── spring-ai-starter-model-openai/
├── spring-ai-starter-vector-store-pgvector/
└── ...
复制代码
2. 技术体系与模块关系
Spring AI 采用分层架构设计,从底层到上层依次是:基础层 → 抽象层 → 实现层 → 自动配置层。这种设计让代码既灵活又易于扩展。
技术栈说明
:
Java 17
+
Spring Boot 3.5.7
:现代 Java 企业级开发栈
Maven
:依赖管理和构建工具
响应式编程
:支持 Reactor 流式处理
观察性
:集成 Micrometer,提供指标和追踪
3. 关键场景示例代码
3.1 使用 ChatModel 进行对话
这是最基础的用法,直接调用 AI 模型:
@Autowired
private ChatModel chatModel;
public String chat(String userMessage) {
// 简单调用
String response = chatModel.call(userMessage);
return response;
// 或者使用 Prompt 对象,更灵活
Prompt prompt = new Prompt(new UserMessage(userMessage));
ChatResponse response = chatModel.call(prompt);
return response.getResult().getOutput().getContent();
}
复制代码
3.2 使用 ChatClient 流式 API
ChatClient 提供了更友好的流式 API,类似 WebClient 的风格:
@Autowired
private ChatModel chatModel;
public void streamChat(String question) {
ChatClient chatClient = ChatClient.create(chatModel);
chatClient.prompt()
.user(question)
.stream()
.content()
.doOnNext(chunk -> System.out.print(chunk))
.blockLast();
}
复制代码
3.3 使用 VectorStore 进行相似度搜索
向量存储是 RAG 的核心,用于存储和检索文档:
@Autowired
private EmbeddingModel embeddingModel;
@Autowired
private VectorStore vectorStore;
public void storeAndSearch() {
// 1. 存储文档
List<Document> documents = Arrays.asList(
new Document("Spring AI 是一个 AI 应用开发框架"),
new Document("支持多种 AI 模型和向量数据库")
);
vectorStore.add(documents);
// 2. 相似度搜索
List<Document> results = vectorStore.similaritySearch("AI 框架");
results.forEach(doc -> System.out.println(doc.getContent()));
}
复制代码
3.4 RAG 模式:检索增强生成
这是 Spring AI 的杀手级功能,结合向量存储和 AI 模型:
@Autowired
private ChatClient chatClient;
@Autowired
private VectorStore vectorStore;
public String ragQuery(String question) {
// 使用 QuestionAnswerAdvisor 自动处理 RAG
QuestionAnswerAdvisor advisor = new QuestionAnswerAdvisor(vectorStore);
return chatClient.prompt()
.user(question)
.advisors(advisor)
.call()
.content();
}
复制代码
4. 入口类与关键类关系
Spring AI 的入口主要是各种 AutoConfiguration 类,它们负责自动配置 Bean。核心接口之间的关系如下:
关键入口类说明
:
AutoConfiguration 类
:位于 auto-configurations/ 目录,根据 classpath 自动配置相应的 Bean
ChatModel
:所有对话模型的统一接口,包括 OpenAI、Anthropic 等
VectorStore
:向量数据库的统一抽象,支持 PGVector、Chroma、Pinecone 等
ChatClient
:高级 API,提供流式、Advisor 等高级特性
5. 外部依赖
Spring AI 的外部依赖主要分为几大类:
5.1 AI 模型提供商 SDK
OpenAI
:官方 Java SDK
Anthropic
:Claude API 客户端
Azure OpenAI
:Azure 服务 SDK
AWS Bedrock
:AWS SDK for Java
Google GenAI
:Google AI SDK
Ollama
:本地模型运行框架
5.2 向量数据库客户端
PostgreSQL/PGVector
:JDBC + pgvector 扩展
Chroma
:Python 服务的 HTTP 客户端
Pinecone
:官方 Java SDK
Qdrant
:REST API 客户端
Redis
:Spring Data Redis
MongoDB Atlas
:MongoDB Java Driver
Elasticsearch
:Elasticsearch Java Client
还有 Neo4j、Weaviate、Milvus 等 10+ 种实现
5.3 文档处理
Apache Tika
:通用文档解析
PDFBox
:PDF 处理
Jsoup
:HTML 解析
CommonMark
:Markdown 解析
5.4 构建和测试工具
Maven
:构建工具
Testcontainers
:集成测试容器
JaCoCo
:代码覆盖率
Checkstyle
:代码风格检查
6. 工程总结
Spring AI 这个项目,说白了就是 Spring 生态在 AI 领域的延伸。它的设计理念非常清晰:
可移植性 + 模块化 + POJO 优先
。
6.1 设计亮点
第一,抽象做得好
。不管是 OpenAI 还是 Anthropic,不管是 PGVector 还是 Pinecone,都用统一的接口。这意味着你可以轻松切换提供商,不用改业务代码。
第二,模块化设计
。核心抽象和具体实现完全分离,想用哪个模型、哪个向量数据库,引入对应的 starter 就行。这种设计让项目既灵活又不会臃肿。
第三,Spring Boot 深度集成
。自动配置、Starters、观察性,该有的都有。用起来就像用 Spring Data 一样自然。
6.2 核心价值
Spring AI 解决的核心问题是:
如何把企业数据和 API 连接到 AI 模型
。它提供了:
RAG 框架
:让 AI 能"看到"你的数据
工具调用
:让 AI 能"操作"你的系统
对话记忆
:让 AI 能"记住"对话历史
流式处理
:让 AI 响应更流畅
6.3 适用场景
这个框架特别适合:
企业内部知识库问答系统
文档智能检索和分析
AI 驱动的业务自动化
多模型、多数据源的 AI 应用
总的来说,Spring AI 是一个
企业级、生产就绪
的 AI 应用开发框架。它把复杂的 AI 集成工作标准化、简单化,让 Java 开发者也能轻松构建 AI 应用。如果你熟悉 Spring 生态,上手会非常快。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
Spring
AI
代码
分析
工程
相关帖子
利用Apipost AI自动生成接口测试用例并批量执行
fs1.6-fs1.10代码移植方案
C#AI系列(5): C#离线实现高效OCR
白嫖最新ChatGPT和主流AI大模型,国内无限制使用
AI编程工具策略
【AI编程】5分钟用AI复刻有BOSS战的《坦克大战》
咱们聊聊Spring循环依赖那点事儿:从“死锁”到“三级缓存”的奇妙之旅
一张图看懂AI Agent的6种模式—MAS
poloapi 深度测评:99.8% 可用性 + 零代码迁移,AI 开发成本砍半
2026年成都品牌主,如何选择AI优化搜索(AI GEO)合作伙伴,附压箱底选购技巧
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
利用Apipost AI自动生成接口测试用例并批量执行
0
712
椎蕊
2025-12-12
业界
fs1.6-fs1.10代码移植方案
0
731
郗新语
2025-12-12
业界
C#AI系列(5): C#离线实现高效OCR
0
676
郏琼芳
2025-12-13
科技
白嫖最新ChatGPT和主流AI大模型,国内无限制使用
1
62
况雪柳
2025-12-14
科技
AI编程工具策略
0
225
供挂
2025-12-14
业界
【AI编程】5分钟用AI复刻有BOSS战的《坦克大战》
0
888
勉欤铅
2025-12-14
业界
咱们聊聊Spring循环依赖那点事儿:从“死锁”到“三级缓存”的奇妙之旅
0
687
赏听然
2025-12-14
业界
一张图看懂AI Agent的6种模式—MAS
0
621
沦嘻亟
2025-12-15
安全
poloapi 深度测评:99.8% 可用性 + 零代码迁移,AI 开发成本砍半
0
330
遑盲
2025-12-15
科技
2026年成都品牌主,如何选择AI优化搜索(AI GEO)合作伙伴,附压箱底选购技巧
0
950
百谖夷
2025-12-15
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
安全
签约作者
程序园优秀签约作者
发帖
眺愤
2025-11-19 20:40:00
关注
0
粉丝关注
17
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994893
kk14977
6845357
3934307807
991123
4
xiangqian
638210
5
韶又彤
9998
6
宋子
9983
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9951
查看更多
今日好文热榜
311
《ESP32-S3使用指南—IDF版 V1.6》第五十五
941
纯前端调用大模型真的安全吗?我踩过的坑比
895
【分析式AI】-带你秒弄懂决策树与随机森林
97
DBLens 的数据安全、登录方式与离线使用说
71
国内开发者合规订阅 Claude Code 的 3 条最
153
Perforce QAC 2025.3 新版上线 | 速度与深
475
防止跨站脚本攻击(XSS)(完整版HTTP安全
352
Wayland下RDP服务器的搭建
887
Flink学习笔记:状态后端
532
csq-蓝桥杯python-基础语法2-列表与循环语
512
C#+VisionMaster 学习笔记(目录)-目录
586
ROS2核心概念之参数
88
【Agent】MemOS 源码笔记---(5)---记忆分类
129
.NET周刊【11月第4期 2025-11-23】
191
Oracle回滚与撤销(Undo)技术:从理论到实
223
吴恩达深度学习课程四:计算机视觉 第二周
854
jetson nano的ssh远程登录连接
638
Categraf 监控采集器常见问题汇总
825
11月和12月求职总结
950
2026年成都品牌主,如何选择AI优化搜索(AI