周三下午,一个开发者盯着自己的AI助手发愁。它答不出公司最新的退款政策,格式也总是跑偏。他手里有两个选项:RAG和微调。两个都能定制AI应用,但工作方式完全不同。选错的那一个,会带来不必要的复杂度、成本和开发时间。
先把两个概念摆清楚。
RAG是什么?全称检索增强生成。它不指望大模型已经知道所有信息,而是在回答问题时,从外部来源检索相关内容,再喂给模型。比如给网店做客服机器人,退款政策经常变,客户问退货、配送、换货,RAG会先检索最新政策,再生成答案。流程是:客户提问、搜索公司文档、检索相关信息、把上下文和问题一起发给大模型、生成回答。文档更新了,不用重新训练模型,这是RAG最大的优势之一。
微调是什么?拿一个预训练模型,用精心准备的样例继续训练,让它的行为适配特定任务。比如助手要把客户消息转成结构化工单,要求稳定识别问题、分配分类、按特定风格总结,微调可以让模型从样例里学会这个模式。流程是:预训练模型、训练样例、微调、适配后的模型、生成回答。和RAG不同,微调改变的是模型学到的参数,它不会自动让模型访问最新的公司文档,也不保证模型记住训练数据里的每一个事实。
两者最大的区别,一句话:知识 vs 行为。
客户问“你们现在的退款政策是什么”,这个信息会随时间变化,RAG是自然选择,系统能从核准来源检索最新政策。客户问一个需要按固定格式产出工单的问题,微调可能帮模型学会这种输出模式,尤其是在提示词指令本身给不出足够稳定结果的时候。
落到代码上,RAG的思路很直接:写一个函数,先检索文档拿到上下文,拼进提示词,再让模型生成。提示词里明确要求“用下面的上下文回答,答案不在上下文里就直说”。检索函数和生成方法都是占位符,需要接自己的检索系统和模型服务商。关键点是:相关信息在回答时被提供。退款政策变了,更新文档集合就行,不用重新训练模型。
微调则依赖模型和训练框架。一个简化示例用Hugging Face Transformers生态:加载分词器和因果语言模型,配置训练参数,比如训练3轮、单设备批大小2,把模型、参数和分词后的数据集交给Trainer,调用训练。这只是训练设置的示意,不是开箱即用的完整流水线,还需要兼容的模型、正确分词的数据集,以及填充标记、数据整理器之类的配置。核心是模型在训练中从样例学习,之后用产出的模型做推理。
那能不能两个一起用?当然可以。
公司助手既要基于最新产品文档回答问题,又要稳定遵循特定支持流程,就可以用RAG提供相关产品信息,用微调过的模型改善回答行为。流程是:用户提问、RAG检索相关信息、上下文加问题、微调后的大模型、最终回答。这种组合有用,但会增加复杂度。更好的做法是从满足需求的最简方案起步,只有测试证明确有需要时再组合。
成本和维护也得算清楚。
- RAG需要检索流水线、文档处理、信息存储与搜索,还要评估检索到的上下文是否相关。
- 微调需要合适的训练样例、训练资源或受支持的微调服务,以及评估,确保模型变好的同时没丢掉重要能力。
- RAG让更新事实性信息更容易;微调想改变模型学到的行为,可能要再跑一次训练。
- 实际成本取决于模型选择、用量、基础设施和实现方式。
没有哪种方案在所有场景下自动更便宜或更准确。
怎么选?先搞清楚你真正要解决的问题。模型需要访问频繁变化的信息,先试RAG。模型在指令和样例都不差的情况下,仍然稳定搞不定某个专门任务或回答模式,再评估微调。既需要最新外部信息又需要专门行为,测完结果再考虑组合。
最重要的一步:拿真实问题去测。看答案正确性、检索质量、回答一致性、延迟和成本,别按热度做决定。
RAG和微调不是针对同一个问题的竞争方案。RAG在模型回答的那一刻给它相关信息,微调通过额外训练改变模型学到的行为。需要更好的信息访问,考虑RAG;需要调整模型执行任务的方式,考虑微调;两者都要,可以组合,前提是增加的复杂度值得。最好的选择不是最先进的技术,而是能可靠解决你实际问题的那一个。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.