Ragent 是一个面向 Agentic RAG 演进的生产级 Java AI 应用平台,覆盖从文档入库到智能问答的完整链路。
概览
Ragent 是一个面向 Agentic RAG 演进的生产级 Java AI 应用平台,覆盖从文档入库到智能问答的完整链路。
README
后端程序员转型 AI 工程师的第一站
🚀 什么是 Ragent AI?
Ragent 是一个面向 Agentic RAG 演进的生产级 Java AI 应用平台,覆盖从文档入库到智能问答的完整链路。
- 混合检索:向量、关键词、知识图谱、联网搜索并行召回,支持去重、RRF 融合与 Rerank。
- 问题理解:支持查询词映射、问题重写与拆分、树形意图识别和多知识库路由。
- 模型与工具:支持模型档位、首包探测、熔断降级,以及 MCP 工具发现、提参与校验。
- 会话记忆:最近 N 轮消息结合持久化摘要,控制 Token 成本并保留关键上下文。
- 流量保护:Redis 公平排队与分布式并发控制,避免突发请求压垮模型服务。
- 知识闭环:提供可编排入库 Pipeline、远程刷新、回答溯源、用户反馈、Trace 和管理后台。
生产落地智能体会踩的坑,这里都有对应方案,一套经过真实场景锤炼的工程实践,系统补全 RAG / Agent / MCP 等知识,面试写进简历聊得起来。
🧭 快速导航
觉得不错?先点个 Star 收藏,所有链接都会在新标签页打开,不会离开本页 👇
| 链接 | 说明 | |
|---|---|---|
| 📖 | 官网文档 | Ragent AI 完整文档 |
| 🚀 | 在线体验 | 无需部署,直接体验 Ragent AI |
| ⚡ | 快速启动 | 本地搭建 Ragent AI 前后端项目 |
| 📝 | 简历怎么写 | 项目如何写到简历上 |
| 💡 | 为什么不用 Spring AI / LangChain4j | 技术选型的思考 |
🤝 贡献
Ragent AI 仍在持续迭代中,欢迎参与共建,一起把项目打磨得更好。 感谢各位亦菲、彦祖们对 Ragent AI 的贡献:
❤️ 赞助与支持
感谢以下伙伴对 Ragent AI 的支持!
💡 为什么学习 AI 项目
AI 这波浪潮,Java 程序员已经躲不过去了。
不管你现在做的是业务系统还是中间件,面试的时候多多少少都会被问到 AI 相关的东西。RAG 是什么?Agent 怎么实现?用过 MCP 吗?这些问题越来越高频。可以说,AI 已经从加分项变成了必答题。
但说实话,对于大多数应用层的开发者来说,去死磕大模型的微调、蒸馏、Transformer 原理,性价比并不高。真正实用的,是掌握 RAG 和 Agent 这些应用层的东西——能落地、能出活、面试也能聊得起来。
⚠️ RAG 常见误区
市面上打着 RAG 旗号的项目不少,但很多要么是玩具级 Demo,要么是概念包装。在学之前,先把这几个误区理清楚,避免踩坑。
常规 RAG 的流程如下:
🏗️ Ragent 核心设计
采用前后端分离的模块化单体架构,后端按职责分为四个 Maven 模块:
| 模块 | 职责 |
|---|---|
framework |
统一响应与异常、认证上下文、幂等、分布式 ID、MQ 适配、Trace 与 SSE 等通用基础能力 |
infra-ai |
Chat / Embedding / Rerank / VLM 模型客户端、模型档位、路由、首包探测、健康状态与降级 |
bootstrap |
RAG 问答、知识库、入库 Pipeline、意图树、检索、会话、审计及管理端 API |
mcp-server |
基于 MCP Java SDK 的独立工具服务,内置天气、票务、销售与联网搜索示例 |
这个分层不是为了炫技,而是把业务编排、AI 供应商差异和通用基础设施隔离开。切换模型、向量库或对象存储时,核心问答流程不需要跟着重写。
一次用户提问,在 Ragent AI 服务里经过的核心链路如下所示:
实际项目代码中,逻辑比图表上更加复杂。下图仅展示核心流程,落地过程中还涉及很多细节和优化。
✨ 项目质量怎么样?
这里的质量不靠一张架构图来证明,而是看代码边界、测试、故障处理和运维闭环是否真实存在。以下数据按当前仓库统计,代码行数包含注释和空行。
1. 规模与完整度
- 后端:4 个 Maven 模块,约 6.1 万行 Java 主代码、553 个主代码文件。
- 前端:约 2.75 万行代码、27 个页面级 TSX 文件。
- 数据与测试:22 张业务表、30 个 Java 测试文件、84 个
@Test测试点。
代码量本身不等于质量,但这些模块组成了数据进入系统—检索生成答案—展示证据—收集反馈—追踪与审计的完整业务闭环,不仅是简单的 API 示例。
2. 工程质量
- 模块边界:通用基础设施、AI 能力、RAG 业务和 MCP 服务相互隔离,替换模型或存储实现不会侵入问答编排。
- 配置防错:模型档位、候选能力和检索漏斗在启动阶段完成一致性校验,错误配置直接失败而不是静默降质。
- 并发治理:10 个专用线程池隔离负载,TTL 保证用户与 Trace 上下文跨线程传递。
- 关键路径测试:覆盖模型路由、检索预算、结果去重、会话摘要、入库 Pipeline 和 MCP。
- 工程约束:统一响应、错误码和异常处理,认证、幂等、线程安全 SSE 与 Spotless 格式化均已落到代码。
项目中大量应用并发线程,建议配合社群里的 oneThread 动态线程池框架 搭配学习收获更多。
3. 可扩展性
核心能力通过接口、注册表和配置隔离,新增实现可以复用现有编排、容错、日志和管理能力:
| 扩展维度 | 如何接入 | 接入后的效果 |
|---|---|---|
| 模型 | 实现 ChatClient / EmbeddingClient / RerankClient,加入模型候选配置 |
新供应商可进入模型档位与候选路由,复用首包探测、健康检查和熔断降级 |
| 存储 | 实现向量存取或 ObjectStorageClient,通过配置选择实现 |
可替换向量库或对象存储,知识入库与问答主流程保持不变 |
| 检索 | 实现 SearchChannel 或后处理器,注册为 Spring Bean 并设置顺序 |
新通道参与并行召回,新处理器可插入去重、融合、精排与富化链路 |
| 入库 | 实现 IngestionNode 或 DocumentFetcher,补充节点类型和配置 |
新处理步骤或文档来源进入 Pipeline,继续使用任务状态、节点日志和失败定位 |
| MCP | 暴露 MCP 工具规范,或在客户端配置外部 MCP Server | 工具可被远程发现,并复用参数提取、Schema 校验与调用流程 |
扩展的改动主要收敛在新实现和配置中,不必复制一套检索、会话或 Trace 主链路。
4. 生产级特性
这里的生产级特性指项目已经实现生产环境会遇到的关键机制,而不只是功能能跑:
| 特性 | 说明 |
|---|---|
| 流量保护 | Redis ZSET 公平排队,结合 Lua 原子抢占、过期信号量和 Pub/Sub 唤醒;支持进度、超时、取消与许可回收 |
| 模型容错 | 多候选模型自动切换,首包超时、空响应或异常时触发降级;三态熔断隔离故障节点 |
| 检索稳定性 | 多通道并行检索,单通道失败不影响主链;按召回、Rerank、TopK 分层控制检索规模 |
| 数据一致性 | RocketMQ 事务消息保障分块与删除任务可靠执行;关键操作支持幂等,远程刷新使用分布式锁和状态机 |
| 可观测与审计 | 记录 Trace Run / Node 的耗时、输入输出和异常;管理端提供趋势、详情及配置变更 Diff |
| 流式体验 | SSE 分事件输出思考、正文、来源和推荐问题;支持全局超时及客户端断开取消 |
| 会话与证据 | 最近 N 轮消息结合持久化摘要控制上下文;保存引用来源与 Grounding Chunk,支持原文预览、追问和反馈 |
| 安全基础 | Sa-Token 认证、数据归属校验、上传限流、参数校验和统一异常处理;敏感配置支持环境变量注入 |
5. 完整控制台
Ragent 提供覆盖普通用户与管理员用户的 React 控制台,不只是聊天页面,也把检索证据和运维入口暴露出来。
系统通过多轮 AI 辅助设计优化,在保证功能完整性的同时,提供更加现代化和友好的交互体验。
5.1 用户问答界面
用户访问 Ragent 首页后,可在输入框中直接输入问题发起问答,同时支持开启深度思考模式以获得更高质量的回答。
输入框下方提供示例问题标签,用户点击即可自动填充问题,方便快速体验系统能力。
- 支持自然语言输入
- 支持示例问题快速填充
- 支持深度思考模式
用户提交问题后,模型会实时生成回答结果,并提供良好的阅读体验:
- 支持 Markdown 格式渲染
- 支持图片内容展示
- 支持代码高亮显示
- 支持回答来源、原文预览和推荐追问
- 支持回答评价(点赞 / 点踩)
5.2 管理后台
管理员可以通过后台查看仪表盘,管理知识库与 Chunk、知识图谱、意图树、查询词映射、入库任务、示例问题、用户和系统设置,并查看 RAG Trace 与业务变更日志。
为了避免传统系统常见的毛坯界面体验,Ragent 的控制台经过多轮 AI 辅助设计与优化,逐步迭代完善,最终呈现出当前简洁、美观且实用的界面效果。
6. 和市面上项目的区别
Ragent 定位于 Java AI 应用的源码级工程参考,重点是完整链路、生产保障和二次开发能力。
| 对比维度 | 常见 RAG 教程 / Demo | Ragent |
|---|---|---|
| 项目定位 | 跑通检索与生成 | 完整 Java AI 应用 |
| 检索 | 单路向量 TopK | 向量 / 关键词 / 图谱 / 联网召回,RRF 融合与 Rerank |
| 问题理解 | 原问题直接检索 | 查询词映射、问题重写与拆分、树形意图和多知识库路由 |
| 模型调用 | 单模型直连 | 模型档位、首包探测与熔断降级 |
| 工具接入 | 以应用内函数调用为主 | MCP 协议、远程工具发现与 Schema 校验 |
| 知识入库 | 一次性脚本 | 可编排 Pipeline、节点日志、远程文档定时刷新 |
| 会话记忆 | 以近期消息拼接为主 | 最近 N 轮消息 + 持久化摘要 |
| 回答可信度 | 只展示答案 | 来源引用、原文预览与用户反馈 |
| 运行保障 | 基础日志 | 分布式限流、幂等、事务消息、Trace 与审计 |
| 二次开发 | 流程写死 | 模型、存储、检索、入库和 MCP 均提供扩展接口 |
| 管理能力 | 无或简单页面 | 完整用户端与管理后台 |
❓ 常见问题答疑
一句话:学完 Ragent,你既能跟面试官聊 RAG/Agent 的技术深度,也能证明自己的 Java 工程化水平。
🌟 为什么开源?
原因很简单:对项目质量足够自信。架构设计、代码实现、工程规范,每一行都经得起审视。好不好你 clone 下来自己看——目录结构、提交记录、注释规范,全是明牌。
如果屏幕前的亦菲/彦祖觉得项目还不错,点个 Star 支持一下,这是对开源作者最好的认可!
安装
This server does not publish a one-line install command.
Open the repository installation guide