跳转至

第9章 模型能力定制与知识增强


企业常把“模型不懂业务”归结为需要微调,但同一句抱怨背后可能是四种完全不同的问题:知识过期、输出契约不稳、任务模式与基座模型差异大,或偏好与安全边界不符合组织要求。技术路线选错,团队可能花很大成本训练出一个仍然不能上线的模型。

能力定制的第一步不是训练,而是失败样本分诊:先判断缺知识、缺格式、缺任务能力还是缺偏好边界,再选择 Prompt、RAG、微调或对齐。 动态事实应外部化,稳定任务模式才值得写进模型参数。

9.1 先分诊问题,再选择技术路线

企业常用三类能力定制手段:微调、RAG 和对齐;Prompt/结构化输出则是更低成本、通常也更先尝试的接口修复手段。

表9-1:能力定制路线与适用问题。来源:本书整理。

路线 改变什么 适合解决 更新频率
微调 模型参数或 adapter 任务习惯、领域语言、稳定输出模式 周级到月级
RAG 外部上下文 最新政策、手册、合同、指标口径 小时级到天级
对齐 偏好与拒答倾向 风格、安全边界、风险分级 周级到季度

一个客服助手完全可能同时使用三者:RAG 提供最新政策,LoRA 学习分类口径,对齐控制赔付承诺和拒答边界。但每个问题都要先证明根因。

表9-2:常见失败症状、可能根因与优先方案。来源:本书整理。

症状 可能根因 优先方案
不知道最新政策、价格、库存、合同状态 知识缺失或过期 RAG、工具查询、知识快照
信息基本正确但接口格式不稳 Prompt/schema 不稳定 Prompt、结构化输出、回归样本
特定术语、SQL、代码模式长期错误 任务分布与基座差异大 SFT、LoRA、QLoRA
语气、拒答、风险等级不符合规范 偏好和安全边界未对齐 偏好数据、DPO/KTO、护栏
错误偶发、样本很少 证据不足 先补评测集和日志标注

先做可解释、可回滚、局部影响的改动。 Prompt/schema 和 RAG 快照容易灰度与撤回;微调会改变模型行为,应在企业评测证明必要后再进入训练。

图9-1:能力定制技术路线选择

图9-1:能力定制技术路线选择。来源:本书自绘。Alt text:图中以问题分诊为起点,分别指向知识过期、格式不稳、能力不足和偏好边界四类问题,并对应 RAG、Prompt、微调和对齐路线。

几个边界尤其重要:

  • 员工制度、库存、价格、合同状态、指标口径等动态事实,不应靠微调永久写入模型;
  • RAG 能提供知识,但不能自动教会模型稳定生成复杂 SQL 或执行任务模式;
  • 对齐能改变拒答和风格,但不能替代权限、脱敏、工具白名单和审计;
  • 训练数据不是越多越好,过期政策、错误话术、临时 workaround 和 SQL 反模式都可能被模型学进去。

分诊样本应保留原始输入、上下文、检索结果、工具结果、模型输出、人工判断和最终业务后果。先问“模型是否拥有完成任务的信息”,再问“动作空间是否正确”,最后问“输出是否符合接口和业务规则”。

9.2 能力定制是一条持续发布闭环

能力定制不是一次训练任务,而是一条从线上失败回到数据、知识、训练、评测和发布的反馈回路。

flowchart TD
    App["业务应用 / Agent Runtime"] --> Gateway["LLM Gateway<br/>路由 / 配额 / 审计"]
    Gateway --> Base["基座模型<br/>闭源 API / 开源权重"]
    Gateway --> Adapter["定制模型或 Adapter<br/>SFT / LoRA / QLoRA"]
    Gateway --> Rag["RAG 服务<br/>检索 / 重排 / 引用"]
    Rag --> KB["知识库<br/>文档 / 向量库 / 元数据"]

    Logs["线上日志与反馈"] --> Data["数据治理<br/>清洗 / 脱敏 / 标注 / 版本"]
    Data --> Train["训练与对齐<br/>SFT / DPO / KTO"]
    Data --> Eval["评测集<br/>任务 / 安全 / 回归"]
    Train --> Registry["模型注册表<br/>版本 / adapter / 训练数据"]
    Registry --> Eval
    Eval --> Release["发布决策<br/>灰度 / 回滚 / 路由策略"]
    Release --> Gateway

图9-2:模型能力定制的持续闭环

