Skip to content

一句话总结:微调解决行为/能力问题(格式、风格、工具调用),不解决知识问题(知识走 RAG);升级顺序 prompt → RAG → 微调,微调是最后手段。

什么时候该微调(vs Prompt vs RAG)

手段解决的问题成本何时用
Prompt Engineering80% 场景小时级、近零先从这里开始:角色/工具/输出格式/行为边界
RAG知识新、可追溯天级知识密集型、需引用文档
微调风格/格式/行为固化、窄域技能周级prompt 到 95% 但 5% 失败致命;格式零变化需求
  • 微调典型场景:工具调用(Function Calling)准确率、固定 JSON Schema、特定语气、窄域技能
  • 微调灌知识是"大炮打蚊子":知识更新一次就要重训,RAG 随时可改
  • 风险:灾难性遗忘(特定领域微调导致通用任务退化)、过拟合训练集、局部指标提升但别处退化

三种微调方案选型

方案原理显存适用
全参数微调所有权重更新数据>10k、显存充裕
LoRA冻结原权重,加低秩适配器7B 可 16GB 卡中等数据、性价比
QLoRALoRA + 4bit NF4 量化7B 约 10-14GB(单 3090/4090)数据不大、单卡

LoRA 三大优势:不破坏原模型(摘掉适配器即恢复通用能力)、显存低、多业务可切换(金融/医疗/客服 LoRA 像插件一样加载卸载)。

数据准备(成败关键)

  1. 去重:精确去重(MD5/SHA256)+ 模糊去重(MinHash/SimHash)
  2. 脱敏:隐私数据过滤(PII filter)
  3. 质量检查:system prompt 是否误写进 output、同一指令是否自相矛盾、脏数据(截断/乱码/HTML 标签)
  4. 数据量:数百到数千条高质量示例即可;工具调用数据集常见 1-2k 合成样例

工具调用(FC)微调数据

  • 三类情景都要覆盖:① 信息足够→调用工具;② 缺参数→先澄清;③ 有害/越界→拒绝
  • 数据来源:真实对话日志 + 规则硬例(跨月日期/拼写错误/缺参/schema 边界)+ 错误驱动 bad case(每次工具调用失败转成纠正样例,闭环改进)
  • 构造流程:schema 当"蓝图" → 每工具 10-20 条手工种子 → LLM 生成 50-200 条自然语言变体
  • 格式校验(OpenAI 微调格式):assistant tool_calls 必须有同 tool_call_id 的 tool 消息配对;arguments 必须是 JSON 字符串;顺序 user → assistant(tool_calls) → tool(result) → assistant(处理结果)

训练与评估

  • QLoRA 参数高效微调;超参(temperature/重试策略)与训练超参同等对待;数据少建议早停
  • 先建评估 Harness 再微调:固定测试集 + 基线模型 + 业务指标 + 自动评分 + 人工复核 + 错误分类 + 版本对比
  • DPO:教判断类行为(SFT 表达不了的取舍)

面试要点

  • 升级顺序:prompt → RAG → 微调;微调治行为不治知识
  • 全参/LoRA/QLoRA 选型与显存量级(7B QLoRA 单卡 10-14GB)
  • 数据三查:去重、脱敏、质量(角色混淆/矛盾/脏数据)
  • 工具调用数据集:三类情景 + 错误驱动闭环 + tool_call_id 配对格式校验
  • 微调前先建评估 Harness,警惕灾难性遗忘与过拟合