如何基于子问题分解并验证每步中间结果?
解读
面试官真正想考察的是:
- 你是否能把一个复杂大模型任务拆成可落地的原子子问题;
- 每个子问题是否具备可验证的客观指标,而不是“肉眼看看差不多”;
- 你是否熟悉LLMOps 流水线里“持续监控 → 快速回滚”机制,保证线上安全可控。
在国内真实业务场景里,数据安全、算力成本、合规审核是硬约束,回答必须体现国产化芯片、国产云原生、国产内容审核的适配经验。
知识点
- 子问题分解四范式:意图识别 → 知识召回 → 推理生成 → 合规过滤。
- 验证指标:子任务必须对应可自动化计算的指标(F1、ROUGE、BLEU、幻觉率、拒答率、P99 延迟)。
- 验证工具链:
- 单元测试层:用最小测试集(gold set)对每个子模块做离线断言;
- 对抗测试层:用红队 Prompt 集检测幻觉、偏见、合规风险;
- 线上灰度层:通过A/B 实验 + 影子流量对比子模块输出分布,KL 散度 >0.05 自动回滚。
- 国产合规:必须接入网信办备案的敏感词库与生成内容审核 API,子模块输出需留痕UUID 级日志,保存180 天备查。
- 算力优化:子问题若需千亿模型推理,先用8-bit 量化 + 国产 DCU(海光)做Prefix Cache,延迟不达标再拆投机解码子任务。
答案
我以“电力设备故障知识问答”真实项目为例,说明如何分解并验证每一步。
步骤 1:意图识别子问题
目标:把用户口语化提问映射到 18 类标准故障类型。
分解:
- 子问题 A:文本分类,输出 Top-3 候选标签。
- 子问题 B:置信度校准,低于 0.7 触发澄清多轮。
验证: - 离线用电力行业标注 1.2 万条做 5-fold 交叉验证,Macro-F1≥0.92 才允许进入下一环节;
- 上线后每小时自动采样 100 条,F1 下降 2% 触发回滚。
步骤 2:知识召回子问题
目标:从国网内部知识库召回 5 条最相关规程条文。
分解:
- 子问题 C:向量化检索,双塔模型+国产海光 DCU 做 768 维 Embedding。
- 子问题 D:重排序,交叉编码器过滤掉时效性过期(发布年份 <2021)条文。
验证: - 离线Recall@5≥0.85,且幻觉率≤3%(用规程原文做 Exact Match 断言);
- 线上通过UUID 链路日志抽查,发现召回源缺失立即告警。
步骤 3:推理生成子问题
目标:让140B 参数国产大模型生成带来源引用的回答。
分解:
- 子问题 E:Prompt 模板化,把召回条文按**<规程>标签拼接,强制模型在<引用>**段落输出编号。
- 子问题 F:长度控制,用动态 N 预测把输出压缩到 512 token 以内,节省50% 推理成本。
验证: - 离线用人工+规则双盲评 200 条,事实正确率≥96%;
- 线上实时计算引用命中率 = 引用编号能在召回源找到的比例,低于 90% 自动降级到模板回复。
步骤 4:合规过滤子问题
目标:屏蔽涉密参数、人身攻击、错误调度指令。
分解:
- 子问题 G:关键词+正则初筛,国网敏感词库 1.7 万条;
- 子问题 H:国产内容审核 API 二次复核,QPS 3000 时延迟P99≤120 ms。
验证: - 离线构造对抗 Prompt 集 5000 条,漏杀率≤0.5%;
- 线上任何一次审核不通过立即用UUID 追溯到具体子模块,10 分钟内完成热修复。
通过上述四步,每个子问题都有独立指标、独立测试集、独立回滚阈值,实现**“小步快跑、可灰度、可回滚”的 LLMOps 闭环,满足国内电网高可靠、高合规、高可解释**要求。
拓展思考
- 多级缓存策略:对高频子问题(如“变压器油温过高”)可把步骤 2 召回结果缓存到Redis+国产 Tair,缓存命中率 70% 时单条延迟从 800 ms 降到 120 ms。
- 人机协同回环:当步骤 1 置信度 0.6~0.7 时,不直接拒答,而是推送**“专家复核”工单,人工标注 1 次后自动回流到训练集,实现在线学习且不触碰用户隐私**。
- 国产化替代:若华为昇腾 910B 算力不足,可把步骤 3 的 140B 模型拆成MoE 8×17B,通过MindSpore+PD 分离把专家路由放到CPU,计算专家放到DCU,在成本降低 35% 的前提下BLEU 只掉 0.4,仍高于业务阈值。