图9-2:模型能力定制的持续闭环。来源:本书自绘。Alt text:图中展示线上失败样本进入数据治理、训练或知识更新、评测、灰度发布和监控的闭环,模型版本、adapter 和知识快照都进入注册表。

这条链路有三个关键边界:业务应用只声明任务、租户、风险和知识域,不关心底层是否 LoRA 或 RAG;训练集与评测集必须隔离;模型、adapter、Prompt 和知识快照都要版本化,否则线上回答无法复现。

表9-3:能力定制闭环的核心组件。来源:本书整理。

组件 职责 主要风险
Sample Collector 收集失败、反馈、人工改写和专家样例 偏差采样、敏感数据混入
Data Curator 脱敏、去重、标注、分层、版本化 标签冲突、污染评测集
Knowledge Pipeline 解析、切分、索引、元数据过滤 过期文档、权限错配
Trainer SFT、LoRA、QLoRA、DPO、KTO 过拟合、遗忘、过度拒答
Eval Harness 任务、事实、安全、成本和延迟评测 指标单一、测试污染
Registry & Release 管理版本、灰度和回滚 版本不可追踪、无法回退

训练任务至少要把基座、数据、方法和门禁写清楚:

job_id: customer_service_sft_2026_06
base_model: qwen3-32b-instruct
method: lora_sft
dataset:
  train: datasets/customer_service/sft/train-2026-06.jsonl
  validation: datasets/customer_service/sft/validation-2026-06.jsonl
  data_policy: pii_redacted_v2
training:
  lora_rank: 16
  learning_rate: 0.0001
  epochs: 2
evaluation:
  suites: [customer_service_classification, refusal_and_compliance, structured_output_regression]
  gates:
    task_accuracy_min: 0.88
    json_validity_min: 0.98
    safety_regression_max: 0.01
release:
  canary_tenants: [demo-retail]
  rollback_to: qwen3-32b-instruct@baseline

RAG 的契约重点不同,应记录知识快照、切分、索引、重排、引用和权限过滤:

knowledge_domain: employee_policy
snapshot: 2026-06-01
sources: [hr_policy_handbook, benefits_faq]
index:
  embedding_model: bge-m3
  chunk_policy: policy_v3
retrieval:
  top_k: 20
  rerank_top_k: 6
  require_citation: true
security:
  metadata_filters:
    tenant: demo-company
    visibility: employee

模型训练资产和知识资产必须分别版本化:前者解决行为模式,后者解决可更新事实。

9.3 Prompt、RAG、微调与对齐如何取舍

Prompt:先修规则和接口

Prompt 调整成本低、上线快、易回滚,适合任务规则、输出格式、少量边界样例。若问题本质是字段、枚举、拒答状态或工具参数不稳,应先回到第 8 章的结构化契约,而不是训练模型“更听话”。

RAG:把动态、敏感、需引用的事实留在外部

知识更新频繁、需要引用来源、需要按租户/权限过滤时,RAG 或工具查询通常是默认选择。事实越动态、越敏感、越需要删除和审计,就越不应该写进模型参数。

RAG 也有自己的生产责任:文档版本、重复/冲突、metadata、权限、召回和引用都需要评测。知识库不是“文件上传成功”就完成建设。

SFT / LoRA / QLoRA:学习稳定任务模式

当模型长期在领域术语、分类、抽取、SQL 模式或固定工作流上表现不稳,而且 Prompt、RAG 和评测已经较稳定时,微调才更可能带来持续收益。

全量微调能力强,但成本、回滚和多租户治理复杂;LoRA / QLoRA 更适合多数企业场景,因为 adapter 小、发布快、可按租户/任务路由,也容易局部回滚。它们的上限仍受基座模型约束。

偏好对齐:改变“应该怎么答”,不是赋予系统权限

DPO、KTO 等方法适合安全拒答、风险分级、客服风格和组织偏好,但必须单独检查过度拒答和正常可答样本。偏好对齐不能替代硬权限、Policy、工具白名单和审计。

通用模型、adapter 与领域模型矩阵

早期平台宜保持单一通用模型;任务增加后,用通用基座 + adapter 往往是较好的折中;只有高价值领域且评测/运维成熟后,才值得维护多个领域模型。模型矩阵越复杂,越依赖统一注册、路由、评测和成本治理。

9.4 数据、评测与生命周期门禁

能力定制的发布链应该从分诊进入不同路线,再统一回到 Eval 与灰度。

