垂直领域文档智能问答:一定要微调吗?RAG 落地思路与选型
手上有一批产品说明书或内部文档,想做一个只依据这些资料回答的问答机器人,是否只能用微调?本文先厘清微调与检索增强生成(RAG)的分工,再给出文档切分、向量入库、检索约束、效果评估的可操作步骤,并说明第三方低价密钥在微调支持与数据安全上的风险,最后给出何时才值得微调的判断标准。
手里有一批产品说明书、操作手册或内部流程文档,想做一个问答机器人:用户提问,模型只依据这些资料作答,最好还能说清楚答案出自哪一页。很多人第一反应是「把这些文档喂给模型训练一下」,于是想到 fine-tuning(微调),接着又冒出一串疑问:调用 API 做这件事够不够?用便宜的第三方密钥能不能微调?除了微调还有没有别的路?
核心结论先说:绝大多数「依据指定文档回答」的需求,用检索增强生成(RAG)比微调更合适。微调不是把文档「灌进」模型的手段,它改变的是模型的输出风格和任务模式,而不是可靠的知识库。下面把两条路的分工、落地步骤和常见坑拆开讲。
微调和 RAG 到底在解决什么
微调改变的是「习惯」,不是「资料库」
微调通过在大量「输入—期望输出」样本上继续训练,让模型更倾向于某种回答格式、语气或领域表达方式。它有几个天然限制:
- 知识被压进参数,无法精确溯源,也容易被「记串」;
- 文档一更新就得重新准备数据、重新训练;
- 需要几百到几千条高质量问答对,标注成本远高于想象;
- 模型仍可能编造文档里没有的内容。
RAG 是「先查资料,再回答」
RAG 的流程是:把文档切块并转成向量存入检索库;用户提问时先检索出最相关的若干片段;把这些片段拼进提示词,让模型基于片段生成答案。它的优势是知识外置、随改随生效、可以附出处、可以明确拒答。
| 维度 | 微调 | RAG |
|---|---|---|
| 适合场景 | 固定格式、固定话术、领域语气 | 依据文档作答、需要出处 |
| 文档更新 | 需重新训练 | 重新入库即可 |
| 可溯源 | 弱 | 强(可给片段编号) |
| 冷启动成本 | 高(要标注数据) | 中(要处理文档与调检索) |
| 幻觉控制 | 一般 | 较好,可强制「无依据不答」 |
两者并不互斥:常见做法是先用 RAG 解决「答得对」,等输出格式或语气仍不满意时,再用少量样本做微调。
垂直文档场景为什么优先选 RAG
说明书类内容有两个特点:数量不大但要求精确,且会随版本迭代。RAG 正好匹配:
- 参数、步骤、单位这类细节必须一字不差,检索原文比模型「回忆」可靠;
- 新版本手册上线只需替换文档,不用重训;
- 用户追问「哪一章写的」时能给出引用;
- 问题超出文档范围时可以明确说「资料中未提及」,而不是编一个答案。
用第三方低价密钥的几个现实风险
很多人想用转售或共享的便宜 API 密钥来压成本,需要提前想清楚:
- 是否支持微调:微调通常需要账号级别的训练权限,训练产出的模型标识与账号绑定,中转层很难完整透传。多数低价密钥只开放基础的对话接口,微调基本用不了。具体能力以服务方官方最新说明为准。
- 稳定性:这类密钥可能随时限速、失效或触发风控,线上服务会直接中断。
- 数据安全:RAG 需要把公司文档片段随请求发出,等于把内部资料交给来源不明的中转方,这在企业项目里往往是硬性红线。
- 合规:买卖、共享账号本身可能违反服务条款,出问题没有申诉渠道。
务实做法是:练手阶段可以用低成本渠道验证流程,生产环境切回官方渠道;敏感文档优先选择支持私有化部署的模型或本地推理。
一套最小可用的 RAG 落地步骤
第一步:界定边界
先写清楚「能答什么、不能答什么」。只答文档内容,超出范围统一回复固定话术。这条约束比模型选型更影响体验。
第二步:文档预处理与切块
- PDF 先转文本,清掉页眉页脚、水印、目录页码;
- 按标题层级切块,单块 300–800 字,相邻块保留 10%–20% 重叠,避免答案被切断;
- 每块附带元数据:文档名、章节、页码、版本号。
第三步:向量化与入库
选择与查询语言匹配的嵌入模型,把文本块转成向量写入检索库。数据量小的时候,本地向量库甚至带向量扩展的关系型数据库就够用;数据量大再考虑专用向量数据库。
第四步:检索与重排
先取较高的召回数量(例如 3–8 条),有条件再加一层重排,或把关键词检索与向量检索结果合并。召回不准时,先怀疑切块粒度,而不是急着换模型。
第五步:提示词约束
你是产品说明书问答助手。只能依据下面提供的【资料片段】回答。
规则:
1. 资料中没有的信息,回答「文档中未提及」,不要推测。
2. 回答末尾列出引用的片段编号与文档名。
3. 涉及参数、操作步骤时逐条列出,保留单位。
【资料片段】
[1](文档名 / 章节)……
[2](文档名 / 章节)……
【用户问题】
{question}
第六步:建立评测集
准备 30–50 条真实用户问题,配标准答案,每次调整后重跑。把失败案例分三类:检索没召回、召回但答错、文档本身没写。三类问题的修法完全不同,混在一起调只会越调越乱。
第七步:持续迭代
补文档、调切块、改提示词、换嵌入模型,按上面的分类逐项优化,不要一次性全改。
不想写代码:平台化方案
项目周期短、只是练手时,可以直接用现成的知识库问答平台:上传文档、配置分段规则和提示词、选模型即可跑通。这类平台的取舍在于可定制性和私有化能力——对格式特殊、需要深度改检索逻辑的场景,后期往往还是要回到自建。文档涉及内部资料时,先确认能否私有化部署。
什么情况下才值得考虑微调
- 输出必须是严格的结构化格式(固定 JSON 字段、固定工单模板);
- 客服话术、品牌语气需要高度统一;
- 有稳定的标注数据来源,且已有 RAG 基线;
- 领域术语太多,检索与提示词都压不住表达偏差。
即使微调,样本质量也比数量重要:几百条覆盖真实提问方式的样本,通常优于几千条机器生成的问答对。
检查清单
- 是否明确了「无依据不答」的边界话术
- 文档是否清理过页眉页脚并保留了来源元数据
- 切块是否按标题层级、带重叠
- 检索条数与重排策略是否验证过
- 是否准备了 30 条以上的评测问题
- 密钥来源是否合规、敏感数据是否出网
- 是否有版本更新后的重新入库流程
小结
「只依据垂直文档回答」这类需求,默认答案应是 RAG,微调作为格式与风格的补丁。低价第三方密钥适合验证流程,不适合承载生产流量,微调能力也基本指望不上。文档量不大、更新频繁、需要出处的场景,把力气花在切块质量和提示词约束上,收益通常比换更大的模型更明显。若索引构建、批量重算这类任务需要长时间挂着跑,而本地机器又不太稳定,把这类后台任务放到一台长期在线的远程机器上执行也是可选项,避免本地休眠导致任务中断。