一、系列回顾与本篇定位
1.1 系列回顾
本系列已覆盖 Spring AI 核心能力:从基础集成 ChatModel,到 ChatClient 封装,再到多模型共存、Prompt 工程、结构化输出、Tool Calling、Chat Memory 以及多模态能力。这些模块为构建复杂 AI 应用打下了坚实基础。
1.2 本篇定位
大模型虽具备强大的通用知识,但存在明确的能力边界:它不了解你的私有业务数据(如内部运维手册),知识有截止日期,且可能产生'幻觉'。
RAG(检索增强生成)正是解决这些问题的核心技术。通过'检索私有知识库 + 大模型基于检索结果生成回答',让大模型能基于你的私有数据回答问题,同时大幅减少幻觉。
本篇作为系列企业级核心收官篇,我们将完整实现一套基于 Spring AI 的 RAG 智能问答系统:从原理拆解到 RedisStack 向量存储落地,涵盖带去重逻辑的知识库初始化、RetrievalAugmentationAdvisor 配置,以及动态过滤、自定义 Prompt 模板等进阶场景,并补充生产环境最佳实践。
二、核心概念拆解:Spring AI RAG 全原理
2.1 什么是 RAG
RAG 的核心流程分为三步:
- 检索(Retrieval):用户提问时,先从向量数据库中检索出最相关的文档片段。
- 增强(Augmentation):将检索到的片段作为上下文,拼接到用户问题中。
- 生成(Generation):将包含上下文的 Prompt 发送给大模型,基于上下文回答问题。
简单来说:RAG = 向量检索 + 大模型生成。它让大模型能'查资料'后再回答,既保留了语言能力,又注入了私有知识。
2.2 Spring AI 模块化 RAG 架构
Spring AI 1.0+ 版本推出了模块化 RAG 架构,参考了论文《Modular RAG: Transforming RAG Systems into LEGO-like Reconfigurable Frameworks》,将 RAG 拆分为多个可插拔模块,你可以像搭积木一样组合。
| 模块类型 | 作用 | 典型实现 |
|---|---|---|
| Pre-Retrieval(检索前) | 处理用户查询,提升检索质量 | RewriteQueryTransformer(查询改写)、MultiQueryExpander(查询扩展) |
| Retrieval(检索) | 从数据源检索相关文档 | VectorStoreDocumentRetriever(向量库检索) |
| Post-R retrieval(检索后) | 处理检索到的文档 | 文档重排序、去重、压缩 |
| Generation(生成) | 基于上下文生成最终回答 | ContextualQueryAugmenter(上下文增强) |
对于大多数常见场景,Spring AI 提供了两个开箱即用的 Advisor:
QuestionAnswerAdvisor:简单场景,适合快速上手。RetrievalAugmentationAdvisor:高级场景,支持模块化配置,适合生产环境。
三、实战落地:从零构建企业级 RAG 系统
3.1 环境前提
- JDK 17+、Spring Boot 3.2.x 环境
- 阿里云百炼 API Key 环境变量


