基于 Spring AI Alibaba 的多智能体协作检索增强生成系统
Agentic RAG Demo
基于 Spring AI Alibaba 的多智能体协作检索增强生成系统
架构概览
三层协作模型
-
RAG 执行单元(顺序协作)
- 查询重写 -> 多路检索 -> 答案生成
- 单独执行一个完整的 RAG 流程
-
检查者 Agent(循环协作)
- 多维评分(相关性、准确性、完整性、时效性)
- 评分不达标时提供改进建议
- 支持最多 3 次重试
-
监督者 Agent(监督者协作)
- 任务拆解:复杂问题分解为子查询
- 并行执行:多个 RAG 单元并行处理
- 结果汇总:整合子答案为最终答案
- 质量监督:检查并优化最终结果
技术栈
- Java 17+
- Spring Boot 3.4.4
- Spring AI Alibaba 1.1.2.0
- DashScope(千问大模型)
- Chroma(向量数据库)
快速开始
1. 配置环境
设置 DashScope API Key:
export DASHSCOPE_API_KEY=your-api-key
2. 启动向量数据库(可选)
docker run -d --name chroma -p 8000:8000 chromadb/chroma
3. 运行项目
mvn spring-boot:run
API 接口
简单 RAG 模式
curl -X POST http://localhost:8081/api/rag/simple \
-H "Content-Type: application/json" \
-d '{"query": "Spring AI 是什么?"}'
检查者 RAG 模式
curl -X POST http://localhost:8081/api/rag/checker \
-H "Content-Type: application/json" \
-d '{"query": "Spring AI 和 LangChain 有什么区别?"}'
监督者 RAG 模式
curl -X POST http://localhost:8081/api/rag/supervisor \
-H "Content-Type: application/json" \
-d '{"query": "比较 Spring AI 和 LangChain4j 的优缺点"}'
项目结构
src/main/java/com/example/agenticrag/
├── AgenticRagApplication.java # 主应用程序
├── config/
│ └── GraphConfig.java # 图配置
├── controller/
│ └── AgenticRagController.java # API 控制器
├── service/
│ └── AgenticRagService.java # 业务服务
└── graph/
├── RagGraph.java # RAG 执行图
├── CheckerGraph.java # 检查者图
├── SupervisorGraph.java # 监督者图
├── state/
│ └── RagState.java # 状态对象
└── node/
├── QueryRewriteNode.java # 查询重写节点
├── MultiRetrievalNode.java # 多路检索节点
├── AnswerGenerateNode.java # 答案生成节点
├── ScoreNode.java # 评分节点
├── TaskDecompositionNode.java # 任务拆解节点
└── ResultAggregationNode.java # 结果汇总节点
配置说明
agentic-rag:
checker:
pass-score: 80 # 通过分数
max-retries: 3 # 最大重试次数
扩展指南
添加新的节点类型
- 在
graph/node包下创建新的节点类 - 实现
apply(RagState state)方法 - 在图定义中添加节点
添加新的评分维度
修改 ScoreNode 类,添加新的评分维度
集成其他向量数据库
修改 MultiRetrievalNode 类,实现其他检索方式

浙公网安备 33010602011771号