news 2026/4/30 9:34:54

SpringAI实现AI Agent

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SpringAI实现AI Agent

基于Spring AI的AI Agent应用demo地址:https://github.com/q644266189/aiagentdemo

项目核心模块

模块/功能核心能力描述
AgentCore核心编排器负责意图识别、记忆管理与大模型调用,协调各模块运行。
ChatMemory对话记忆管理,支持三层上下文压缩:摘要压缩 → Assistant裁剪 → 滑动窗口。
Tool (Function Calling)可插拔工具注册机制,通过InnerTool统一接口注册,LLM自主决策调用工具。
RAG完整检索增强生成流水线:文档加载 → 分块 → 向量化 → 存储 → 多路召回(语义+BM25+查询改写)→ RRF融合 → 重排 → LLM生成。
Command & SkillMarkdown驱动的Prompt模板机制:Command由用户主动触发,Skill作为Tool由LLM决策调用。
SubAgent拥有独立记忆的子代理,支持内部SubAgent和外部IdeaLab Agent两种形态。
MCP双向MCP支持:作为Client动态连接外部MCP服务,或作为Server对外暴露服务。

1.ChatMemory 对话记忆(会话压缩)实现

三层递进上下文压缩策略(防 Token 溢出 / 成本失控)
第一层:摘要压缩(智能压缩,优先触发)
触发条件:历史消息 > 16 条
执行逻辑:自动用 LLM 将早期消息总结为300 字内摘要,注入 system prompt,原消息移除
核心设计
内聚透明:压缩逻辑封装,调用方无感知
增量压缩:旧摘要 + 新对话合并总结,避免信息丢失
TOOL 消息保护:截断自动避开 TOOL 消息,保证工具调用上下文完整
第二层:Assistant 消息裁剪(精准裁剪,持续生效)
规则:仅保留最近 3 条LLM 回复
优势:LLM 回复占 Token 多,精准裁剪大幅减少上下文体积
第三层:滑动窗口(兜底保护,最后防线)
规则:消息总数 > maxRounds×4 时,直接丢弃最早消息
作用:硬性限制上下文大小,防止无限增长
三层协同逻辑
摘要压缩(保信息)→ Assistant 裁剪(省 Token)→ 滑动窗口(硬保护)

2.RAG 模块:检索增强生成

一、RAG 整体流程(总览)

文档分块 → 向量入库 → 用户提问 → 多路召回 → RRF 融合 → Rerank 重排 → 拼接上下文 → 交给 LLM 回答

二、分步详细流程

  1. 文档预处理:分块(决定检索质量)
    使用递归语义分块 TextSplitter(默认)
    规则:500 字符 / 块,重叠 50 字符
    目标:保证语义完整,不破坏段落逻辑
  2. 向量存储
    用 EmbeddingModel 生成文本向量
    存入内存 VectorStore(生产可换 Milvus/Pinecone)
    支持余弦相似度检索
  3. 用户发起查询
    输入用户问题 question
  4. 多路召回(粗检索,求全)
    同时启动 3 路召回,每路取若干候选,汇总成候选池:
    SemanticRecaller 语义召回:向量相似度,懂语义
    Bm25Recaller 关键词召回:BM25 算法,精准匹配
    QueryRewriteRecaller 查询改写召回:把问题转 3 种说法再检索,扩大覆盖
    → 输出:9 个候选文档
  5. RRF 融合(多路结果合并)
    对 3 路结果用 RRF 倒数排名融合
    不看原始分数,只看排名
    合并、去重、重新排序
    输出:排序后的候选集
  6. Rerank 重排(精检索,求精)
    将 9 个候选送入 LLM 重排模型
    按问题相关性重新精准打分
    取 TOP3 最相关文档
  7. 构建上下文
    把 TOP3 文档按格式拼接:
    【参考资料1】【参考资料2】【参考资料3】
    返回干净的上下文字符串
    供 LLM 基于事实回答

三、核心技术串讲

多路召回:向量 + BM25 + 查询改写,互补盲区
RRF 融合:按倒数排名合并多路结果
Rerank:精排提升相关性,只留最有用的 3 条
BM25:关键词匹配召回
TextSplitter:递归语义分块
Embedding + VectorStore:向量检索

四、超精简流程

文档先分块、转向量入库;用户提问后,走三路召回 + RRF 融合,再经 Rerank 取 TOP3,最后拼接成上下文给大模型生成答案。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 9:33:05

YOLO数据增强中的颜色抖动技术:原理、实现与工程实践深度解析

引言:颜色抖动——连接有限数据与无限视觉世界的桥梁 在深度学习驱动的目标检测领域,YOLO(You Only Look Once)系列模型以其卓越的实时性和精度平衡而著称。然而,模型的最终性能不仅取决于其精巧的网络架构,更依赖于训练数据的质量与多样性。颜色抖动(Color Jittering)…

作者头像 李华
网站建设 2026/4/30 9:33:02

GetBox-PyMOL-Plugin:分子对接盒子计算的终极完整指南

GetBox-PyMOL-Plugin:分子对接盒子计算的终极完整指南 【免费下载链接】GetBox-PyMOL-Plugin A PyMOL Plugin for calculating docking box for LeDock, AutoDock and AutoDock Vina. 项目地址: https://gitcode.com/gh_mirrors/ge/GetBox-PyMOL-Plugin 在分…

作者头像 李华
网站建设 2026/4/30 9:32:27

终极解密指南:qmcdump轻松解锁QQ音乐加密文件

终极解密指南:qmcdump轻松解锁QQ音乐加密文件 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 你是否曾经下载…

作者头像 李华
网站建设 2026/4/30 9:26:01

MyTV-Android:一款为Android电视和移动设备打造的高性能开源直播软件

MyTV-Android:一款为Android电视和移动设备打造的高性能开源直播软件 【免费下载链接】mytv-android 使用Android原生开发的电视直播软件 项目地址: https://gitcode.com/gh_mirrors/myt/mytv-android 寻找一款能在Android电视、手机和平板上流畅播放电视直播…

作者头像 李华