做 AI 应用绕不开这道选择题:让模型「懂你的业务」,到底靠提示词、RAG,还是微调?
我把自己的企业知识库项目(Nuxt3 my-nuxt-app:私有制度文档问答,检索走向量+BM25 混合,生成走 deepseek-chat API)从头选到尾,这篇文章把三层的边界和我的决策过程讲清楚——这也是面试被问最多的一题。
先摆认知地基:训练范式在干嘛
一张表说人话(来自我系统补的《语言模型训练范式》课件,老师一句话总结:大模型 = 会接话茬的机器(Pretrain)+ 会做任务的机器(SFT)+ 会自我评判的机器(RM/PPO/DPO)):
| 阶段 | 在干嘛 | 人肉类比 | 数据量 |
|---|---|---|---|
| Pretrain | 海量文字学「预测下一个字」 | 儿童大量阅读 | Llama3 用了 15 万亿 tokens |
| SFT | 带标注问答,从接话茬变做任务 | 老师布置带答案的作业 | 几十万条 ≈ 预训练的 1/5000 |
| RM + PPO/DPO | 学会「说人该说的话」 | 按批改意见反复改写 | 较小 |
硬核数字记一个就够:Llama 3.1 405B 预训练 = 16384 块 H100 跑 54 天,亿级人民币。所以普通企业和个人根本不碰预训练,选择题只在「现成模型 + 什么方式喂能力」之间做。
面试加分项也在这:SFT/微调 ≠ 给模型喂知识,是教模型「做任务」。 知识靠 Pretrain(通用)+ RAG(私有/新)供给。很多人把微调当成「把公司文档灌进模型」,方向从根上就错了。
三层模式,按成本从低到高
第一层:Prompt / 上下文工程
把关键信息直接写进 system prompt。适合:全局规则、输出格式、角色设定。
局限:窗口有限,塞不进几十份制度文档;每轮都重复计费。我的项目里它只负责「只用资料作答、不编造、标注来源页码」这类约束。
第二层:RAG——知识在模型外面
文档入库切块 → 向量化(我用 Chroma + bge-m3)→ 提问先检索(混合检索:BM25+向量,RRF 融合,reranker 精排取 top5)→ 检索结果拼进 prompt → 生成。
知识更新 = 重新入库,分钟级。 文档改了版本,知识库表里状态机走一遍(草稿→发布→下架),不动模型一根手指。回答能带来源文件和页码——可溯源,这是企业场景的硬需求,微调给不了。
第三层:微调——把能力焊进权重
拿几百到几万条「输入→期望输出」对模型做 SFT。适合什么?固定的输出格式、领域语气、术语习惯——也就是「行为方式」,不是「知识内容」。
我的真实三笔账(为什么 my-nuxt-app 选了 RAG,微调碰都不碰)
1. 知识更新频率。 部门制度文档是活的:新考勤规则、修订的报销流程。RAG 重新入库就完事;微调要攒数据、排队训练、验证回归——为「上周改的那条婚假规定」重训一次模型,纯属行为艺术。
2. 机器现实。 我的生产环境是 99 元/年的 2核2G 阿里云 ECS,内存预算排完(nginx 64MB + node-app 384MB + 系统 + swap)只剩 1G 出头。这台机器连一个 7B 模型都推理不动,更别说训练。我架构里所有重活全在云 API:Embedding 走 bge-m3、精排走硅基流动 bge-reranker-v2-m3、生成走 deepseek-chat。微调需要训练数据+算力+评测集三件套,对个人项目是三重成本。
3. 可回滚性。 RAG 答错了,改文档、调分块、调检索参数,改完立刻生效,还能追溯「当时引用了哪一页」。微调把错误知识焊进权重后,你连它为什么胡说都查不出来,回滚要重训。
什么时候我才会上微调
预判一下自己:等业务问答稳定,出现这类需求再考虑——「回答必须严格按公司工单模板的语气和结构输出」这种格式/风格问题。届时也是 LoRA 这类轻量方案 + 现成 API 模型,依旧不碰预训练。知识类需求,永远 RAG。
速查表
| 需求 | 选择 |
|---|---|
| 全局规则/格式约束 | Prompt |
| 私有知识、时效知识、要溯源 | RAG |
| 固定输出风格/任务行为 | 微调(最后才考虑) |
| 「把文档灌进模型」的想法 | ❌ 方向错了,那是 RAG 的活 |
一句话收束:知识在模型外面解决(RAG),行为在模型权重里解决(微调)——分不清这两件事,选型必错。
下一篇讲 RAG 效果差怎么调试。
本篇最早于 2026 年 10 月 9 日发布于小红书,此为博客完整版。