转行AI应用开发前,先搞懂RAG与Agent这些核心概念
1. 为什么我劝你先别急着做项目
1.1 一个让我踩了三个月坑的真实经历
去年这个时候,我跟大多数转行做 AI 应用开发的人一样,热血上头。刷了几篇讲 RAG 和 Agent 的文章,看了两个 LangChain 的入门视频,脑子里立刻冒出一堆“我要做个知识库问答”“我要做个能自动干活的智能体”的想法。当天晚上就建了仓库,第二天开始拉代码,第三天已经在调 OpenAI 的接口了。
结果呢?三个月过去,项目文件夹里躺着四个半成品。第一个 RAG 知识库,检索出来的东西驴唇不对马嘴;第二个 Agent,工具调用十次有八次报错;第三个想做个多轮对话的客服助手,上下文一长就胡言乱语;第四个干脆连环境都没跑通,卡在依赖冲突上。
我后来复盘,发现问题根本不在技术难度上,而在于我跳过了所有“地基”环节,直接去盖楼。AI 应用开发这件事,表面上看起来门槛很低——会调 API 就能做,但真正决定你能不能做出一个可用产品的,是那些看起来“不像是做项目”的准备工作。
所以这篇内容,我想把话说得直白一点:如果你刚打算转 AI 应用开发,先别急着动手做项目。先把下面这些东西搞清楚,比闷头写代码有用得多。
1.2 这篇文章适合谁看
我把话说在前面,这篇内容不是给已经做过三五个 AI 应用的老手看的,而是给下面这几类人:
- 有编程基础,但对 AI 应用开发还停留在“听说过 RAG、Agent、LangChain”阶段的开发者;
- 想从传统前后端、数据分析、算法工程等方向转到 AI 应用层的同学;
- 已经动手做过一两个 demo,但发现做出来的东西“能跑但没法用”的人;
- 正在纠结要不要报班、要不要买课、要不要跟着某个教程一步步抄的人。
如果你属于上面任何一类,那接下来的内容应该能帮你省下至少一两个月的弯路。我不会给你画大饼,也不会告诉你“三天精通 AI 应用开发”,我只讲那些我自己踩过、也看到别人反复踩的坑,以及我后来总结出来的、真正有用的准备路径。
1.3 先搞清楚:AI 应用开发到底在做什么
很多人对AI 应用开发的理解是“调用大模型 API 做个聊天界面”。这个理解不能说错,但太窄了。真实的 AI 应用开发,核心工作其实是三件事:
第一件是把非结构化的信息变成模型能用的上下文。这就是 RAG(检索增强生成)要解决的问题。你的知识库可能是 PDF、Word、网页、数据库,模型本身不知道这些内容,你得想办法把它们切好、存好、在需要的时候准确地捞出来。
第二件是让模型不只是回答问题,还能采取行动。这就是 Agent(智能体)的方向。模型可以调用工具、查数据库、发请求、操作文件,甚至自己规划多步任务。ReAct 模式就是其中一种经典的“思考-行动-观察”循环。
第三件是把上面两件事工程化、产品化。包括怎么管理 prompt、怎么控制成本、怎么处理并发、怎么做评测、怎么监控线上表现。这部分最不性感,但最决定生死。
你看,这三件事没有一件是“学会某个框架”就能搞定的。LangChain 只是工具,RAG 和 Agent 是模式,真正难的是理解这些模式背后的原理,以及知道在什么场景下该用什么、不该用什么。
2. 转行前必须想清楚的三个问题
2.1 你是想做“AI 应用”还是想做“AI 研究”
这个问题听起来有点虚,但我见过太多人在这上面搞混,结果浪费大量时间。
AI 应用开发的核心是“用现成的模型能力解决具体问题”。你不需要训练模型,不需要懂反向传播,不需要读 Transformer 论文。你需要的是:理解模型的输入输出特性、知道怎么设计 prompt、知道怎么组织上下文、知道怎么把模型接入现有系统。
AI 研究的核心是“改进模型本身”。你需要懂数学、懂训练、懂微调、懂评测方法论。这条路门槛高得多,而且和大多数转行者的目标不匹配。
我见过一个做前端的哥们,转行第一件事是去啃《Attention Is All You Need》,啃了两周没啃明白,信心直接崩了。其实他根本不需要读那篇论文,他需要的是搞清楚怎么用 LangChain 把公司文档接进一个问答系统。
所以第一步,先问自己:我是想做出能用的东西,还是想搞明白模型原理?如果是前者,把论文放一放,先把工程链路跑通。
2.2 你的目标场景是什么
“我想做 AI 应用”这句话太模糊了。你得具体到场景,才能知道该学什么。
举个例子,如果你想做企业知识库问答,那你的核心是 RAG:文档解析、切分策略、向量化、检索排序、上下文组装。Agent 那一套你暂时可以不管。
如果你想做自动化工作流助手,那你的核心是 Agent:工具定义、任务规划、错误处理、多步执行。RAG 可能只是其中一个工具。
如果你想做内容生成工具,那你的核心是 prompt 工程和输出控制:模板设计、格式约束、批量处理、质量校验。
我自己的经验是,先选定一个具体场景,然后围绕这个场景去学。不要一上来就想着“我要把 RAG 和 Agent 都学会”,那样很容易什么都学一点、什么都做不出来。
2.3 你准备投入多少时间
这个问题很现实。AI 应用开发的知识面很宽,从文档处理到向量数据库,从 prompt 设计到并发控制,每一项都能深挖。如果你每天只能投入一两个小时,那你的学习路径必须做减法。
我的建议是:第一个月只做一件事。要么把 RAG 链路彻底跑通,要么把 Agent 的基本模式搞明白。不要同时开两条线。
具体来说,如果你选 RAG,第一个月的目标应该是:能把自己的一批文档(比如 100 个 PDF)做成一个能准确回答问题的知识库,并且能说清楚每个环节为什么这么设计。如果你选 Agent,第一个月的目标应该是:能做一个能调用三到五个工具、能处理多步任务的智能体,并且能说清楚 ReAct 循环是怎么运转的。
这个目标听起来不高,但真正做到“能说清楚每个环节为什么”,其实需要大量实践和踩坑。
3. 别急着写代码,先把这些概念吃透
3.1 RAG 不是“向量检索”这么简单
很多人对 RAG 的理解是:把文档切块、向量化、存进向量库、查询时检索最相似的块、塞给模型。这个流程没错,但只是最基础的版本。真实场景里,你会遇到一堆问题:
切分策略怎么定?按固定长度切,还是按语义切?切多大?重叠多少?我试过按 500 字切、重叠 50 字,结果发现对于技术文档,很多关键信息被切断了。后来改成按段落切、保留标题层级,检索质量明显提升。
检索出来不相关怎么办?纯向量检索有个问题:它找的是“语义相似”,不是“真正相关”。用户问“怎么配置超时时间”,向量检索可能返回一段讲“超时概念”的内容,而不是具体的配置代码。这时候就需要混合检索(向量 + 关键词)、重排序(rerank)、或者查询改写。
上下文塞不下怎么办?检索出十个块,每个块 500 字,加起来 5000 字,再加上系统 prompt 和对话历史,很容易超出模型上下文窗口。你得学会做上下文压缩、做优先级排序、做动态截断。
RAG 知识库能存储图片吗?这是热搜里出现的问题。答案是:可以,但不是直接存。你得把图片转成文字描述(用多模态模型),或者把图片和文字块关联起来,检索到文字块时把图片一起返回。纯向量库本身存的是向量,不是原始图片。
这些问题,你不实际做一遍,光看教程是体会不到的。所以我的建议是:先做一个最小可用的 RAG,然后不断用真实问题去测,测出问题再针对性优化。这个过程比看十篇教程都有用。
3.2 Agent 的核心不是“调用工具”,而是“决策循环”
Agent这个词现在被用得很泛。有人说 Agent 就是能调用工具的模型,有人说 Agent 就是能自主规划的系统。我的理解是:Agent 的核心是一个决策循环——模型观察当前状态,决定下一步做什么,执行动作,观察结果,再决定下一步,直到任务完成或失败。
这个循环最经典的实现就是ReAct(Reasoning + Acting)。它的基本流程是:
- 模型收到任务和可用工具列表;
- 模型输出“思考”(Thought)和“行动”(Action);
- 系统执行行动,得到“观察”(Observation);
- 把观察结果塞回上下文,模型继续思考;
- 重复直到模型输出“最终答案”。
听起来很简单,但实际做起来问题一大堆:
模型不按格式输出怎么办?你要求它输出Action: search,它可能输出“我打算搜索一下”。这时候你得做输出解析和容错。
工具调用失败了怎么办?模型可能传错参数、可能调用不存在的工具、可能陷入死循环。你得设计错误处理和最大步数限制。
多步任务怎么规划?简单任务模型能直接搞定,复杂任务它可能规划得乱七八糟。这时候可能需要引入任务分解、子目标管理、甚至多 Agent 协作。
Agent 怎么扛并发?这是热搜里的问题。单个 Agent 跑一次可能几秒到几十秒,如果要支持多用户同时用,你得考虑异步、队列、超时控制、资源隔离。这些工程问题,比 Agent 本身的逻辑更考验人。
我自己的体会是:Agent 的 demo 很容易做,但要做到“稳定可用”,需要大量的边界处理和测试。所以别急着做复杂的 Agent 项目,先把单步工具调用跑稳,再逐步加复杂度。
3.3 LangChain 是工具,不是答案
LangChain是现在最流行的 AI 应用开发框架之一,但它也是最容易被误用的框架之一。
我见过很多人学 LangChain 的方式是:把官方文档里的每个类都试一遍,把每个 chain 都跑一遍,然后觉得自己学会了。但真到做项目的时候,发现不知道该用哪个 chain、该怎么组合、该怎么调试。
问题在于:LangChain 提供的是抽象,而抽象会隐藏细节。你用一个RetrievalQAchain,看起来很简洁,但你不清楚它内部是怎么切分、怎么检索、怎么组装的。出了问题你也不知道从哪查。
我的建议是:先用原生方式实现一遍核心逻辑,再用 LangChain 重构。比如你先自己写一个 RAG:手动切文档、手动调 embedding 接口、手动做向量检索、手动拼 prompt。跑通之后,你再用 LangChain 的组件替换掉自己的实现。这样你既理解了原理,又学会了框架。
另外,LangChain 的版本更新很快,API 经常变。你跟着某个教程写的代码,可能过两个月就跑不通了。所以别把精力花在记 API 上,要花在理解模式上。
3.4 概念对照表:别被术语绕晕
| 术语 | 通俗解释 | 常见误区 |
|---|---|---|
| RAG | 先查资料再回答 | 以为只是向量检索 |
| Agent | 能自己决定下一步做什么的模型 | 以为就是调用工具 |
| ReAct | 思考-行动-观察的循环模式 | 以为必须用特定框架 |
| LangChain | 一套封装好的开发组件 | 以为学会它就等于会做 AI 应用 |
| 向量数据库 | 存向量、按相似度检索的库 | 以为它能存原始文档和图片 |
| Prompt 工程 | 设计模型输入以获得期望输出 | 以为就是写几句提示词 |
| 上下文窗口 | 模型一次能处理的 token 上限 | 以为越大越好,忽略成本和延迟 |
| 微调 | 用特定数据继续训练模型 | 以为微调能解决所有问题 |
这张表里的每一行,都值得你花时间去真正理解。不是背定义,而是知道它在实际项目里长什么样、会出什么问题、该怎么权衡。
4. 动手之前,先把环境和工具链理清楚
4.1 开发环境的最小配置
很多人卡在环境配置上,不是因为难,而是因为乱。我建议你把环境分成三层:
第一层是 Python 环境。用 conda 或 venv 建独立环境,别在系统 Python 里装一堆包。Python 版本建议 3.10 或 3.11,太新的版本有些库还不支持。
第二层是模型接入。你可以用云端 API,也可以用本地模型。云端 API 的好处是省事、效果好,坏处是要花钱、有网络依赖。本地模型的好处是免费、可控,坏处是效果差一些、需要显卡。我的建议是:开发阶段用云端 API 快速验证,部署阶段再考虑本地化。
第三层是数据存储。向量库可以用 Chroma(轻量、适合本地开发)、Milvus(适合生产)、Qdrant(性能和易用性平衡)。关系数据用 SQLite 或 PostgreSQL。文件存储用本地目录或对象存储。
这里有个坑:别一上来就上重型组件。我见过有人第一个项目就上 Milvus 集群、上 Kubernetes、上微服务,结果光环境就搭了一周,代码没写几行。先用最简单的方案跑通,遇到瓶颈再升级。
4.2 模型选型:别只看排行榜
选模型这件事,很多人只看排行榜,但排行榜上的第一名不一定适合你。你得考虑几个维度:
效果:在你的具体任务上表现如何。通用榜单只能参考,真正要看的是你的场景下的表现。
成本:按 token 计费的话,输入和输出价格可能不一样。长上下文场景下,成本会快速上升。
延迟:有些模型效果好但慢,不适合实时交互场景。
上下文窗口:决定了你一次能塞多少内容。但窗口大不代表好用,模型在超长上下文里的注意力会分散。
稳定性:API 的可用性、限流策略、错误率。
我的做法是:选两到三个候选模型,用同一批测试问题跑一遍,对比效果、成本、延迟,再决定用哪个。别迷信任何一个模型,也别只用一个模型,关键环节可以做模型路由。
4.3 向量化模型怎么选
RAG 场景下,embedding 模型的选择直接影响检索质量。几个考虑点:
语言支持:中文场景要选中文效果好的模型,不能直接用英文模型。
维度:维度越高,表达能力越强,但存储和计算成本也越高。常见的是 768 维、1024 维、1536 维。
速度:本地模型要考虑推理速度,API 模型要考虑调用延迟。
成本:有些 embedding API 是免费的,有些按量收费。
我试过几种方案:OpenAI 的 embedding 效果好但收费,BGE 系列本地模型免费且中文效果不错,还有一些开源的 multilingual 模型。实际选型时,建议用你的真实数据做一个小评测:准备 20 个问题,每个问题标注正确答案所在的文档块,然后看不同模型的召回率。
4.4 工具链清单:我实际在用的组合
| 环节 | 工具 | 说明 |
|---|---|---|
| 开发语言 | Python | 生态最全,库最多 |
| 模型接入 | OpenAI SDK / 兼容接口 | 统一接口,方便切换 |
| 编排框架 | LangChain / LlamaIndex | 按需选用,别过度依赖 |
| 向量库 | Chroma(开发)/ Qdrant(生产) | 轻量起步,按需升级 |
| 文档解析 | PyPDF / python-docx / BeautifulSoup | 按格式选 |
| 切分 | LangChain TextSplitter / 自写 | 按场景选策略 |
| 评测 | 自建测试集 + 人工评估 | 没有银弹,得自己建 |
| 监控 | LangSmith / 自建日志 | 开发阶段日志就够 |
这个清单不是标准答案,只是我自己用下来比较顺手的组合。你可以根据实际情况调整,但核心原则是:每个环节都要能替换、能调试、能观测。
5. 从零到一的实操路径:先做小,再做全
5.1 第一个项目:做一个能用的 RAG 问答
我建议你的第一个项目不要贪大,就做一个最简单的 RAG 问答。目标是把整条链路跑通,并且能说清楚每个环节。
第一步:准备数据。找一批你熟悉的文档,比如某个产品的说明书、某个技术框架的文档、或者你自己写的笔记。数量不用多,几十个文件就够。格式尽量统一,方便后续处理。
第二步:文档解析。把 PDF、Word、Markdown 解析成纯文本。这一步的坑在于:PDF 解析经常丢格式、丢表格、丢图片。如果文档里有表格,你可能需要专门的表格解析工具。如果文档里有图片,你得决定是忽略还是用多模态模型转成文字。
第三步:文本切分。这是最容易被忽视但最影响效果的一步。我的经验是:
- 按语义单元切,不要按固定长度硬切;
- 保留标题和层级信息,让每个块有上下文;
- 块大小控制在 300 到 800 字之间,具体看内容密度;
- 块之间保留一定重叠,避免关键信息被切断;
- 给每个块加上元数据(来源文件、章节、页码),方便追溯。
第四步:向量化与存储。调 embedding 接口,把每个块转成向量,存进向量库。注意批量处理,别一个块一个请求,那样太慢。
第五步:检索。用户提问时,把问题也向量化,然后在向量库里找最相似的 top-k 个块。k 取多少?我一般取 5 到 10,然后根据效果调整。
第六步:组装 prompt。把检索到的块拼成上下文,加上系统提示和用户问题,发给模型。这里要注意:上下文别太长,超了要截断;块之间要有分隔,让模型知道这是不同来源;要告诉模型“如果上下文里没有答案,就说不知道”。
第七步:测试与迭代。准备一批测试问题,看回答质量。哪些问题答错了?是检索没找到,还是找到了但模型没用?针对性地优化。
这个流程跑一遍,你对 RAG 的理解会比看十篇文章都深。
5.2 第二个项目:做一个能调用工具的 Agent
RAG 跑通之后,你可以开始尝试 Agent。同样,别贪大,先做一个能调用两三个工具的简单 Agent。
第一步:定义工具。工具就是模型可以调用的函数。比如“查天气”“搜网页”“查数据库”。每个工具要有清晰的名称、描述、参数定义。描述很重要,模型靠描述来决定什么时候用这个工具。
第二步:设计循环。用 ReAct 模式:模型输出思考和行动,你解析行动、执行工具、把结果塞回去,再让模型继续。循环要有最大步数限制,防止死循环。
第三步:处理输出解析。模型不一定按你要求的格式输出,你得做容错。比如它输出“Action: search”,你要能提取出“search”;它输出“我想搜索一下”,你要能识别出这是要调用搜索工具。
第四步:错误处理。工具可能失败,模型可能传错参数,网络可能超时。每一种错误都要有对应的处理策略:重试、降级、或者告诉模型“这个工具暂时不可用”。
第五步:测试。准备一批任务,看 Agent 能不能完成。哪些任务失败了?是规划错了,还是工具调用错了,还是结果理解错了?逐步优化。
我自己的经验是:Agent 的调试比 RAG 更麻烦,因为它的行为更不确定。所以一定要加日志,把每一步的思考、行动、观察都记下来,方便复盘。
5.3 关键参数的计算与选择
做 RAG 和 Agent 时,有几个参数你需要自己算、自己调:
切分块大小:假设你的文档平均每页 500 字,一个块想覆盖一个完整段落,那 300 到 500 字比较合适。如果文档是技术手册,每个操作步骤很短,那 200 字左右也行。没有标准答案,得试。
检索 top-k:k 太小,可能漏掉关键信息;k 太大,上下文太长、噪音太多。我一般从 5 开始试,看召回率和准确率的平衡。
上下文长度:模型窗口是 8k token 的话,系统 prompt 占 500,对话历史占 1000,那留给检索内容的只有 6500。按每个块 300 token 算,最多塞 20 个块。但实际不会塞满,一般 5 到 10 个块就够了。
温度参数:RAG 场景建议用低温度(0 到 0.3),让输出更稳定、更贴近检索内容。Agent 场景可以稍高一点(0.3 到 0.7),让模型有一定灵活性。
最大步数:Agent 循环的最大次数。简单任务 5 步够了,复杂任务可能要到 10 到 15 步。设太高容易死循环,设太低任务完不成。
这些参数没有万能值,你得根据你的场景、数据、模型来调。调参的过程本身就是理解系统的过程。
5.4 一个最小 RAG 的代码骨架
下面是一个最简 RAG 的代码结构,用伪代码表示,你可以根据实际用的库替换:
# 1. 加载文档 documents = load_documents("./docs") # 2. 切分 chunks = [] for doc in documents: chunks.extend(split_text(doc, chunk_size=500, overlap=50)) # 3. 向量化 vectors = embed_batch([chunk.text for chunk in chunks]) # 4. 存储 vector_store.add(vectors, chunks) # 5. 检索 def retrieve(query, top_k=5): query_vector = embed(query) results = vector_store.search(query_vector, top_k) return results # 6. 生成 def answer(query): chunks = retrieve(query) context = "\n\n".join([c.text for c in chunks]) prompt = f"根据以下内容回答问题:\n\n{context}\n\n问题:{query}" return llm.generate(prompt)这个骨架很简单,但每个环节都有优化空间。你可以先跑通这个版本,再逐步替换每个环节的实现。
6. 常见问题与排查技巧实录
6.1 RAG 检索不准,怎么排查
这是最常见的问题。排查思路是分环节定位:
先看检索结果。把检索到的块打印出来,看它们和问题是否相关。如果不相关,问题在检索环节;如果相关但模型没用,问题在生成环节。
检索不相关的原因:
- 切分不合理,关键信息被切断了;
- embedding 模型不适合你的语言或领域;
- 查询和文档的语义空间不匹配,需要查询改写;
- top-k 太小,漏掉了正确块。
生成没用检索内容的原因:
- prompt 没写清楚,模型不知道要用上下文;
- 上下文太长,模型注意力分散;
- 模型本身能力不够,指令遵循差。
我的做法是:先固定生成环节,用人工构造的完美上下文测试模型能不能答对。如果能,说明问题在检索;如果不能,说明问题在生成或 prompt。
6.2 Agent 陷入死循环怎么办
Agent 死循环的典型表现是:反复调用同一个工具、反复输出同样的思考、步数用完了还没结果。
原因一:工具返回的结果没有提供新信息。比如搜索工具返回空结果,模型不知道该怎么办,就再搜一次。解决办法是:在工具返回里明确告诉模型“没有找到结果,请尝试其他方法”。
原因二:模型没有正确理解任务。它可能把任务理解错了,一直在做无用功。解决办法是:优化任务描述,或者在循环里加入人工干预点。
原因三:缺少终止条件。模型不知道什么时候该停。解决办法是:在 prompt 里明确“如果已经得到答案,请输出 Final Answer”,并设置最大步数。
我的经验是:Agent 的 prompt 要比 RAG 的 prompt 更详细,要把循环规则、输出格式、终止条件都写清楚。别指望模型自己悟。
6.3 上下文超长怎么处理
上下文超长是 RAG 和 Agent 都会遇到的问题。几种处理策略:
截断:最简单,但可能丢掉关键信息。适合对话历史这种“越早越不重要”的场景。
摘要:把长内容压缩成短摘要。适合文档内容,但摘要本身可能丢信息。
检索式压缩:只保留和当前问题最相关的部分。适合多轮对话,每轮只取相关的历史。
分块处理:把长任务拆成多个子任务,每个子任务用独立的上下文。适合复杂 Agent 任务。
我一般组合使用:对话历史用摘要,检索内容用截断加排序,复杂任务用分块。
6.4 常见问题速查表
| 问题 | 可能原因 | 排查方向 |
|---|---|---|
| 检索结果不相关 | 切分/embedding/查询 | 打印检索结果,逐环节检查 |
| 模型不用检索内容 | prompt/上下文长度 | 用完美上下文测试模型 |
| Agent 死循环 | 工具反馈/任务描述/终止条件 | 加日志,看每步思考 |
| 上下文超长 | 检索太多/历史太长 | 截断、摘要、压缩 |
| 输出格式不对 | prompt 不清晰/模型能力 | 加格式示例,换模型 |
| 响应太慢 | 模型延迟/检索慢/串行调用 | 异步、缓存、并行 |
| 成本太高 | 上下文太长/调用太频繁 | 压缩上下文、缓存结果 |
| 并发扛不住 | 同步阻塞/资源竞争 | 异步、队列、限流 |
这张表可以贴在你的开发笔记里,遇到问题先对照排查。
6.5 几个我踩过的坑
坑一:过度依赖框架。我一开始用 LangChain 的 RetrievalQA,觉得很方便,但出了问题完全不知道从哪查。后来自己实现了一遍,才发现问题出在切分策略上。
坑二:忽视评测。我做了好几个版本,但一直没有系统的评测集,全靠感觉判断“好像好了一点”。后来建了一个 50 题的测试集,才发现有些改动其实是负优化。
坑三:prompt 写得太随意。我以为模型能理解我的意思,结果它经常跑偏。后来我把 prompt 当成代码来写,每个指令都明确、每个格式都给示例,效果稳定多了。
坑四:不考虑成本。我早期测试时,一个请求塞了几万 token 的上下文,跑了几次就花了不少钱。后来学会先压缩、再检索、最后才调模型。
坑五:不做错误处理。线上跑的时候,API 偶尔超时、工具偶尔失败,没有错误处理就直接崩了。后来加了重试、降级、超时控制,稳定性才上来。
这些坑,每一个都让我多花了一两周时间。如果你能提前避开,就能省下这些时间。
7. 学习路径建议:别贪多,按顺序来
7.1 第一个月:打基础,跑通一条链路
第一个月的目标不是做项目,而是理解核心概念和跑通最小链路。
第一周:理解 RAG 和 Agent 的基本原理。不用看论文,看几篇高质量的博客和官方文档就够了。重点是搞清楚每个环节在做什么、为什么这么做。
第二周:动手实现一个最小 RAG。用最简单的工具,别上框架。手动切分、手动向量化、手动检索、手动拼 prompt。跑通之后,用真实问题测试,记录问题。
第三周:优化 RAG。针对第二周发现的问题,逐个优化。切分不好就调切分,检索不准就调检索,prompt 不好就改 prompt。这个过程会让你对 RAG 的理解深很多。
第四周:实现一个最小 Agent。定义两三个工具,用 ReAct 模式跑通循环。重点理解模型是怎么决策的、工具是怎么调用的、错误是怎么处理的。
这一个月下来,你会有两个能跑的最小系统,以及一堆踩坑经验。这比看一个月视频有用得多。
7.2 第二个月:做深一个方向
第二个月,选一个方向做深。要么 RAG,要么 Agent,别两个都做。
如果选 RAG,可以深入这些方向:混合检索、重排序、查询改写、多路召回、上下文压缩、评测体系。
如果选 Agent,可以深入这些方向:多工具协作、任务规划、错误恢复、多 Agent 协作、并发控制、安全边界。
做深的意思是:不只是跑通,而是理解每个优化点的原理、效果、代价。比如重排序,你要知道它为什么能提升效果、增加多少延迟、在什么场景下值得用。
7.3 第三个月:做一个完整的小产品
第三个月,把前两个月学的东西整合起来,做一个完整的小产品。不用很大,但要完整:有输入、有处理、有输出、有错误处理、有日志、有简单的界面。
这个产品的价值不在于多厉害,而在于让你走完从开发到部署的全流程。你会遇到很多在 demo 阶段遇不到的问题:环境配置、依赖管理、性能优化、错误监控、用户反馈。
做完这个产品,你才算真正入门了 AI 应用开发。
7.4 学习资源怎么选
市面上的教程和课程很多,但质量参差不齐。我的建议是:
官方文档优先。LangChain、LlamaIndex、各家模型的文档都是最好的入门材料。虽然有时候写得不够通俗,但准确。
高质量博客次之。找那些有实际项目经验的作者写的博客,而不是纯理论科普。
视频教程谨慎选。很多视频教程为了通俗,会简化甚至曲解一些概念。看视频可以,但一定要配合文档验证。
别买太贵的课。AI 应用开发这个领域变化太快,很多课程的内容半年就过时了。与其花钱买课,不如花钱买 API 额度,自己动手试。
我自己的学习路径是:文档 + 动手 + 踩坑 + 复盘。没有捷径,但每一步都算数。
8. 一些掏心窝子的建议
8.1 别被“速成”忽悠
现在市面上有很多“三天精通 AI 应用开发”“一周做出 Agent 项目”的宣传。我不能说这些完全是假的,但它们隐藏了一个事实:能跑通 demo 和能做产品之间,隔着巨大的鸿沟。
我见过太多人跟着教程跑通了一个 demo,就觉得自己会了,然后去做项目,结果发现处处是坑。demo 是理想环境,项目是真实环境。真实环境里有脏数据、有边界情况、有性能要求、有成本约束。
所以我的建议是:把预期放低一点,把时间放长一点。三个月能入门就不错了,别想着速成。
8.2 别只学框架,要学模式
框架会变,模式不会。LangChain 的 API 可能明年就变了,但 RAG 的检索-生成模式、Agent 的决策循环模式,这些是稳定的。
所以学的时候,多问“这个框架在解决什么问题”“它背后的模式是什么”“如果不用这个框架我会怎么做”。把模式搞懂了,换任何框架都能快速上手。
8.3 别闭门造车,多看别人的项目
AI 应用开发这个领域,开源项目很多。多看别人的代码,能学到很多实战技巧。比如别人怎么切分文档、怎么设计 prompt、怎么处理错误、怎么组织代码。
我自己的很多优化思路,都是从别人的开源项目里学来的。看代码比看文章更直接,因为代码不会骗人。
8.4 别忘了工程能力
AI 应用开发,一半是 AI,一半是工程。很多人只关注 AI 那部分,忽视了工程能力。但真正决定产品能不能用的,往往是工程部分:错误处理、性能优化、并发控制、监控告警、部署运维。
所以如果你是从算法方向转过来的,补一补工程能力;如果你是从工程方向转过来的,补一补 AI 概念。两边都懂,才能做出好东西。
8.5 保持耐心,接受不确定性
AI 应用开发和传统软件开发最大的区别是:不确定性。模型可能今天表现好,明天表现差;同样的输入可能得到不同的输出;调了半天参数可能还不如不调。
这种不确定性会让人很挫败。但这就是这个领域的特点。你得学会接受它,学会用评测、日志、监控来管理它,而不是试图消除它。
我自己的心态是:把 AI 应用开发当成一个实验过程,每次改动都是一次实验,有成功有失败。失败了就复盘,成功了就固化。慢慢积累,系统会越来越稳。
最后说一句:转 AI 应用开发,技术只是一部分,更重要的是思维方式的转变。从确定性思维转向概率思维,从写代码转向设计系统,从追求完美转向快速迭代。这个转变不容易,但一旦完成,你会发现能做的事情多了很多。