stateDiagram-v2
    [*] --> ProblemTriage
    ProblemTriage --> PromptChange: prompt/schema issue
    ProblemTriage --> RagUpdate: missing or stale knowledge
    ProblemTriage --> FineTune: task behavior gap
    ProblemTriage --> Alignment: preference or policy gap
    PromptChange --> Eval
    RagUpdate --> Eval
    FineTune --> Train
    Alignment --> Train
    Train --> Eval
    Eval --> Reject: quality or safety gate failed
    Eval --> Canary: gates passed
    Canary --> Rollback: regression detected
    Canary --> FullRelease: stable
    Reject --> DataFix
    Rollback --> DataFix
    DataFix --> ProblemTriage
    FullRelease --> Monitor
    Monitor --> ProblemTriage: new failures

表9-4:能力定制链路的失败模式与修复路径。来源:本书整理。

失败模式 触发条件 修复路径
选错路线 微调解决知识过期,RAG 解决格式 重新分诊根因
数据泄露 日志/样本含敏感信息 脱敏、授权、留存策略
评测污染 训练含评测样本或近似改写 指纹、去重、隔离
过拟合 训练提升、线上下降 降 epoch、扩验证与多样性
灾难性遗忘 领域提升、通用/安全下降 混合回归、任务级 adapter 路由
过度拒答 正常问题也大量拒绝 增加安全可答正例、分风险级别
RAG 噪声/越权 召回低相关或无权限文档 重排、metadata 过滤、检索评测
不可回滚 模型/adapter/Prompt/索引未绑定 Registry 完整版本化

训练数据、评测数据和知识数据都必须知道来源、时间、适用范围、脱敏状态和 owner。 一个地区的临时业务特例不能被无意中训练成全局规则,旧政策也不能混入长期样本。

发布时不要只看平均分。一个 adapter 可能总体准确率提高,却让 JSON 合法率、安全拒答或长尾类别下降;RAG 引用命中率提高,也可能出现权限过滤回退。主指标、护栏指标和失败样本必须同时进入报告。

9.5 在平台中的运行时组合

mini-platform 中,能力定制不需要让业务代码认识各种技术细节。可以由 core/gateway/ 统一决定某类任务应使用哪个基座、adapter、Prompt、RAG 域和安全策略;core/eval/ 提供准入证据;core/rag/infra/vectorstore/ 管理知识;core/observability/ 保存线上事实。

from dataclasses import dataclass

@dataclass(frozen=True)
class ModelRoute:
    base_model: str
    adapter: str | None = None
    prompt_template: str | None = None
    rag_domain: str | None = None
    require_citation: bool = False
    safety_profile: str = "default"

@dataclass(frozen=True)
class TaskContext:
    task: str
    risk_level: str


def resolve(ctx: TaskContext) -> ModelRoute:
    if ctx.task == "employee_policy_qa":
        return ModelRoute(
            base_model="qwen3-32b-instruct",
            prompt_template="policy_qa_v3",
            rag_domain="employee_policy",
            require_citation=True,
            safety_profile="hr_policy",
        )
    if ctx.task == "customer_service_classification":
        return ModelRoute(
            base_model="qwen3-32b-instruct",
            adapter="customer_service_lora_v2",
            prompt_template="complaint_classifier_v2",
        )
    return ModelRoute(base_model="qwen3-32b-instruct", prompt_template="default_v1")

一次线上请求的 Trace 至少应能还原:base_model + adapter + prompt_template + schema + rag_snapshot + safety_profile + release_id。否则“同一个模型名”背后已经使用了不同能力组合,事故很难复现。

表9-5:模型能力定制上线前验证项。来源:本书整理。

验收项 检查问题 证据
路线选择 是否明确属于 Prompt、RAG、微调或对齐 分诊记录、失败样本
数据治理 样本是否脱敏、去重、分层并隔离评测 数据版本、脱敏、指纹报告
评测结果 任务、安全、结构化和通用能力是否过门禁 eval report、失败清单
发布控制 模型、adapter、Prompt、知识快照能否灰度回滚 Registry、路由策略
线上监控 拒答、幻觉、引用、成本、延迟是否可观察 dashboard、trace、反馈

9.6 把定制能力作为资产,而不是特殊分支

能力定制进入生产后,平台会同时出现基础模型、租户 adapter、任务 Prompt、知识快照和安全策略。若这些资产没有统一台账,线上行为会越来越难解释。

资产记录至少应包含:

  • base model / adapter / Prompt / RAG snapshot;
  • 训练或知识数据版本;
  • 评测集、目标指标和失败样本;
  • 适用租户、任务和风险等级;
  • owner、灰度范围、成本和回滚目标;
  • 复审周期与退役条件。

定制能力必须有明确的生效范围。一个业务线的特殊 adapter 或 Prompt 不应因为“效果不错”自动扩散到所有租户。 路由命中原因应进入 Trace。

定制路线还要计算维护成本。RAG 的成本在文档治理、解析、索引和检索评测;微调在样本、训练、部署和回归;偏好对齐在偏好数据、人工标注和安全评测。业务提出“让模型更懂我们”时,平台需要比较未来数月的维护责任,而不只是当前哪个方案最先进。

衡量定制价值也要回到业务结果:分类准确率提高是否减少人工分派,制度问答引用改善是否减少升级,SQL 质量提高是否缩短分析周期。离线分数没有转成业务结果时,不应无限扩大定制资产。

9.7 复审、退役与知识回收

定制资产会过期。基础模型升级、政策和产品变化、业务 owner 离开、评测集失效,都可能让曾经有效的 adapter、Prompt 或知识快照变成负担。可以按月或季度复审:使用量、失败样本、业务收益、维护成本、评测结果、安全风险和替代能力。

退役可以分级:先冻结新流量,再补样本或更新知识;仍无法证明收益时,路由退回基础模型或通用策略。历史记录不应删除,因为历史 Trace 仍需要解释为什么当时使用过该定制版本。

定制能力退役时,应回收知识,而不是把试点经验一起丢掉。 有价值的失败样本进入 Eval,稳定术语进入 Glossary,高质量事实进入知识库,风险样本进入 Guardrails,工具模式进入通用契约。这样局部定制可以逐渐沉淀成平台公共能力。

客户或业务线如果依赖专属版本,还需要版本冻结与变更窗口。冻结的是一组明确组合:模型、Prompt、工具、知识、策略和评测样本,而不是永不升级。新版本应先在客户样本上回放,涉及正式承诺时提供灰度、对比与回滚。

同时应避免长期 fork。能用配置解决的不复制 Prompt,能沉淀为通用模板的不保留专属版本,只有真正涉及专有流程、权限或术语的部分才独立维护。否则平台会被大量特殊分支拖入不可维护状态。

9.8 发布证据:证明“更好”,也证明“没有伤到别处”

能力定制不能凭几个成功 Demo 上线。发布证据至少覆盖四类样本:目标失败样本、相邻样本、反向/高风险样本、历史高频回归样本。对于 RAG + 微调组合,还要尽量区分改善来自模型参数、知识内容还是 Prompt。

典型问题的责任层应明确:

  • 政策更新后继续答旧制度:优先修 RAG 快照和版本,不重新训练记忆;
  • 客服微调后 JSON 有效率下降:结构化任务单独评测,把 JSON validity 设为 gate;
  • DPO 后过度拒答:补充安全可答正例并拆分风险等级;
  • RAG 召回无权限文档:索引写入租户、部门、密级、有效期并强制过滤;
  • 新 adapter 无法复现:Trace 补全模型、adapter、Prompt、schema、RAG snapshot 和 release_id。

定制发布要同时证明目标收益和原有能力没有不可接受退化。 如果收益只覆盖少量低价值样本,却增加长期路由、训练和评测成本,应优先考虑更简单的 Prompt、RAG 或工具方案。

本章小结

微调、RAG 和对齐解决不同问题:微调学稳定任务模式,RAG 接可更新事实,对齐调偏好;Prompt 和结构化契约则通常是更先尝试的低成本接口修复。 动态、敏感、需要引用和可删除的事实应优先外部化,不能为了“更懂业务”全部写进模型参数。

LoRA / QLoRA 适合企业多租户和多任务定制,但仍必须与数据治理、评测、灰度、路由、Trace 和退役绑定。能力定制真正成熟的标志,不是模型版本越来越多,而是每个失败都能先被正确归因,每个定制资产都知道为什么存在、服务谁、如何验证、何时回滚和什么时候退出。

参考文献

Hu, E. J. et al. (2022). LoRA: Low-Rank Adaptation of Large Language Models. ICLR.

Hugging Face. (n.d.). PEFT documentation.

Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. NeurIPS.

Ouyang, L. et al. (2022). Training Language Models to Follow Instructions with Human Feedback. NeurIPS.