说实话我最初是在 GitHub 上看到这个名为“ai-engineering-from-scratch”的仓库标题的。和很多同名的学习路线图项目不一样它没有上来就甩给你一张密密麻麻的技术图谱也没有一股脑塞给你几百个收藏夹吃灰链接而是刻意强调“from scratch”这条主线——从零开始不是从“Hello World”开始而是从一个能跑代码、会调参、看得懂训练日志的“AI 工程学习者”开始。在带过一些刚入行的同事、也回答过不少“怎么转 AI”的私信后我越发觉得这个标题里的两个词都很关键“AI Engineering”和“from scratch”。前者说明目标是做应用、做系统、解决真实业务问题而不是停留在推导公式和读论文后者则敲死了路径的起点默认你甚至可能连虚拟环境都没建过、没把模型真正跑通过一次。这个定位恰好是市面上大多数课程和教程的真空地带理论书只讲数学网课带你调包真正能把“数据清洗 → 训练 → 评估 → 部署 → 迭代”这条工程链路完整走一遍的资料其实非常少。所以这篇内容我就是想结合这个标题背后的意图好好拆一遍学 AI 工程到底在学什么、按什么顺序学、哪些环节会卡住人以及一个普通背景的人怎么用“从零开始”的心态走出一条能落地的路径。1. 为什么“从零开始做 AI 工程”是一个需要单独讨论的话题1.1 市面上的学习资料普遍缺失工程视角先聊一个很现实的问题。你去看那些高赞的 AI 学习路线图基本上是从微积分、线性代数、概率论开始的然后是吴恩达的机器学习课、花书、西瓜书接着自然是 PyTorch、Transformer 论文再往后就没了。把这条路走完你可能懂了很多理论但让你独立做一个“把 PDF 文档变成可问答的知识库”这种小系统你大概率会愣住文档怎么切嵌入模型用哪个向量库怎么选检索不准怎么调回答幻觉怎么控这些问题传统的教学路线根本没有覆盖。反过来如果你只刷各类 API 教程今天调一下大模型做聊天明天用现成框架搭个 demo很快会发现自己只是在“消费”AI而不是在“做”AI 工程。一旦遇到性能问题、成本问题、并发问题你没有任何手段去诊断和优化因为你不清楚底层在发生什么。“ai-engineering-from-scratch”这个标题所隐含的思路恰恰是走第三条路以工程落地为目标把理论中“够用”的部分挑出来把现代 AI 应用开发的真实链路数据处理、模型微调、检索增强、评估迭代、服务化部署串成一个可执行的路径。它不否定理论的重要性但它把理论放到了“被工程需求驱动”的位置上而不是让你先花两年打数学基础再考虑写代码。1.2 “从零开始”的合理边界到底在哪里需要先划定一个边界所谓“从零开始”并不是从“什么是二进制”开始也不是要求你先精通高数。它有一个很实际的起点——你至少写过一些代码最好熟悉 Python 的基本语法会用 pip 装包知道什么是命令行。如果这个基础还不具备那就先用一两周时间补齐 Python 基础反复练习循环、函数、类、列表推导式然后立刻进入工程实践而不是抱着语法书啃一个月。很多人卡住的第一道坎其实不是智商而是“完美主义式入门”。总觉得数学没学够、基础没打牢于是迟迟不敢碰真实项目。我的经验是AI 工程使用的数学绝大多数是“用的时候查一下就能懂”的程度你真正需要牢牢掌握的是以下几个点向量和矩阵的乘法知道形状怎么匹配这对理解神经网络的层与层之间的数据流动至关重要导数与梯度下降的基本思想知道参数是怎么被更新的这能帮你理解训练为什么慢、学习率为什么要调概率里的贝叶斯公式和最大似然估计的基本直觉因为大量模型损失函数的设计都源于它评估指标的含义比如准确率、召回率、F1、困惑度等因为你做的每一个模型都要在指标上见真章。这些知识点不需要你从第一性原理去证明只需要你建立正确的直觉然后投入到大量实践中去加深理解。从这个角度说”from scratch“的真正含义是把基础压缩到最小必要集然后从一个极简但完整的小项目开始一步一步做出一个又一个更大的闭环。这比什么都重要。2. 四个阶段逐层递进的 AI 工程能力模型2.1 第一阶段能跑通一个极简机器学习流程我始终认为AI 工程的第一课不是“什么是神经网络”而是“用 scikit-learn 完成一个完整的监督学习任务”。为什么因为它同时涵盖了 AI 工程中最核心的几个环节数据、特征、模型、评估。你可以选一个常规的数据集比如波士顿房价老掉牙但够用或者泰坦尼克号生存预测然后用 Pandas 读数据、查看缺失值、做简单的特征工程接着划分训练集和测试集用随机森林或逻辑回归训练最后用一个分类报告或均方误差来评估。把这个流程走完你对“模型只是流程中的一环”这句话会有切身体会。我在指导新人时会特别强调他们要在这一阶段建立三个习惯先看数据再看模型拿到一个任务先做探索性数据分析EDA看分布、看缺失、看异常值这决定了后面的上限一定要分训练集和测试集绝不在全体数据上训练再评估这是新手最容易犯的致命错误保留每次实验的记录哪怕只是最简单的一个表格记录数据版本、参数、评估结果因为 AI 工程的本质是“实验管理”而不是“写代码”。很多从理论学习入门的同学会觉得 scikit-learn 太简单、不够“前沿”想直接上手深度学习。但我要说的是传统机器学习里的数据清洗、特征处理、交叉验证、过拟合判断这些能力放到今天的 LLM 应用里全部通用而且正是区分“调包侠”和“工程师”的分水岭。在这个阶段你还可以培养自己阅读官方文档的习惯——sklearn 文档的规范程度后来在阅读 HuggingFace 文档时非常有帮助。2.2 第二阶段深度学习核心概念与最小实现有了传统机器学习的底子进入深度学习阶段就会顺畅很多。这时候你需要接触 PyTorch——我建议直接用 PyTorch而不是先学 TensorFlow理由很现实目前 AI 社区、HuggingFace 生态、LLM 相关工具链都深度绑定 PyTorch你的学习成本和后续迁移成本更低。这一阶段的重点不应该是一头扎进 Transformer 论文而是先学会 PyTorch 的核心抽象张量Tensor和自动求导autograd。很多人被复杂的模型结构吓住其实只要你理解了这两个东西神经网络对你来说就是“一堆张量运算 反向传播自动算梯度”剩下的就是不断堆叠层、选择激活函数、设计损失函数。我的建议是先用 Numpy 手写一个两层神经网络的前向传播和反向传播不用 PyTorch把“梯度”这件事彻底搞清楚。这个过程很磨人但值得。你会亲眼看到权重是怎么更新的、学习率过大过小分别是什么表现、梯度消失长什么样。有了这个手感再到 PyTorch 里改写成自动求导版本你会发现一切豁然开朗。之后再去看 ResNet、Transformer 的代码你就不容易头晕了。在这个阶段可以开始引入 GPU 的概念但你不需要立刻买一张昂贵的显卡。使用 Kaggle 的免费 GPU 或 Colab 的免费额度完成一个图像分类CIFAR-10或文本分类IMDb 评论情感分析的任务绰绰有余。关键是跑起来并且在训练过程中观察 loss 曲线的变化学会判断“欠拟合”还是“过拟合”以及各自的应对手段——加数据、调正则化、调 dropout、改模型复杂度等等。这些经验正是后续做任何模型调优的基础。2.3 第三阶段进入现代 LLM 应用开发的核心范式当你对深度学习有基本手感之后就可以大步迈进当前 AI 工程最活跃的领域以 LLM 为核心的应用开发。但请注意这个领域的变化速度非常快所以学习重点不在某个具体模型上而在于掌握几个稳定的“范式”。第一个范式是“预训练 微调”。你要理解像 GPT、Llama、Qwen 这些大模型在海量语料上完成了预训练学到的是语言的通用能力而 specific 业务需要的能力要靠微调来注入。微调又分成全量微调和高效微调比如 LoRA。作为工程学习者你应该先用 LoRA 对一个小模型比如 Qwen2.5-7B 或 Llama-3-8B做指令微调实验因为它在单张消费级显卡上就能跑得动。这个实验能让你直观地感受到“给模型注入特定技能”是如何发生的也让你理解为什么今天绝大多数公司会是“基座模型 微调”的组合。第二个范式是“检索增强生成RAG”。这是现在 AI 工程里最实用的技术栈把外部知识切块、向量化、存进向量数据库用户提问时先检索最相关的文本片段然后连问题带片段一起交给 LLM 生成回答。RAG 的精髓在于“让模型不依赖自己的记忆而是依赖检索到的证据”它直接解决了大模型的幻觉问题和知识时效瓶颈是几乎所有知识库问答、企业私有数据助手的底层架构。第三个范式是“Agent智能体”。如果说 RAG 让模型“有据可依”Agent 则让模型“有事可做”——通过工具调用function calling、任务规划、循环执行让 LLM 能够执行多步骤的复杂任务比如自主搜索资料、写代码、跑命令、总结结果。这个方向很新但它的基础能力要求解析模型输出、设计提示词、管理上下文、处理工具报错跟你在前两个阶段积累的经验是一脉相承的。我还想特别提醒一点不要一上来就去研究 Agent而是先花时间把 RAG 做扎实。因为 RAG 里的每个环节——文档解析、分块、嵌入、检索、重排、评估——都有很多工程细节这些细节的打磨决定了一个 demo 和一个生产级系统的差距。Agent 本质上是在一个可靠的知识检索和生成底座上再叠一层任务编排逻辑。基础不牢后面会非常痛苦。2.4 第四阶段从“能跑”到“好用”的工程化实践如果你已经能独立做出一个 RAG 问答系统或者微调出一个模型那么恭喜你已经跨过了“从零到一”的门槛。但“AI 工程”这四个字里分量最重的其实是“工程”这两个字。一个能在 Jupyter Notebook 里跑的 demo和一个能上线服务几百个用户的系统中间隔着的就是工程化的能力。工程化至少包含这几个维度数据与实验管理你的训练数据、评估集、模型版本、prompt 版本都要有记录、可回溯。你可以用一个简单的 Git 仓库加实验记录表格起步等到项目复杂度上来再去了解 DVC、MLflow 这类工具提示词与评估系统化不要靠“感觉回答变好了”来判断效果而是要建一个小而精的评估集比如一百条有代表性的问题每次改动提示词或模型后在这一百条上评测算准确率、看 bad case像单元测试一样守护系统质量服务化部署把模型包成一个 API处理并发、控制显存、做推理加速。这一块可以从 FastAPI vLLM 开始理解流式输出、批处理、KV Cache 这些概念可观测性记录线上请求的输入输出、耗时、token 消耗、错误日志做一个简单的看板。没有监控你根本无法回答“模型今天是不是变笨了”这种老板最喜欢问的问题。这四个维度往往才是决定一个 AI 工程师真实水平的分界线。技术圈有个残酷的规律会写模型代码的人很多能在线上稳定运行并持续迭代的人很少。工程化就是把后者锤炼出来的过程。3. 实操从环境搭建到跑通一个端到端 RAG 项目3.1 环境搭建的常见坑与取舍很多教程的环境搭建步骤直接采用“装 Anaconda、把依赖往 yml 文件里一塞”的做法但我在带人实操时发现这一步反而是劝退率最高的。所以先用点篇幅聊聊环境管理。我自己当前的标准动作是用 miniconda不是完整的 Anaconda启动速度更快、更干净为每个项目建一个独立环境。用 Python 3.11 作为默认版本因为目前 PyTorch 和主流库的支持非常稳。创建一个 AI 工程初学环境只需要几条命令conda create -n ai-eng python3.11 conda activate ai-eng pip install ipykernel jupyter pandas numpy scikit-learn matplotlib pip install torch --index-url https://download.pytorch.org/whl/cu118 pip install transformers datasets accelerate huggingface_hub pip install chromadb langchain openai tiktoken安装 Torch 这件事有个常见坑默认 pip install torch 会装一个巨大的 CPU/GPU 通用包体积大且未必匹配你的显卡驱动。上面命令里指定了 CUDA 11.8 的 index URL算是当前的稳妥组合。如果你不确定自己的显卡驱动可以先在 Python 里跑一下torch.cuda.is_available()如果输出 False再回头补装对应 CUDA 版本的包。我这里建议的这套组合几乎覆盖了从传统机器学习到 LLM 微调、RAG 项目所需的全部基础工具。关于集成开发环境IDE如果你是零基础或从其他语言转过来最简单的选择是 VS Code Jupyter 扩展。Jupyter Notebook 很适合做数据探索和快速实验但一旦进入正式代码模块我建议马上切换到 .py 文件加调试器的模式因为工程化代码终究是靠脚本组织起来的不是靠来回手敲单元格。3.2 第一个端到端 RAG 项目的结构与关键决策等你环境装好我建议直接做一个小型但完整的端到端项目用几十篇公司内部技术文档或者你随便找的公开文档做一个“私有知识问答机器人”。这个项目麻雀虽小五脏俱全能把 RAG 的所有工程细节都练到。我把整体结构拆成六步第一步是文档加载与清洗。你用langchain_community.document_loaders里的 PyPDFLoader 或 DirectoryLoader 把文档读进来但一定要形成清洗意识去掉页眉页脚、处理乱码、合并被断行的段落。这一步的质量直接决定了后续分块和检索效果却最容易被忽略。我见过很多团队满心期待跑 RAG结果检索效果差源头其实是文档解析阶段埋的雷。第二步是分块Chunking。这是 RAG 里最需要实验的核心参数之一。分块太大检索到的是内容泛泛的大段落命中无用信息多分块太小语义不完整甚至把一句话切成了两半。我的经验是先从“按段落 固定窗口”的 hybrid 方式开始比如每块 400~800 token 且块间重叠 100~200 token然后在自己的评估集上比较不同参数的效果。还可以进一步尝试按 Markdown 标题结构分块让层级语义保留下来。这个环节你拿真实文档多试几次会很有体感。第三步是向量化与入库。嵌入模型的选择既可以从闭源 API 的接口入手也可以选用本地开源的bge-m3这类模型。我的建议是先本地用 bge-small 或 bge-m3 走通流程再评估要不要换成 API。你需要把文本块全部编码成向量写入向量数据库。向量库这一层轻量实验用 Chroma它是嵌入式、零运维适合本地跑通数据量大或上生产就考虑 Milvus 或 Qdrant。从 Chroma 迁移到生产向量库的成本并不高核心的向量检索概念是通用的。第四步是检索。最基础的做法是向量相似度 top-k比如 k5。但如果你想让效果上一个台阶就要立刻掌握“混合检索 重排”的组合先用 BM25稀疏关键词匹配和向量检索稠密语义匹配各拿一批候选做结果融合比如 Reciprocal Rank Fusion简单说就是把两路结果的名次倒数相加再排序然后送入一个重排序模型比如 bge-reranker-v2-m3精排最终只留分数最高的 3~5 个片段进入提示词。这个组合方案既是行业里的通用实践经验也是初学者能快速提升检索精度的最有效手段。实测下来同样一个知识库单路向量检索与“混合检索 重排”相比回答质量完全不在一个层级。第五步是生成。你要写一个清晰的提示词模板把 system prompt 里写明“你是一个严谨的助手只根据提供的上下文回答问题若上下文没有相关信息请直接说不知道。”然后把用户问题、检索到的上下文片段按一定格式拼进 prompt调用大模型接口生成。这里面的 token 管理、上下文窗口限制、输出解析都是工程细节。比如是否保留每个片段的来源链接让回答可溯源是否要求模型先做转述再回答以降低幻觉概率——这些微小设计会显著影响体验。第六步是评估我会单独拿出来详细说因为它太重要了。3.3 评估让 RAG 系统可度量、可迭代没有评估的 RAG 系统本质上就是一个“看起来能聊天的玩具”。你要构建一个最小评估集比如 50~100 条真实用户可能问的问题并为每个问题写好标准答案或至少标注“正确答案里应该包含那几个关键点”。这是投入产出比最高的一步。然后从三个维度来评估检索质量用命中率recallk即标准答案的关键点是否出现在检索返回的 top-k 片段中。这个指标直接反映分块和检索参数是否合理生成质量如果你有标准答案可以算 ROUGE-L 或 BLEU但它们对“意思对但措辞不同”的情况不够友好。因此更实用的方式是 LLM-as-judge用一个更强的模型给回答打分——相关性、忠实度、完整性每项 1~5 分。我在实践中的心得是让打分模型先输出“评判理由”再给出分数这样你不仅能拿到一个总分还能从理由里直接定位问题所在坏例分析把打分低于 3 分的 bad case 拉出来列出它们的共同模式。你会发现有的是分块切碎了关键信息有的是检索漏掉了核心文档有的是提示词约束太弱导致模型自由发挥。真正驱动 RAG 效果迭代的正是这几类坏例的反复修复。我在自己带的项目里每改一次分块参数或提示词都会在同一个评估集上重跑一遍分数。时间久了你就会养成“用数据说话而不是凭感觉”的 AI 工程习惯这个习惯贯穿整个职业生涯。4. 常见问题与排查实录那些让人卡住的地方4.1 “经典机器学习现在还有必要学吗”这是我被问过太多次的问题统一回答要学但不必求深。我的理由有三个。第一现代 AI 工程的很多核心概念——过拟合、正则化、交叉验证、特征工程——都是在经典机器学习里建立直觉最容易。深度学习只是把特征工程部分交给了网络自动完成但判断“模型是不是跑偏了”的思维方式是一模一样的。第二在真实业务里表格数据、风控规则、搜索排序等场景中XGBoost、LightGBM 树模型依然占据大量线上份额它们不是被淘汰的东西。第三经典模型极其轻量、解释性好非常适合作为 baseline帮你定位“深度学习到底带来了多少提升”。所以我的建议是把 scikit-learn 的主流模型和评估流程学扎实不需要抠证明过程但一定要亲手跑通几个任务。4.2 显存不够用怎么办很多初学者都会撞上“模型太大显存装不下”的墙。我的处理顺序是先明确几个现实选项优先使用云端的免费 GPU 环境比如 Kaggle 的 GPU每周 30 小时免费额度和 Colab 的免费 T4跑 LoRA 微调、推理实验完全足够如果预算允许可以考虑租用按小时计费的云 GPU比如 AutoDL 这类国内平台、或海外 RunPod/Modal几块钱一小时的价格就能玩到 24G 显存的显卡比买显卡划算非常多。个人真的不建议一上来就花大几千块钱买显卡AI 工程的学习周期里云端算力灵活得多。如果必须在本地也可以考虑从量化模型入手。比如模型精度从 FP16 降到 INT8 或 INT4用 bitsandbytes 或 GGUF 格式内存占用能直接砍半甚至更多。运行 Qwen2.5-7B 的 INT4 量化版你的“可用显存 内存”只要超过 8G 左右其实就可以流畅推理。这里值得说的一个关键点是量化并不是“降智”的代名词对大多数生成任务成熟量化方案带来的质量损失很小而你换来的是能把模型真的跑起来的可行性。4.3 RAG 检索效果差的排查清单检索不准是 RAG 系统最常见也最让人头疼的状态。我整理了一份排查顺序先回到源头看文档切块。如果一句话被拦腰截断或者语义相关的段落被分到了两个不同的片里检索效果必然打折。优先调整分块策略加大重叠、按标题结构化切分都是有效手段。其次是看嵌入模型是否匹配语境——通用领域的英文文档用默认模型也许没问题但如果是中文技术文档换成 bge-m3 或同类的中文优化模型差别往往立竿见影。第三检查 query 与文档的语言是否一致、关键词是否偏差。用户口语化提问而库里是技术术语导致没召回这时候可以做查询改写先用一个轻量模型把用户问题转成更规范的表述然后再去检索。第四检视重排是否已经用上。如果现在还是单路 top-k 直出那提升空间基本是确定性的——加上混合检索和重排精度立刻上一个台阶。排查时要有一个核心心态RAG 的效果不是“调参玄学”而是每一环都有具体原因。问题多从数据侧找答案别一上来就怀疑模型能力。4.4 学习过程中的心理卡点与坚持策略最后聊一个非技术但真实存在的拦路虎在学习 AI 工程的过程中人很容易陷入焦虑和自我怀疑。GitHub 上随便翻一个人家的项目都觉得很厉害群里交流的话题总感觉自己错过了无数新名词。这种“被落下的感觉”会在某一刻突然压垮动力。我自己亲身经历过也陪不少人走通过这个阶段。我想告诉你的经验是对抗焦虑最有效的办法不是“学更多”而是“把某一个东西彻底做透”。与其同时刷十篇 Agent 的技术文章不如把一个 RAG 系统从头到尾做通透评估指标优化两轮再把它部署出来。做完一个完整闭环的信心比收藏一百份学习资料有用得多。另外一定要控制信息输入源和节奏关注少数几个高质量的信息来源就可以把省下来的精力花在调试代码和跑实验上。在 AI 工程这个领域刷一百个教程带来的提升常常不如坐下来 debug 一个报错来的大。这个领域最大的特点就是变化快而“从零开始”的人有一个别人不具备的优势你从一开始就在适应变化而不是守着旧路线不放手。所以不要被新名词吓住把基础做扎实你完全可以在需要时快速学会任何新东西。
阅读完成 · 觉得有帮助?