基于 Spring AI Alibaba 构建混合 RAG Agent

SpringAIAlibaba官方文档:https://java2ai.com/docs/overview

如果你正在用大模型(LLM)做企业知识库、客服系统或者内部助手,你一定遇到过这样的尴尬:

  • 用户问得稍微模糊点,AI 就答非所问;
  • AI 自信满满地编造了一个不存在的规定;
  • 明明文档里有答案,它却视而不见。

传统的 RAG(检索增强生成) 技术虽然能缓解这些问题,但在面对复杂场景时往往显得力不从心。为了解决这些痛点,我们设计了一套 “混合 RAG Agent” 架构。简单来说,就是给 AI 装上了“大脑”和“检查员”,让它学会多步思考自我纠错。而且,这一切都是基于 Java 开发者熟悉的 Spring AI Alibaba 构建的,低成本、易扩展,还能跑得飞快!

想象一下,传统 RAG 的工作流程就像是一个“急性子”实习生:

  1. 你问问题:“那个报销流程咋走来着?”
  2. 它去翻书(向量检索):随便抓几段看起来像的文字。
  3. 它直接回答:把抓到的文字拼一拼,直接丢给你。

这个流程有三个大坑:

  1. 听不清:如果你问得含糊(比如“那个流程”),它可能检索到完全错误的文档。
  2. 找不全:有时候关键信息藏在另一份文档里,单次检索漏掉了。
  3. 瞎胡说:大模型有时候为了“显得懂事”,会在没有依据的情况下编造答案(幻觉)。

为了解决这些问题,业界有两个进化方向:

  • Agentic RAG(代理式 RAG):像个侦探,遇到不懂的先推理,决定要不要查资料、查什么资料,甚至查完觉得不对再查一次。灵活,但有点“放飞自我”。
  • 两步 RAG(Two-Stage RAG):像个严谨的会计,必须先查到凭证(文档),才能写报告(生成答案)。Spring AI 里的 QuestionAnswerAdvisor 就是干这个的,稳,但不够灵活。

我们的混合 RAG,就是要把这两者的优点结合起来:既有侦探的灵活,又有会计的严谨。

我们的架构在 Spring AI Alibaba 的基础上,增加了六个关键的“中间步骤”,让 AI 的处理过程变得像人类专家一样细腻。

1. 查询增强:先把问题“翻译”清楚

很多时候,用户的问题是很模糊的。比如用户问:“怎么请假?”
AI 如果直接搜“怎么请假”,可能搜出来的是“旷工处罚条例”。
在这个阶段,我们会利用 AgentHook,在对话开始前,先让大模型把用户的问题“润色”一下。

  • 重写:结合之前的聊天记忆,把“怎么请假”变成“2026年最新的员工病假申请流程是什么?”
  • 变体:同时生成几个不同问法的问题(比如“病假流程”、“请假规定”),一起去检索,保证不漏掉任何相关文档。
  • 省钱小技巧:这一步只在开始时做一次,避免在后续循环中重复调用,节省 Token 成本。

2. 语义缓存:让高频问题“秒回”

如果昨天刚有人问过一模一样的问题,并且当时的回答很完美,为什么还要重新跑一遍复杂的流程呢?
在查询增强后,系统会立刻去语义缓存里瞄一眼。

  • 命中了? 直接返回之前的优质答案,响应速度提升十倍不止!
  • 没命中? 没关系,继续往下走。这对于热门问题(如“公司Wi-Fi密码”、“食堂开放时间”)特别有效。

3. Token 自适应压缩:给上下文“瘦身”

随着对话轮数增加,历史记录会越来越长,不仅费钱,还可能超过大模型的长度限制。
我们在拼接最终上下文前,会做一个智能检查:

  • 总字数超了吗? 如果超了,系统会自动把早期的对话记录“压缩”成简短的摘要,只保留最近几轮的详细对话。
  • 这样既保留了关键信息,又控制了成本,确保每次请求都在安全范围内。

压缩后要持久化到短期记忆容器里,如Redis、Mysql。

4. 工具调用与精排:像专家一样“挑重点”

普通的 RAG 是一次性把所有检索到的文档都塞给大模型,容易让模型“消化不良”。
在我们的架构里,检索变成了一个工具(Tool)

  1. 宽召回:先用向量搜索捞出一大堆相关文档(宁多勿漏)。
  2. 模型精排:再调用一次大模型,让它根据关键词和摘要,对这些文档进行相关性排序,只选出最核心的几篇。
  3. 决策权交给 AI:大模型可以根据增强后的上下文,自己决定是否需要调用这个检索工具,以及调用几次。

5. 答案验证:最后的“质检员”

这是防止“幻觉”的最后一道防线。利用 Spring AI 的 Interceptor(拦截器) 机制,在答案输出给用户之前,强行拦截下来进行检查:

  • 一致性检查:答案里的内容,在检索到的文档里真的有吗?
  • 完整性检查:用户问了三个子问题,答案都回答了吗?
  • 安全检查:有没有包含敏感词或不合规的内容?

如果验证不通过,系统会自动触发重新生成修正流程(当然,我们会设置最大重试次数,防止死循环)。只有通过了“质检”的答案,才会被展示给用户,并更新到语义缓存中,供下次使用。

6. 个性化闭环:记住你的喜好

对话结束后,工作还没完。系统会异步分析刚才的对话内容:

  • 用户是喜欢简洁的回答,还是详细的步骤?
  • 用户关注的是技术参数,还是业务流程?
    这些偏好会被提取出来,更新到**长期存储(User Profile)**中。下次这位用户再来提问时,这些画像数据会作为背景知识注入到“查询增强”阶段,让 AI 越用越懂你。

实现这么复杂的流程,如果用 Spring AI 可能很常见,但在 Java 生态里,Spring AI Alibaba 让这一切变得异常简单:

  • 原生支持:它提供了 HookInterceptor 等标准组件,上面的每一步都有对应的“积木”可以直接用。
  • 生态整合:无缝对接阿里云的大模型服务,企业级落地很简单。
  • Java 友好:对于庞大的 Java 开发者群体来说,它深度集成 Spring AI 生态,专为多智能体系统和工作流编排设计,不需要学习新的语言框架,用熟悉的 Spring Boot 就能构建顶级的 AI 应用。

这套混合 RAG Agent 架构,本质上是在模拟人类专家的工作流:

听懂问题 → 回忆经验 → 查阅资料 → 筛选重点 → 撰写答案 → 自我检查 → 总结经验

通过引入这些中间步骤,我们不仅解决了传统 RAG“查不准、答不对”的顽疾,还通过缓存和压缩机制控制了成本。更重要的是,基于 Spring AI Alibaba 的实现,让这套高性能架构能够轻松集成到现有的企业系统中。

具体的代码实现后续我会再发文章。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