AI工程实战指南:从机器学习到RAG大模型应用开发
1. AI工程到底是什么和传统机器学习工程有什么不同这几年AI工程这个词在技术圈里出现的频率越来越高但我发现很多人对它仍然只有一个模糊的印象觉得它就是个换皮的名字和原来的机器学习工程差不多。我自己在从零开始折腾这个方向的过程中感受其实很不一样。先说我理解的定义。AI工程AI Engineering在当下这个阶段尤其是大模型普及之后它关注的核心不再只是怎么把模型训练出来而是怎么把一个模型真正变成稳定的、可用的、能被业务场景调用的产品能力。传统的机器学习工程重点在数据处理、特征工程、模型训练、超参数调优、离线评估这一整套流程最终产物往往是一个模型文件加一套离线预测脚本。但AI工程面对的则是完全不同的挑战模型可能是一个上千亿参数的大模型你根本不可能去修改它的全部参数输入输出从结构化特征变成了自然语言评估标准也从单一的准确率变成了多个维度比如准确性、相关性、忠实度、鲁棒性、延迟甚至是安全性。拿一个实际场景举例。我最早做的机器学习项目是用户流失预测特征是用户登录频率、付费金额、最近活跃时间模型是XGBoost部署的时候导出一个模型文件起一个Flask接口预处理好特征往里一丢返回一个0到1之间的概率。整个过程里面模型是唯一的智能体其他都是外围脚手架。但现在做一个基于大模型的问答助手情况完全变了。大模型本身只是一个推理内核你需要给它配检索模块去拿到最新的知识需要给它配提示词模板去约束输出格式需要给它配权限管理去控制它能访问的数据还需要给它配评估模块去持续监控回答质量。模型只是流水线上的一道工序真正的工程重心转到了系统架构、数据流转、质量评估和成本控制上。这就是AI工程和传统ML工程最本质的区别传统ML工程是模型中心的AI工程是系统中心的。大模型更像是你要集成进来的一个复杂组件而你的核心工作是设计这个组件和周边环境的协作方式。这个转变是根本性的也是为什么很多有几年机器学习经验的人转过来做AI工程仍然会觉得从头学起的原因。另外一个值得说的点是AI工程的能力栈要求比传统ML工程宽很多。你不仅要懂模型怎么训练、怎么调优还要懂一点分布式系统、云原生部署、向量数据库、API设计、缓存策略、甚至前端交互逻辑。这个宽其实是很多人产生畏难情绪的地方但从零开始学的话反而是件好事——因为你的基础不需要一开始就非常深很多知识是边做项目边补的最后形成一个网状的能力结构。我自己就是从一条很窄的路线开始走的后面会详细说。2. 从零开始我的学习路线规划AI工程这个名字里面虽然带着AI两个字但我实际走下来觉得真正决定你是否能做好这个方向的知识反而有一半是工程层面的。所以我的学习路线大概分成了四个阶段每个阶段核心目标不一样投入的时间比重也在变化。2.1 第一阶段编程基础与Python必备能力Python是当前AI生态的首选语言这个大前提没有什么争议。但不建议直接去啃语法书我自己的方式是做一个小项目驱动比如爬一个公开数据源做清洗再用Flask写一个简单服务把数据展示出来。这个过程会把Python中比较关键的几个点都覆盖到列表与字典推导、异常处理、装饰器写Web服务的时候一定会碰到、生成器处理大文件非常有用和类的基本用法。其中生成器值得单独花点时间因为AI工程里经常要处理大规模数据流一次性加载到内存的做法在生成环境经常撑不住。到能比较顺畅地写100行以上的脚本时再去补一些和数据打交道的库Pandas、NumPy、PySpark。这些不是每时每刻都用到但AI工程面试和学习中都会频繁出现。拿Pandas来说你迟早会碰到需要做DataFrame合并、分组统计、处理缺失值的场景这个库就是绕不开的基础设施。我的建议是每天花半小时刷几道实际的数据处理题坚持两周基本就能覆盖大部分日常操作。这个阶段的目标不是让你变成Python高手而是让你能不卡壳地写完一个可运行的中小型脚本。判断标准很简单给你一个含脏数据的CSV文件你能否在半天内写一个清洗加统计的自动化脚本并输出结果如果能这个阶段就算合格了。2.2 第二阶段机器学习与深度学习基础很多人问我要不要先系统学机器学习理论我的答案是要但不用太深。你需要理解的核心概念包括监督学习与无监督学习的区别、偏差与方差、过拟合与正则化、交叉验证、梯度下降的基本原理、损失函数的设计思想。这些都是通识层面的不需要你去手推复杂的数学公式但要知道它们存在并且在解决什么问题。建议入门看吴恩达的机器学习课程经典且系统。但不要停留在只看课一定要同步做实践——任何一个算法在Scikit-Learn里跑一遍调几个参数观察效果变化这比读十遍公式有用得多。在线性回归、逻辑回归、决策树和随机森林这些经典模型上各跑一个迷你项目找找感觉。深度学习部分个人认为可以直接围绕PyTorch展开边用边学。从装环境开始到实现线性层、卷积层、循环神经网络的简单版本再到跑通一个图像分类或者文本分类的小任务分几步走。这里最关键的是理解张量Tensor的概念以及自动求导机制。PyTorch最方便的一点是你只需要定义好前向传播反向传播它会自动帮你算好注意力只需要放在模型结构和数据处理上就好。不过要提醒的是不要把大量时间花在从零手写神经网络的各种底层实现上。理解原理是为了更好地使用框架而不是为了重新造轮子。我从零手写过一个两层反向传播卡了将近一个星期收获确实有但性价比真的很低。如果让我重新规划我会用这个时间去多跑几个实际项目。2.3 第三阶段大模型与应用生态从这一阶段开始才算真正进入了AI工程的核心领域。你要关注的不再是如何从零训练一个大模型而是如何使用和集成已经存在的强大模型。但这个阶段的知识更新速度极快今天刚学的东西可能下个月就有更好的替代方案。我自己的经验是以官方文档为主线始终保持对几个核心工具链的熟悉程度。首先是把HuggingFace Transformers用熟。这个是当前开源模型生态的中枢BERT、GPT系列、Llama这些大模型都有现成的实现和权重你只需要学会怎么加载、怎么用pipeline做推理、怎么微调。其次要深入了解Prompt Engineering即提示词工程。这可能是AI工程中技术门槛最低但实际难度最高的技能——几行文字就能改变模型的输出风格和效果但缺乏一套系统的调试方法的话完全就是玄学。第三块就是LangChain这类编排框架它提供了大量现成的组件比如文档加载、分割、向量存储、检索、Agent工具调用等把多个模型和工具串联成一个完整应用。不过我的经验是不要一上来就依赖框架先用最原生的方式直接调用模型API 自己写检索逻辑跑通一个小项目理解每一个环节在干什么再去用框架。否则框架封装得太好全靠配置文件的拼接出了问题你根本不知道怎么排查连里面的关键参数调起来都抓瞎。2.4 第四阶段工程化实践与MLOps模型好不代表服务好用这是AI工程里最扎心的一句大实话。你花了两周微调好的模型如果无法稳定地承接线上请求无法监控线上效果变化无法在成本可控的情况下提供服务那它离交付还有十万八千里。这个阶段的重点就是补上所有从模型到服务的工程能力。一是模型部署与推理优化。需要掌握ONNX、TensorRT这些模型加速格式还需要了解量化int8、int4的基本原理以及在GPU显存受限时的权衡策略。二是服务化封装用FastAPI写推理接口算是标配能力重点关注请求校验、超时控制、并发处理和结果缓存。三是模型监控与评估不能只看离线指标上线后的延迟、吞吐、用户反馈甚至特定输入下模型表现的变化趋势都需要持续跟踪。四是版本管理与回归测试模型迭代不能像改代码那样直接上线因为效果变化往往不可控必须有完整的灰度发布与回滚流程。这四个阶段走下来我花了大概一年左右的时间。每周稳定投入十几个小时整体节奏还算从容。核心体会是每个阶段都要以一个实际可以跑起来的项目收尾逼自己把所有学到的知识落进代码里。AI工程最忌讳的就是光学不练因为很多问题只看书是完全想象不到的。3. 核心实践从零搭建一个具备完整工程能力的AI应用光讲理论没有用我分享一个我实际做过的完整项目一个基于本地文档的智能问答助手英文叫Document QA System。这个项目麻雀虽小五脏俱全基本上可以把AI工程涉及的大部分核心环节都覆盖到。3.1 需求界定与总体架构需求很简单给定一批PDF文档用户可以通过自然语言提问系统返回准确的回答并且回答必须引用文档中的具体片段不允许模型凭空编造。这个需求在AI工程领域是一个非常典型的场景底层就是检索增强生成即RAG。总体架构分为五个模块文档管理、索引构建、检索服务、生成服务和评估模块。文档管理负责PDF解析和清洗索引构建负责将文档切片、向量化并存入向量数据库检索服务根据用户的问题召回最相关的文档片段生成服务将检索结果和问题拼装成提示词后调大模型评估模块定期用一组测试题目评估检索和生成的综合效果。完整闭环的运行逻辑是批次导入文档增量构建索引线上处理查询定期跑评估更新阈值和提示词模板。我手绘架构图的时候会在每个模块之间标注数据格式和调用方式因为这是排查问题的基础。例如文档管理输出的是带元数据的结构化文本块检索服务接收的则是用户会话中的纯文本查询中间有没有格式转换差往往就是线上出问题的隐患。3.2 关键模块实现与参数选择文档切片是整个流程的第一个坎也是我认为最容易被低估的环节。切片大小直接影响检索效果如果切得太细一个完整的知识点被劈成两半检索结果语义不完整如果切得太粗切片内混合了多个话题与具体问题的相关性会被稀释。我最后用的策略是按语义段落优先切分保持每个切片在300到500个token之间并且允许相邻切片有大约50个token的重叠保证上下文衔接。向量化模型选择了BAAI/bge-large-zh-v1.5这是一个中文语料的嵌入模型在检索任务上表现不错而且对显存要求低中等配置的GPU即可。需要注意向量化模型和生成模型可以部署在不同的GPU上当客户端并发量增加时向量化和生成耗用的推理资源有明显的不同单独拆开调度会灵活很多。向量数据库我用的Milvus支持高频增量写入和实时检索并且可以用Docker快速部署一个单机版。检索时设置的是双路召回先用向量相似度检索Top 20再用BM25做关键词召回Top 10两种结果取并集后再做一次重排保证既理解语义匹配也能抓住精确关键词。生成环节使用的是vLLM部署的Qwen2.5-7B-Instruct这是一个参数量适中的开源模型在RAG场景下的回答质量扎实。提示词模板是反复调优过的核心要求是只基于【参考文档】内容作答不编造若文档没有答案则明确回答文档中未找到相关信息。这个模板看起来简单但实际影响很大加与不加模型在边界情况下的表现差别极其明显。3.3 部署架构与性能优化整个系统用Docker Compose编排包含五个服务API网关、检索服务、向量化服务、生成服务、向量数据库。API网关用FastAPI承载负责用户请求的路由和聚合检索服务用GRPC与向量数据库通信降低网络开销向量化服务和生成服务各自独立避免互相争抢GPU显存。我在做性能压测时发现最大的延迟瓶颈反而是文本切片和向量化阶段。最初直接对每篇文档实时解析和向量化并发上来后单次处理要5到8秒根本不可用。后面改成异步批量处理新上传的文档先进队列由后台任务批量解析和向量化入库完成后才标记为可检索状态。这样把用户等待时间缩短到几乎无感整体吞吐翻了接近三倍。另一个经验是推理服务的动态批处理。vLLM支持continuous batching可以在连续的推理请求之间动态合并计算。开启后在并发32路的压力下平均生成延迟依然能稳定在1秒以内吞吐表现相当不错。具体配置上我设置了--max-num-batched-tokens为4096--gpu-memory-utilization为0.85前者控制一次批量处理的token上限后者预留了一些显存给其他进程。3.4 评估与迭代这部分的含金量最高。我在项目一开始就手工标注了80道测试题目覆盖一般事实类、推理性、否定性、跨文档组合型四类问题。每次改动检索逻辑、切片策略或提示词模板都会用同一套题目重跑一遍用答案忠实度、检索命中率、答案相关性和答案完整性四个维度做对比评估。具体做法是先把模型回答存下来用一个大模型做裁判再人工抽样复核形成评估报告。这样做的价值远超预期有一版我调整了切片重叠大小从50变成120直觉上觉得上下文更连贯了应该是好事但评估报告显示检索命中率下降了近10%。原因分析下来是切片重叠太大文档块包含了太多前面内容的碎片导致向量表示被稀释关键词纯度反而下降。这个发现如果没有评估体系我根本不可能发现也只会在线上等用户反馈踩坑之后才追悔莫及。4. 常见问题与排查技巧实录AI工程实操中会遇到很多看起来莫名其妙的问题。我把自己踩过的坑整理出来每个都附上排查思路希望能帮你节省一些挣扎的时间。4.1 检索效果差明明文档里有答案却检索不出来这种情况大部分不是模型的问题而是切片或者向量化的参数不匹配。按我的排查顺次来第一确认切片是否完整覆盖了答案所在的段落用可视化工具把切片内容和原文对照看一遍第二确认查询词和答案用词是否语义差距大如果用户问价格而文档是费用向量化模型可能区分不够明显第三确认重排策略是否有效有时Top20候选里其实已经有正确答案了只是排到了最后重排模型或者规则可以把它拉上来第四检查是否有多个相似文档片段互相拉低权重。4.2 模型回答幻觉严重内容编造得让人惊讶很多人第一反应是去换更大的模型但多数场景下更有效的方案是控制输入输出。首先提示词里必须冻结只基于参考资料回答的指令同时提供When you are not sure, say you dont know的自由度不要把模型逼到一定得给出答案的境地。其次在生成前增加一个判断器当检索结果的综合相关性得分低于某个阈值时直接拒绝回答返回未找到相关信息。第三在解码参数上做调整降低temperature到0.1以下减少随机性。最后的兜底手段是在输出侧做一个事实性校验要求模型回答中引用的文档ID和检索返回的一致否则标记为低置信度。4.3 服务刚上线正常运行几天后越来越慢这种问题一般是访问量增长导致的服务资源不足或者是缓存管理失效。最常被忽略的是语义缓存模块它缓存用户问题与对应回答的哈希值。问题几乎不会完全一样所以缓存命中率极低白白占着内存。后来我改成基于语义相似度的缓存先对用户问题进行向量化与缓存中的问题进行相似度比对相似度超过0.92的直接复用回答。这样命中率从零提升到接近25%服务响应速度得到明显改善而且还节省了一部分模型调用费用。另外一条排查路径是查看日志里是否堆积了大量重复异常比如部分PDF文档解析失败后进入重试队列不断消耗资源。4.4 GPU显存不足模型根本无法加载这个问题的核心是模型精度和显存占用之间的权衡。如果确实是物理显存不够不用一上来就焦虑。常规的手段包括加载模型时设置torch_dtype为float16直接降低一半显存占用如果还是不够再量化到int8或int4质量损失通常控制在可接受范围内也可以考虑把模型切分到多张GPU上。部署框架层面vLLM本身对显存的管理效率比原生PyTorch高不少而且支持更精细的显存分配策略很多时候在原生框架下加载不了的模型换到vLLM反而就顺了。做过一次极端测试把一个7B模型压缩到int4精度后用单张消费级显卡推理回答质量在一般场景下与fp16版本差距在五个点以内但显存占用只有原来的四分之一甚至更少。4.5 向量化模型更新后线上效果不升反降这其实是一个版本管理问题。如果你同时更新了模型权重、检索逻辑和切片策略出了效果波动你根本不知道是哪个环节导致的。建议严格区分环境线上检索用小版本的向量化模型服务线下评估用全新模型跑同一套测试集两者对比确认新模型确实全面优于旧的再统一升级。同时要特别注意向量化模型更新后必须对底座向量库做全量重建因为新旧模型的向量空间不一致混合存放会导致检索出现全部乱套的现象。这个坑非常常见也非常隐蔽。5. 进阶方向与资源建议当完整跑通一个AI应用之后会有一种终于摸到门了的感觉。但离真正的AI工程高手还有不小的距离。接下来几个方向我认为价值很大如果你有余力可以按兴趣挑选逐个深入。第一是细粒度评测体系建设。目前AI工程缺乏统一的度量衡针对自己的业务你把评测做得越细后续的模型迭代就越有底气。除了基础指标我建议加入对不同用户群体、不同类型输入问题的分场景评估以及成本维度的综合评估这样能在模型效果与成本之间找到最好的平衡点。第二是可观测性与安全。大模型很难预测输入什么会被触发不好的输出所以实时监控栏里要加上敏感词过滤、注入攻击检测、越狱行为检测等能力。这个方向很多企业还在摸索但已经出现了比较成熟的开源方案例如Llama Guard就提供了内容安全分类的能力可以让我们的防护体系更完善。第三是模型微调与对齐。RAG解决了知识时效性的问题但模型的输出风格、思维链模式以及特定领域的术语表达仍然可以通过微调来做得更好。这个方向需要更扎实的深度学习和数据处理功底但对模型最终的产品体验提升是巨大的。可以从LoRA这类参数高效微调开始上手成本相对低一些。关于资源我个人用过并且觉得口碑不错的几个公开资料可以给大家参考HuggingFace的官方课程作为Transformers和扩散模型的核心参考文档和示例代码都很详细DeepLearning.AI上的Building Systems with the ChatGPT API和LangChain for LLM Application Development系列短小实用适合快速补齐应用开发认知如果要系统化深入学习LLM运维GitHub上有一些非常优秀的开源仓库例如gpu-mode的LLM training和LLM inference系列笔记覆盖从底层原理到部署优化的全链路知识。6. 踩坑三年半我掏心窝的几个体会写到最后分享几个自己在实际项目里沉淀下来的感悟它们不完全属于技术但对长期做AI工程的人来说可能比某个具体的参数调整更值得记在心里。第一个体会是先跑通再优化。我自己早期搞AI工程老想在第一个版本就把检索、生成、评估、监控全都做到完美结果是花了大半个月搭好了骨架却连端到端的调用都还没走通非常挫败也严重打击信心。后面调整策略先用最简单的流程哪怕是直接调一个在线API让整个系统快速转起来再一步步把切分策略、向量化模型和数据库换成更优化的方案。每做一步优化都能立刻看到效果变化既有成就感也有正向反馈进步比闷头设计快得多。第二个体会是拥抱漂移。大模型生态的发展速度太快了你大半年前学习的那套API写法、框架用法很可能只经过一次版本升级就出现了大幅变化。不要抗拒去看迁移文档更不要等到项目出问题了才去补新知识。每周花半小时浏览一下核心开源项目的Release Notes你会发现很多重要变化——比如说某个推理框架优化了显存管理、某库增加了对长上下文的支持。这些信息是提升效率最省力的抓手。第三个体会是学会说不。AI工程不是什么东西都必须套大模型。一些场景里传统的关键词搜索加上简单的规则反而更快更稳还更便宜。技术选型的判断力是工程能力的一部分甚至可以说这才是资深工程师和初级工程师差距最大的地方。语言模型不是万能的知道它在什么地方不适用比会调参数更重要。第四个体会也是最关键的一条一定要带着业务问题学而不是带着技术清单学。脱离具体场景去念技术名词看着很充实其实没有真正沉淀下来。当你面对一个真实的问题比如为什么这个季度客服转人工率反而升高了的时候你才会被迫把检索的质量、回答的确定性、会话的上下文管理这些东西全部打通。那时候学到的才是真正属于你自己的AI工程能力。这个项目做到现在其实还有很多不完善的地方。承担高并发压力时的稳定性、更完善的安全围栏、更智能的缓存与淘汰策略都有待继续迭代。但至少有一点我体会很深AI工程从零开始并不是一条绝望坡只要按阶段性目标一个个攻下来用项目牵引学习而不是用学习替代项目这条路是可以走通的。希望这篇分享能给同样在这条路上摸索的你一些参考哪怕只是帮你少踩一个坑也值了。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →