spring-ai-alibaba-deepresearch 学习总结
DeepResearch是一种突破性的智能研究框架,通过多级知识处理机制实现深度问题探究。其核心采用状态图驱动的多智能体协作机制,将研究流程分解为问题分析、背景调查、计划制定、分步执行和报告生成等标准化节点。技术实现上通过SSE实现流式响应,基于Graph引擎支持中断恢复和状态共享。该系统为各领域深度知识研究提供了可扩展的智能化解决方案框架。
本篇为spring-ai-alibaba学习系列第四十一篇
DeepResearch 定位
大模型问答,简单RAG,DeepResearch 三者像是专业度不断提高的搜索引擎
大模型问答,知识取决于训练截止日期,无法获取最新数据;细分领域的专业知识储备也比较少;
RAG 解决了上述问题,通过外挂知识库解决了大模型知识时效性和专业性的问题,但是对问题的挖掘不够深入,仅仅是泛泛的回答
而 DeepResearch 则更像是一种高级 RAG,会对问题进行分类,不同类型的问题可能会查询不同的知识库,会对问题进行背景调查,会生成研究计划及具体步骤,按步骤分步执行等等
类比
如果把大模型问答比作闭卷考试,仅能通过记忆来回答
那 RAG 就像是开卷考试,可以查询手头资料,大多是直接相关的内容
而 DeepResearch 则像是毕业论文,需要查阅各种资料,包括一些间接相关的内容
DeepResearch 简介
DeepResearch 模块是一个基于图核框架的自动化深度研究系统,旨在通过多智能体协作、多源搜索和报告生成来完成复杂的调研任务。该系统利用状态图(StateGraph)来编排和管理研究流程,支持长时间运行任务的中断与恢复,并通过前端UI提供实时的流式响应。
DeepResearch 核心流程
DeepResearch 将深度研究任务拆解为问题分析、背景调查、制定研究计划、执行研究计划、生成报告等步骤,并将其封装为一个个节点,通过流程图来控制节点的执行和回退,实现了自动化深度研究的完整流程。
具体流程如下
1)对用户问题进行重写和扩展
2)检索自建知识库
3)背景调查:对问题进行分类,根据分类不同选择不同的智能体进行搜索
4)制定研究计划:包含若干步骤
5)执行研究计划:根据步骤内容不同,选择合适的智能体进行处理
6)检索专业知识库:根据用户问题检索对应的专业知识库
7)生成报告
ps:个人感觉检索专业知识库应该向前移动,跟检索自建知识库并行
项目结构
DeepResearch 模块是 spring-ai-alibaba 项目中的一个独立子模块,专注于实现深度研究功能。其主要结构包括后端服务和前端UI两大部分。
后端服务位于 src/main/java 目录下,核心功能分布在 node(节点实现)、controller(API控制器)、config(配置类)、service(业务服务)等包中。node 包包含了核心节点的实现。controller 包中的 ChatController 负责处理前端的 SSE(Server-Sent Events)流式请求。config 包中的 DeepResearchConfiguration 是整个流程的配置中心,负责构建和编译状态图。
前端UI位于 ui-vue3 目录下,是一个基于 Vue 3 和 TypeScript 构建的单页应用(SPA)。src/components/chat/index.vue 是核心的聊天界面组件,负责与后端建立 SSE 连接并实时渲染流式响应。
架构概述
该系统的架构基于一个有向无环图(DAG),由 StateGraph 表示。整个研究流程被分解为一系列节点(Node),节点之间通过边(Edge)连接,形成一个可编排的工作流。系统通过ChatController 接收前端请求,启动一个 CompiledGraph 实例来执行该工作流。每个节点的输出会更新共享的 OverAllState 状态,后续节点可以读取这些状态进行处理。结果通过SSE流式传输给前端,实现低延迟的实时交互。
用户扩展点
DeepResearch 提供了一个深度研究的框架,用户可以根据自身需求,针对性的扩展其中的关键环节来适配当前业务。
问题分类类型:当前 DeepResearch 将问题分为学术研究、生活旅游、百科、数据分析、通用研究五个类别并配置了对应的研究智能体,用户可以修改这部分内容来适配自己的领域分类。
研究智能体的底层搜索平台:每一类研究智能体可以选择多个不同底层搜索平台,例如生活旅游类支持opentripmap 和 tripadvisor,通用研究支持百度搜索、tavily搜索等,用户可以根据设置的问题分类来添加对应的底层搜索平台。
自建知识库:用户可以自行搭建本地知识库,规划填充自身领域内的文献资料或业务规则。
专业知识库:可以参考的公开的外部知识库服务,可以是知识库,也可以是检索服务或某领域搜索引擎。
其他:剩余的基本都是使用框架的配置来进行微调,例如是否开启某项功能,计划中包含的最大步骤数等。
更多推荐


所有评论(0)