入门之后,就别再长时间靠视频学项目了,否则你会发现自己的工程能力提升很慢。养成通过文档、源码和注释就能上手的习惯,对参加工作后快速融入团队帮助很大。看完视频什么也记不住,是因为视频不太适合深入学习一个项目:你很难把项目源码、教程和面试题结合起来。

这篇就来介绍 RAG-Agent 的学习方案。

第一步,先当用户,把项目跑起来。这是最最重要、也是最有成就感的一步。在分析任何代码之前,你必须先让它在自己的电脑上成为一个活生生的应用。仔细阅读前置环境搭建教程:https://paicoding.com/column/10/4

工程篇的教程会介绍需要安装哪些基础软件(JDK、Maven、Node.js、Docker),以及如何一键启动项目依赖的中间件(比如 Kafka、MinIO、MySQL、ElasticSearch、Redis 等),也包括 embedding 和 llm 模型的 API 接入。教程里还有前端启动说明,也可以直接使用 Docker 一键跑起来:https://paicoding.com/

Go 版本的 Docker 搭建过程 https://paicoding.com/column/10/29

第二步,把你认可或者喜欢的内容抄到简历上
主要看这个教程 https://paicoding.com/column/10/2

Go版本看这个帖子: https://paicoding.com/column/10/30
这一步对于想要突击学习、准备日常实习或秋招的同学非常重要。
不要一上来就想要把项目全部吃透,也不要想什么从 0 到 1 构建项目,实际工作中压根没有这样的场景。
第三步,针对简历上写的内容,开始深入学习源码和背诵面试题
比如说你写了:
利用 Elasticsearch + IK 分词器对
知识库文档进行索引和向量检索,支持 Word、PDF 和 TXT 等多种文本类型;并集成豆包 Embedding 模型进行文本到向量的转换,支持 2048 维;再结合 ES 的 KNN 向量召回、关键词过滤和 BM25 重排序实现「关键词+语义」 的双引擎搜索。
那就重点关注这部分教程,比如 RAG 知识库检索模块设计方案:https://paicoding.com/column/10/15

最好结合源码一起看,相关内容主要在 HybridSearchService 混合检索这一部分。

怎么手搓代码?方法很简单:看完这个方法和教程后,把方法主体删掉,自己实现一遍,看看能不能完成?
切忌眼高手低(dog dog,没别的意思哈,你很棒,你一定能实现的)。
如果想提升自己的工程能力,建议认真去跑一下项目,会有 bug 的,尝试自己发现问题、修正问题,这也算是一种写代码的方式。全身心投入,切忌浮在表面,什么我要从 0 到 1 实现,我自己要一步步,一行一行代码敲。
实际工作后真没这种场景,切实的方法就是按照我说的去做,你一定会大有收获。
在这个阶段,最好找一个趁手的 AI 助手,比如 Qoder、lingma 插件、TRAE 或 Claude Code。

找到关键类或方法后,不要只让它总结,也可以提出更具体的问题。比如,针对文件上传,可以这样问:
请解释一下 UploadController 的 mergeFile 方法做了什么?它为什么要使用 executeInTransaction ?
FileProcessingConsumer 里的 DefaultErrorHandler 是如何实现重试和死信队列的?请结合 KafkaConfig.java 解释。
- 请画出从 UploadController 发送Kafka消息到 FileProcessingConsumer 处理完成的序列图。
面试题这部分很重要。如果你对源码理解得还不透彻也没关系,只要能把面试题梳理清楚、表达清楚,就很牛逼了。
记住这一点, 不要追求细节,能和面试官掰扯,才是最核心的目的。
第四步,动手调试,能 debug 最好,能增加功能、改 bug 最好。
光看学不会游泳;上手实操对提升工程能力非常重要。
①、设置断点 :比如,在 UploadController 的 mergeFile 方法入口、 FileProcessingConsumer 的 @KafkaListener 方法入口。
②、单步执行 :上传一个文件,当程序停在你的断点时,一行一行地看代码是如何执行的。
③、观察变量 :在调试过程中,关注关键变量的变化。比如,看看 FileProcessingTask 对象里包含了哪些信息?看看从MinIO下载下来的文件流是什么样的?
当你对主要的流程了如指掌后,就可以尝试动一动项目了,比如说改一些你发现的 bug,增加一些功能点等。
比如说尝试修改一个日志输出的文字,或者修改一个返回给前端的提示信息。重新编译、运行,看看你的修改是否生效。
比如,在文件处理成功后,除了记录日志,再额外发一封邮件(模拟即可,打印一行日志就行)。
尝试自己修改发现的 bug,是提升工程能力的好方法。
第五步,总结归纳,沉淀知识库
假如你对自己还有更高的要求,那么你可以输出,沉淀。
比如 Kafka 的安装踩坑、环境配置问题等经验,都可以记录下来作为自己的知识沉淀。
如果在面试中遇到自己答不上来的问题,也可以把面试题整理出来,和大家分享学习项目中的点点滴滴,也算是记录自己的成长。
以上,可以套用到任何一个项目的学习上。
绝对能让你的学习效率翻倍,快速搞定一个项目去参加面试。
这样准备面试也会更有底气,省时、省力、省心。
希望大家都能学有所成。