点赞 评论

相关推荐

头像
03-05 16:52
已编辑
北京邮电大学 Java
最近做了一个企业级 RAG 智能体项目 Ragent,基于 SpringBoot 技术栈 + 手搓 RAG,完整开源了。不是 Demo 级别的调 API 玩具,是覆盖了 RAG 全链路的工程实现,分享出来给大家参考。GitHub:https://github.com/nageoffer/ragent为什么做这个项目现在面试越来越多地问 AI 相关的东西——RAG 怎么做的?Agent 怎么实现?MCP 了解吗?但市面上大部分 RAG 教程要么是 Python 生态,要么停留在调 API 跑通 Demo 的阶段,离真正能上线的系统差距很大。所以基于自己在公司实际落地 RAG 系统的经验,做了 Ragent 这个项目,把企业里真正会遇到的问题都实现了一遍。核心能力▪ 多路检索引擎:意图定向 + 全局向量双通道并行,检索结果经去重、重排序等后处理流水线。▪ 意图识别:树形意图分类体系,置信度不足时主动引导澄清。▪ 问题重写与拆分:多轮对话自动补全上下文,复杂问题拆分为子问题分别检索。▪ 会话记忆:滑动窗口 + 自动摘要压缩,控制 Token 成本的同时保留关键上下文。▪ 模型路由与容错:多模型候选、优先级调度、首包探测、三态熔断器、自动降级。▪ MCP 工具调用:知识检索与外部系统调用在同一流程中无缝融合。▪ 文档入库 ETL:基于节点编排,从解析、分块、向量化到写入 Milvus,每步可配置、有日志。▪ 全链路追踪:每次对话的重写、意图、检索、生成各环节都有 Trace 记录。技术栈后端:Java 17、Spring Boot 3、MyBatis Plus、Milvus 2.6、Redis + Redisson、RocketMQ 5.x、Apache Tika、Sa-Token前端:React 18、TypeScript、Vite代码量:后端约 4w 行,前端约 1.8w 行,20 张业务表,22 个前端页面。和 Demo 项目的主要区别▪ 检索方式:Demo 通常是单路向量检索,Ragent 是多通道并行 + 后处理流水线。▪ 意图识别:Demo 没有,Ragent 做了树形意图 + 歧义引导。▪ 模型调用:Demo 单模型挂了就挂了,Ragent 多候选路由 + 熔断降级。▪ 会话记忆:Demo 全量塞给模型,Ragent 滑动窗口 + 摘要压缩。▪ 可观测性:Demo 没有,Ragent 全链路 Trace。项目会持续迭代,感兴趣的同学可以 clone 下来跑一跑,有问题欢迎提 Issue 交流。
百特曼3:建议你面试的时候不要叫企业级随便问问用户量、产品竞争力、稳定性咋办,项目做了整条链路很不错的,别因为强调企业级搬起石头砸了自己的脚,可以强调做的内容;代码量也不要向面试官强调,放在前几年手搓代码的时候6万行代码还能拿出来打一打,可以强调用AI coding做了全栈开发之类的
AI项目实战
点赞 评论 收藏
分享
4月12号,腾讯二面。面试官问:"你简历上这个推荐系统,能详细讲讲吗?"我深吸口气,开始背准备好的答案:"这个推荐系统基于协同过滤算法,使用Spark处理大数据,Redis做缓存...""等等,"面试官打断我,"我没问技术。这个系统要解决什么问题?"我愣了:"就是给用户做推荐啊...""推荐什么?为了什么目标?提升DAU还是转化率?""应该是...提升活跃度..."我越说越没底气。面试官摘下眼镜:"你负责的部分,具体解决了什么问题?"我脑子一片空白,半天憋出一句:"处理用户行为数据..."沉默了十秒钟。面试官语气变淡:"好的,聊下一个问题。"那次面试不到25分钟就结束了。走出腾讯大楼,深圳的太阳晒得人发晕,我却浑身发冷。明明准备了很多次,为什么临场就是说不出来?晚上我把之前所有面试录音听了一遍,越听越不对劲。我发现自己每次回答都很"死板"——像在背课文,不是在交流。面试官问A我就背答案A,追问就卡壳。更可怕的是,我准备面试的方式有问题。我把网上的"高频面试题100道"全背下来了,但实际面试中,面试官问的往往不在这100道里。我这才意识到:我把面试当成了"考试",以为背好题就能过。但面试不是考试,是"对话"。周末我找在阿里的表哥做模拟面试。他按真实标准来问,把我"虐"得体无完肤。问题一:自我介绍没记忆点我按准备的版本说了两分钟。表哥打断:"你说这么多,我能记住你什么?""记住我名字?""不,我连名字都记不住。你的介绍就像念简历,毫无特点。"问题二:回答缺少结构表哥问我最有挑战的项目,我想到哪说到哪。他再次打断:"你说了一分钟,全是碎片信息。能不能用清晰的结构讲?"我试了几次,根本不知道怎么"有结构地"讲。问题三:遇到不会的就慌表哥突然问:"如果让你设计秒杀系统,怎么做?"我脑子空白:"我没做过...""没做过不代表不能想。"但我就是不知道怎么应对。问题四:数据模糊,没说服力"你那个系统上线后效果怎么样?""挺好的,很稳定。""什么叫'挺好'?能量化吗?""这个...没太关注数据..."表哥摇头:"面试官最烦这种模糊表达。'挺好''不错'没有任何信息量。"模拟面试后,表哥总结:"你的问题不是准备不够,而是方向错了。你在准备'答案',但面试官要看'思考过程'。"我彻底推翻了之前的准备方式,重新设计了清单:准备一:重构自我介绍用"标签+故事+钩子"替代流水账。"我是XX,您可以理解为'用数据驱动决策的后端工程师'。去年实习时发现订单系统会崩溃,我主动提出异步处理方案,把处理时间从5秒降到800ms,支撑618零故障。这让我对高并发优化有了深入理解。看到贵司在做XX业务,特别想知道你们怎么处理的?"准备二:用"STAR+思考"讲项目不只讲过程,更要讲思考。S(情境)- 要有冲突:"大促前一周系统会崩,不解决肯定出事"T(任务)- 目标明确:"一周内把并发从1000提升到5000 QPS"A(行动)- 分层讲述:"分三步:定位瓶颈、优化方案、压测验证"R(结果)- 数据+收获:"最终支撑8000 QPS零故障,让我明白要建立常态化监控"准备三:针对JD定制提取JD关键词,找简历上最匹配的2-3个项目,把80%时间花在这些项目上。设计"引导话术",主动提及这些项目。准备四:模拟实战找人做真实模拟,录音回听找问题,每个问题限时2-3分钟练习。改变方式后,我投了字节。二面时用新框架讲项目,面试官听得很认真,还不时点头。他问:"如果并发再大10倍怎么处理?"以前我会慌,这次我先理清思路:"可以从三个层面考虑:架构层面做服务拆分,技术层面用Redis集群+限流,业务层面用排队削峰。具体选哪个要看场景,紧急情况我会优先限流+缓存,因为改动小见效快。"面试官说:"你思路挺清晰的,思维方式和我们团队挺match。"一周后拿到了offer。准备时我用了AiCV简历王,能根据JD生成针对性面试题,模拟真实场景,帮我发现了很多没注意到的问题。总结一下:面试的本质不是证明你多完美,而是让面试官看到你的思考、潜力、真诚。三个建议:准备"思考"不是"答案"——每个项目花1-2小时深度复盘用"故事"不是"陈述"——有场景有冲突有解决过程针对JD靶向准备——提取关键词,重点准备匹配项目
牛马人的牛马人生:提取关键词 才能有后续
查看10道真题和解析
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务