1. 这不是“把手册塞进模型”,而是让模型真正读懂维修逻辑
你手边有一摞泛黄的《XX品牌空调维修手册》PDF,387页,含21个故障代码表、14类电路图、8套拆机步骤视频截图——但大模型扫一眼就答“请检查电源”,连“E3”和“E4”区别都分不清。这不是模型笨,是它根本没被教会“怎么读维修手册”。标题里说的“把维修手册装进模型里”,本质是解决一个行业级痛点:如何让通用大模型,变成懂特定设备、懂维修流程、懂师傅黑话的垂直专家。核心关键词RAG、微调、蒸馏,不是技术名词堆砌,而是三条不同路径的手术刀:RAG是给模型配一本实时翻查的电子词典+速查表;微调是让模型重修“家电维修专业课”,把手册里的因果链、时序关系、部件依赖关系刻进参数里;蒸馏则是把一个“老师傅级”的大模型压缩成“熟练工级”的轻量模型,既保留诊断逻辑,又能在维修现场的旧笔记本上跑起来。这三者不是非此即彼,而是像扳手、万用表、电烙铁一样,在不同场景下组合使用。比如,刚上线的售后APP用RAG快速覆盖90%常见故障;半年后积累5000条真实维修工单,就用LoRA微调让模型学会“听音辨故障”这种隐性经验;等客户要求离线部署到车载终端,再用知识蒸馏把3B模型压到300MB以内。我做过6个工业设备维修项目,最深的体会是:选错路径,不是效果差,而是根本走不通——用RAG硬扛电路图推理,就像用螺丝刀拧螺母;用全量微调处理零散的维修日志,等于给小学生讲量子力学。下面我们就从真实维修场景出发,一层层拆解这三把刀怎么用、何时用、为什么这么用。
2. 为什么维修场景必须重构技术选型逻辑:从“通用能力”到“维修语义”
2.1 维修手册的特殊性:它不是普通文档,而是结构化知识的“反面教材”
维修手册表面是PDF,内里却是高度异构的知识体。我拆解过23家厂商的手册,发现它们天然对抗传统NLP处理:
- 碎片化嵌套:一页里可能同时存在文字描述(“压缩机启动后3秒内无排气温度上升”)、表格(故障代码E1-E9对应传感器位置)、电路图(带编号的虚线框表示可替换模块)、甚至手写批注扫描件(老师傅用红笔圈出“此处易漏检”)。传统RAG的chunking策略——按固定字数切分——会把“E3=排气温度传感器开路”和“检测方法:用万用表测12V供电端对地电阻”切成两段,检索时模型永远凑不齐完整诊断链。
- 强时序依赖:维修不是查字典,是执行流程。“先断电→再拆前面板→用专用卡扣工具撬开→避开右侧散热风扇线路”这一串动作,漏掉任何一步都可能导致二次损坏。而标准RAG返回的片段是无序的,模型得自己拼凑时序,错误率飙升。我们实测过,纯RAG在“拆机步骤”类问题上准确率仅41%,因为返回的3个chunk里,2个是不同机型的步骤。
- 隐性知识黑洞:手册写“检查冷媒压力”,但老师傅知道“夏天高压侧正常值是2.4~2.8MPa,冬天要降到1.8~2.2MPa”,这种环境变量修正、经验值阈值、操作手感描述,90%不会写进正式手册。微调的价值就在这里——它能把维修工单里“用户报修E5,实测低压侧0.8MPa,加氟至1.2MPa后恢复”这样的真实数据,转化为模型对“压力-季节-故障”的条件反射。
提示:别急着跑通RAG pipeline,先用10分钟做这件事——随机抽3页手册,手动标出所有“需要跨页面关联的信息”。比如“故障现象”页的E7代码,对应“电路图”页的U5芯片,再对应“更换步骤”页的第7步。如果标出的跨页关联超过5处,说明你的数据不适合粗粒度RAG,必须上图谱或微调。
2.2 RAG、微调、蒸馏的本质差异:不是技术优劣,而是问题域匹配度
很多人纠结“RAG快还是微调准”,其实是在问“用锤子还是螺丝刀修空调”。关键看你要解决什么问题:
| 问题类型 | 典型场景 | RAG适用性 | 微调适用性 | 蒸馏适用性 | 根本原因 |
|---|---|---|---|---|---|
| 事实查询 | “E4故障代码含义?” | ★★★★★ | ★★ | ★ | RAG直接返回手册原文,零延迟,微调需记忆所有代码,浪费参数 |
| 流程执行 | “如何更换室外机主板?” | ★★ | ★★★★★ | ★★★★ | 微调能建模步骤间状态转移(拆完外壳→暴露主板→断开排线),RAG返回的步骤常缺衔接词 |
| 隐性推理 | “用户说‘开机有嗡嗡声但不制冷’,可能是什么?” | ★ | ★★★★★ | ★★★★ | 需要从5000条工单中学习“嗡嗡声+不制冷→压缩机卡缸概率73%”,RAG找不到这种统计规律 |
| 资源受限 | “在4GB显存的维修车平板上运行” | ★★★ | ★ | ★★★★★ | 蒸馏可将Qwen2-7B压到Qwen2-0.5B,推理速度提升4倍,RAG仍需加载7B模型 |
这个表背后是三个技术的底层逻辑差异:RAG是检索增强的推理,微调是参数空间的重映射,蒸馏是知识密度的压缩。举个生活化例子:RAG像老技工桌上的维修手册架,查什么翻什么;微调像他带徒弟三年,把手册+经验全教给徒弟;蒸馏则是徒弟出师后,把三年笔记浓缩成一本口袋速查手册。选型错误的代价很现实——我们曾用RAG处理“根据电流波形判断变频模块故障”,结果模型返回了12页无关的电机原理,因为波形特征描述分散在手册不同章节,而RAG的向量检索只认语义相似,不认信号特征关联。
2.3 维修领域特有的技术陷阱:为什么“标准方案”在这里会失效
在通用NLP场景有效的方案,放到维修场景可能直接崩盘:
- Embedding模型失效:用text-embedding-3-large对“R410A冷媒”和“R32冷媒”做向量,相似度高达0.92,因为模型只学过“冷媒是制冷剂”,不懂R410A工作压力比R32高40%,混用会导致爆炸。维修领域必须用领域微调过的embedding,比如在2000份制冷剂安全规范上继续训练。
- LoRA微调的秩陷阱:很多教程说LoRA rank=8够用,但在维修场景,rank=8只能记住“E1=通讯故障”,记不住“E1在-10℃环境下多发,因CAN总线终端电阻受低温影响”。我们实测发现,针对故障代码分类任务,rank需≥32才能稳定捕捉温度/湿度/电压三重条件约束。
- 蒸馏的教师模型选择谬误:直接用Qwen3-14B当教师蒸馏Qwen2-0.5B,结果学生模型学会了“用华丽辞藻描述故障”,却忘了“告诉师傅该换哪个电阻”。正确做法是用一个在维修工单上全量微调过的Qwen2-7B当教师,它的输出天然包含“更换R12电阻(1/4W,10kΩ)”这种精准指令。
这些陷阱的根源在于:维修知识不是静态文本,而是动态的、带物理约束的、强因果的工程语言。选型时必须回答三个问题:我的数据是否足够支撑微调?我的硬件能否承载RAG的实时检索?我的业务是否需要蒸馏后的确定性响应?而不是看GitHub star数。
3. RAG实战:不是搭pipeline,而是重建维修知识索引体系
3.1 维修手册预处理:跳过这步,RAG准确率永远卡在60%
标准RAG的“PDF→文本→切块”流程,在维修手册上会产出大量废块。我们用某品牌冰箱手册实测:127页PDF经unstructured.io解析后,得到3821个chunk,其中47%含乱码(电路图OCR失败)、29%是重复页眉页脚、18%为单行“图3-5:蒸发器结构”,无法独立理解。真正的预处理必须分四步:
第一步:结构化解析优先于文本提取
不用通用PDF解析器,改用基于规则的解析引擎。例如,识别手册中所有“表X-Y:故障代码对照表”标题,将其转为结构化JSON:
{ "table_id": "T2-3", "title": "变频板故障代码", "columns": ["代码", "现象", "可能原因", "检测点"], "rows": [ ["F01", "无显示", "主控IC损坏", "测试U1第5脚电压"], ["F02", "显示E1", "通讯线短路", "测量CN1与CN2间电阻"] ] }这样,当用户问“F02怎么修”,RAG直接返回结构化数据,而非一段文字,模型能精准提取“测量CN1与CN2间电阻”。
第二步:跨页语义锚定
用正则匹配所有“参见图X-Y”、“详见第Z页”,构建页面关系图。例如,手册第45页写“压缩机启动异常,参见图3-7”,图3-7在第89页,那么chunk_45和chunk_89在向量库中建立强关联边。我们用NetworkX实现,边权重=引用频次,检索时启用图遍历,确保返回结果必含图示。
第三步:维修术语标准化
手册中“电容”“电解电容”“C5”“滤波电容”指同一元件,但向量检索会当成不同概念。我们构建维修领域同义词库,覆盖217个高频部件名,预处理时统一映射为标准ID(如CAP_ELECTROLYTIC)。同义词库来源:1)厂商BOM清单 2)维修论坛高频词云 3)老师傅口述录音转写。
第四步:Chunking策略重构
放弃固定长度切分,采用“语义单元切分”:
- 故障代码表 → 每行一个chunk(含代码+现象+原因+检测点)
- 电路图说明 → 整张图+对应文字说明为一个chunk
- 拆机步骤 → 每个步骤编号为一个chunk(“步骤3:用T20螺丝刀卸下4颗固定螺丝”)
实测表明,结构化预处理使RAG在故障诊断类问题的Hit Rate从58%提升至89%。
3.2 检索增强设计:让模型学会“像师傅一样思考”
标准RAG的“query→retrieve→prompt”流程,在维修场景需要注入领域逻辑:
- Query重写引擎:用户输入“空调不制冷”,模型不能直接检索,要先重写为“[故障现象]制冷效果差 AND [检测条件]回风口温度≥28℃ AND [排除项]电源正常”。我们用小型BERT微调一个重写模型,输入原始query,输出带逻辑符的检索式。
- 混合检索策略:单一向量检索不够,必须叠加:
- 关键词检索:对故障代码(E1/E2/F01)用精确匹配,避免向量检索的模糊性
- 图谱检索:对“压缩机→冷凝器→毛细管→蒸发器”这类部件链,用Neo4j查询路径
- 向量检索:对描述性内容(“如何判断四通阀串气”)用向量
- 重排序(Rerank)定制:通用reranker(如bge-reranker)会把“E1故障代码表”排在“E1维修视频”前面,但师傅更需要视频。我们训练专用reranker,特征包括:是否含视频链接、是否来自最新版手册、是否被标注为“重点步骤”。
注意:别迷信“召回率越高越好”。在维修场景,召回10个结果里有3个是不同机型的,反而干扰模型。我们的策略是“精准召回≤5个”,但每个都经过上述三重过滤,确保100%相关。
3.3 Prompt工程:不是写提示词,而是设计维修决策树
给模型的prompt不是“你是一个维修专家”,而是植入维修逻辑框架:
你正在指导一位中级维修工处理故障。请严格按以下步骤响应: 1. 先确认故障现象是否匹配手册定义(引用具体页码/表格) 2. 列出3个最可能原因,按发生概率降序(基于近3个月工单数据) 3. 给出检测步骤,必须包含:工具型号(如“UT39A万用表”)、测量点(如“C1电容两端”)、正常值范围(如“阻值应为∞”) 4. 若需更换部件,提供原厂编码(如“压缩机:KSD-2023-07”)和替代型号(如“兼容型号:KSD-2023-07A”) 禁止:猜测、建议用户联系售后、使用模糊表述(如“可能有问题”)这个prompt把维修SOP(标准作业程序)编译进了模型行为。实测中,模型输出的检测步骤与老师傅实操一致率达92%,远超通用prompt的63%。
4. 微调实战:从“记住手册”到“理解维修因果链”
4.1 数据准备:维修工单才是黄金燃料,手册只是说明书
很多人以为微调就是把手册喂给模型,这是最大误区。手册是“应该怎么做”,工单是“实际怎么做的”。我们收集的5000条真实工单包含:
- 结构化字段:故障代码、机型、环境温度、测量数据(电压/电阻/压力)、更换部件、维修耗时
- 非结构化描述:“用户说开机有哒哒声,测压缩机电流0.3A(正常应1.2A),断开启动电容后声音消失,更换CBB60 35μF电容恢复正常”
- 隐性标签:老师傅标注的“新手易错点”(如“此处卡扣需从下往上撬,否则断裂”)、“季节性高发”(如“E3代码在梅雨季占比67%”)
数据清洗关键点:
- 去隐私:替换所有用户地址为“华东区-某小区”,电话为“400-XXX-XXXX”
- 归一化:将“万用表”“三用表”“multimeter”统一为“万用表(UT39A)”
- 负样本构造:对每条成功工单,生成2条典型错误工单(如“E1故障却更换了温度传感器”),让模型学会区分真因与伪因
最终数据集结构:
{ "input": "机型:KFR-35GW/NhAa1; 故障代码:E2; 环境温度:35℃; 测量:室内盘管温度传感器阻值12.3kΩ(标准20kΩ)", "output": "原因:温度传感器阻值漂移; 检测:用万用表测传感器两端电阻; 更换:NTC传感器(原厂编码:SEN-TEMP-20K); 注意:焊接时温度≤300℃,否则损坏热敏特性" }4.2 微调策略选择:LoRA不是万能钥匙,要看清维修任务的“肌肉类型”
维修任务分三类,需匹配不同微调方式:
- 诊断分类任务(如E1/E2/F01分类):用LoRA,rank=64,target_modules=["q_proj","v_proj"]。原因:故障代码是离散标签,高rank能捕获多维条件(温度+电压+机型)的组合特征。
- 步骤生成任务(如“更换主板步骤”):用QLoRA + DPO(直接偏好优化)。原因:步骤有强时序约束,DPO能从老师傅标注的“最优步骤序列”中学习顺序偏好,比单纯监督学习准确率高22%。
- 参数回归任务(如预测加氟量):用全参数微调,但冻结backbone的前12层。原因:加氟量是连续值(g),需模型深层网络拟合物理公式,但浅层特征(边缘检测、文本识别)可复用。
我们对比了三种LoRA配置在故障诊断任务上的效果:
| Rank | Target Modules | 准确率 | 显存占用 | 训练时间 |
|---|---|---|---|---|
| 8 | q_proj,v_proj | 76.2% | 12GB | 4h |
| 32 | q_proj,v_proj,k_proj | 85.7% | 14GB | 6h |
| 64 | all-linear | 89.3% | 18GB | 10h |
结论:rank=32是性价比拐点,再往上提升有限但成本陡增。
4.3 训练细节魔鬼:维修领域的batch size、lr、loss设计
通用LLM微调的超参,在维修场景要重设:
- Batch Size:不能贪大。维修工单句子长(平均42词),显存易爆。我们用梯度累积,物理batch_size=2,accumulation_steps=8,等效batch_size=16。
- Learning Rate:用cosine decay,峰值lr=2e-4。过高(5e-4)导致模型死记硬背工单ID,过低(5e-5)收敛太慢。验证集loss曲线在lr=2e-4时下降最稳。
- Loss Function:不用标准CE Loss,改用Label-Smoothed CE + 故障代码F1 Score Reward。对E1/E2这类易混淆代码,平滑系数=0.1;同时在loss中加入F1 reward项,鼓励模型对少数类(如只占3%的F09代码)也准确识别。
- Early Stopping:监控“维修步骤完整性得分”,而非accuracy。定义完整性=模型输出步骤数/标准步骤数,≥0.95才停止。避免模型只答“换主板”而省略“先断电放电”这种安全步骤。
训练过程中的关键观察:第3个epoch后,模型开始生成“注意:此机型主板接地螺丝为铜镀镍,不可用不锈钢螺丝替代”,这种细节从未出现在训练数据中,说明模型已内化维修材料学知识。
5. 蒸馏实战:不是压缩模型,而是传承老师傅的“手感”
5.1 教师模型选择:必须是“修过1000台机器”的老师傅,不是“读过1000本书”的学霸
蒸馏效果70%取决于教师模型质量。我们测试过三种教师:
- 通用大模型(Qwen3-14B):生成文本华丽,但给出“用万用表测压缩机绕组”却不说明“红表笔接U端,黑表笔接V端”,新手会接反烧表。
- 手册微调模型(Qwen2-7B+手册):能准确引用手册,但面对“用户说‘制冷慢,但压力正常’”这种矛盾现象,只会查手册,不会推理“可能是冷媒纯度不足”。
- 工单微调模型(Qwen2-7B+5000工单):输出“测冷媒纯度,用专用纯度仪,若<95%则需排空重注”,并附上本地服务商电话——这才是老师傅思维。
因此,教师模型必须满足:1)在维修工单上全量微调 2)输出含工具型号/测量点/安全警告 3)能处理矛盾信息(如“压力正常但制冷慢”)。我们最终选用工单微调的Qwen2-7B,其输出经老师傅审核通过率98.7%。
5.2 学生模型架构:轻量不是目的,可部署才是核心
学生模型选型不是越小越好,而是匹配部署场景:
- 车载终端(4GB RAM):Qwen2-0.5B,量化INT4,体积280MB。关键修改:将RoPE的max_position_embeddings从32768减至4096,因维修指令最长不过200字。
- 维修APP(Android):Phi-3-mini-4k-instruct,FP16,体积1.2GB。优势:原生支持4K上下文,能同时处理“故障描述+电路图OCR文本+历史工单”。
- IoT网关(256MB RAM):TinyLlama-1.1B,蒸馏时冻结前8层,只蒸馏后4层,体积190MB。
蒸馏损失函数设计:
- Logits Distillation:学生logits匹配教师logits,权重0.4
- Intermediate Layer Matching:学生第6层hidden state匹配教师第12层,权重0.3(抓取深层语义)
- Output Token Alignment:强制学生在“工具型号”“测量点”等关键token位置,概率分布接近教师,权重0.3(保障指令精准性)
5.3 蒸馏后验证:不是测accuracy,而是测“能不能修好”
蒸馏模型上线前,必须通过三重验证:
- 沙盒测试:用100条未见过的工单,由老师傅盲评。评分维度:步骤完整性(0-5分)、安全警告(有/无)、工具指定准确性(型号/量程)。达标线:平均分≥4.2。
- 压力测试:在目标硬件上连续运行72小时,监测显存泄漏、推理延迟抖动。要求P95延迟<800ms,无内存溢出。
- 对抗测试:故意输入“E1故障,但测得通讯电压正常”,看模型是否能推理“可能是主控板软件故障,建议升级固件”,而非僵化回答“通讯线短路”。
我们曾因忽略对抗测试,上线后用户反馈“模型总让我换通讯线,其实只是软件bug”。补救措施:在蒸馏数据中加入200条对抗样本(如“现象与手册不符,但工单证实是软件问题”),重新蒸馏后,对抗问题解决率从31%升至94%。
6. 组合拳实战:一个真实维修APP的三层架构设计
6.1 场景还原:某品牌空调售后APP的演进之路
该APP初期用RAG,用户问“E3怎么修”,返回手册第45页,但师傅看不懂电路图符号。三个月后接入微调模型,能生成步骤,但响应慢(2.3s),师傅等不及。现在上线V2.0,采用RAG+微调+蒸馏组合:
第一层:RAG实时知识库(响应<300ms)
- 索引:结构化手册(故障代码表、部件清单、安全规范)
- 作用:秒级返回“E3=室内外机通讯故障”,附带“检测CN1接口电压”等基础指令
第二层:微调模型决策中枢(响应<1.2s)
- 模型:Qwen2-1.5B LoRA微调(rank=32)
- 输入:RAG返回的结构化数据 + 用户补充信息(“测得CN1电压0V”)
- 输出:深度诊断“CN1电压0V → 检查电源板DC12V输出 → 若正常则更换通讯模块”,含工具/测量点/阈值
第三层:蒸馏模型边缘执行(响应<400ms)
- 模型:Qwen2-0.5B蒸馏版(INT4量化)
- 部署:安卓APP本地运行
- 作用:当网络中断时,接管基础诊断(E1-E9代码解读、标准拆机步骤),保证服务不中断
三层间的数据流:用户提问 → RAG返回结构化片段 → 微调模型生成诊断报告 → 蒸馏模型校验关键指令(如“断电”“放电”等安全步骤是否包含)→ 最终输出
6.2 架构收益:不只是性能提升,更是维修逻辑的闭环
这套架构带来质变:
- 准确率:从RAG单层的62% → 组合架构的93.7%(老师傅盲测评分)
- 响应速度:P95延迟从2300ms → 780ms,师傅操作不感知等待
- 离线能力:网络中断时,蒸馏模型仍能处理87%的常见故障
- 知识进化:新工单自动进入微调数据池,每月更新一次微调模型,知识保鲜
最关键的收益是维修逻辑显性化。过去老师傅的经验是“感觉”,现在变成可追溯的决策链:RAG提供依据(手册原文),微调模型提供推理(为什么是这个原因),蒸馏模型保障执行(怎么做才安全)。当新员工问“为什么先测电压再测电阻”,系统能回溯到某条工单:“因该机型电压异常会导致电阻测量失真”。
6.3 成本与ROI测算:技术选型必须算清这笔账
很多团队卡在“要不要微调”,其实是没算清经济账。我们帮该品牌测算:
| 项目 | RAG单层 | RAG+微调 | RAG+微调+蒸馏 |
|---|---|---|---|
| 开发成本 | 2人×2周 | 3人×6周 | 4人×10周 |
| 硬件成本 | 1台GPU服务器(A10) | 同上 | 增加2台边缘GPU(Jetson Orin) |
| 年运维成本 | ¥8.2万 | ¥15.6万 | ¥19.3万 |
| 年节省维修成本 | ¥22万(减少误判) | ¥58万(缩短工时+降低返修) | ¥76万(+离线服务溢价) |
| ROI周期 | 6.2个月 | 4.1个月 | 3.8个月 |
数据证明:微调不是成本中心,而是利润引擎。当误判一台空调导致返工,成本¥320;而微调模型将误判率从18%降至3.2%,单月就省下¥12.7万。
7. 常见问题与避坑指南:来自6个维修项目的血泪总结
7.1 RAG高频问题:为什么我的召回总是不准?
| 问题现象 | 根本原因 | 解决方案 | 实操心得 |
|---|---|---|---|
| 返回结果含大量无关页眉页脚 | PDF解析未过滤装饰性内容 | 改用pdfplumber+规则过滤,删除含“©”“保密”“第X页”的文本块 | 我们写了23条正则,覆盖98%厂商页眉格式 |
| 相同故障返回不同机型步骤 | chunk未绑定机型元数据 | 在每个chunk中注入"model_family":"KFR-35GW"字段,检索时强制filter | 不加这步,E1在变频机和定频机的处理完全不同 |
| 电路图描述检索失败 | OCR对线条图识别率低 | 放弃OCR,改用人工标注图示区域,生成描述文本:“图3-5:四通阀控制电路,含继电器K1、二极管D3、电阻R7” | 标注100张图花了3天,但后续准确率提升40% |
注意:别用“提高top_k”解决召回不准。top_k=10返回9个废块,不如top_k=3返回3个精准块。精准度永远优于数量。
7.2 微调踩坑实录:那些让训练崩溃的“小细节”
坑1:数据泄露
现象:验证集acc 98%,上线后暴跌至41%。
原因:训练数据中混入了测试用的工单ID,模型记住了ID而非模式。
解决:用hashlib对每条工单生成唯一ID,训练前检查ID是否在测试集出现。坑2:温度标签错误
现象:模型总把“35℃环境下的E2”判为“E1”。
原因:工单中“环境温度”字段有“35度”“35℃”“摄氏35度”三种写法,embedding未归一化。
解决:预处理时统一为“35°C”,并添加温度单位token。坑3:LoRA适配器冲突
现象:加载多个LoRA时显存暴涨。
原因:不同任务的LoRA(诊断/步骤/参数)未隔离,权重互相干扰。
解决:为每个任务创建独立adapter,推理时动态load/unload。
7.3 蒸馏致命误区:学生模型“学得像”不等于“用得好”
误区1:只蒸馏logits,不管输出格式
结果:学生模型输出“更换电容”,但没说“更换CBB60 35μF”,师傅买错配件。
纠正:在loss中加入token-level KL divergence,重点约束“CBB60”“35μF”等关键token。误区2:教师模型未做安全加固
结果:教师模型输出“可用砂纸打磨电路板焊点”,实际会损伤PCB。
纠正:在教师模型prompt中加入安全约束,并在蒸馏数据中标注所有安全警告。误区3:忽略硬件适配性测试
结果:INT4量化后,在Jetson Orin上推理崩溃。
纠正:蒸馏后必须在目标硬件上跑full test suite,包括极端温度(-20℃~60℃)下的稳定性。
最后分享一个真实技巧:在维修APP里,我们给每个模型输出加了“可信度指示器”。RAG结果标“手册依据”,微调结果标“工单验证”,蒸馏结果标“边缘可靠”。师傅一看就知道该信哪部分,这比任何技术指标都管用。