以「电商客服」为例:如何构造领域 LLM 微调数据集?
先回答为什么不能只靠 Prompt 和 RAG,再拆解一个支持多轮对话、情绪识别和流程引导的高质量微调数据集怎么从脏日志里炼出来,以及冷启动阶段的蒸馏与增强策略。
TL;DR
RAG 和 Prompt 工程已经能解决很多问题,为什么还要微调? 答案在于:如果只是想让模型临时回答几个问题,写好 Prompt 就够了; 但如果希望它长期、批量、稳定地遵守业务规则,并大幅降低推理成本,微调是必经之路。 这篇以电商客服这个高频、高并发、强业务逻辑的场景为例,拆三件事: 微调在权重层面固化人设与纪律、保证结构化输出、压缩上下文换取成本和延迟; 数据集怎么从几十万条脏乱差的聊天日志里淘金——筛选切分、脱敏、归一化, 再按三到四成单轮、六到七成多轮的比例组织,重点造流程引导型对话和异常分支; 以及冷启动没数据时的专家标注、知识蒸馏和四种数据增强策略。
目录
我们可能都思考过一个灵魂拷问:RAG 和 Prompt 工程已经能解决很多问题了,为什么还需要做微调呢?
对于电商客服、医疗咨询等对专业度、合规性和品牌调性要求极高的场景,通用大模型会显得「懂事但不够专业」。
如果只是想让模型临时回答几个问题,写好 Prompt 就够了;但如果希望它长期、批量、稳定地遵守业务规则,并大幅降低推理成本,微调是必经之路。
这篇文章基于电商客服这个高频、高并发、强业务逻辑的场景,拆解如何构建一个支持多轮对话、情绪识别和流程引导的高质量微调数据集。
一、为什么需要微调?
微调的第一步,不是急着去爬取数据,而是搞清楚为什么要微调,因为很多时候容易陷入「为了微调而微调」的误区。
(1)特定风格和品牌人设
Prompt 很容易受模型温度和随机性影响,多轮对话后模型容易忘记最初的设定(比如忘记了「只能退款不能退货」的规则)。而微调是在权重层面固化了客服的人设和纪律,能保证成千上万次调用中,语气和口径的高度一致。
(2)严格的结构化输出
电商场景中,通常需要从用户对话中提取订单号、意图、情绪等信息,并输出为标准的 JSON 格式供 API 调用。对于复杂的长对话,通用模型容易提取不全,或者输出的 JSON 格式出错(逗号、引号问题),导致下游系统崩溃。
微调可以创建包含「原始对话 + 目标 JSON」配对的数据集,让模型学会从非结构化文本到精确结构化 JSON 的映射,显著提升系统稳定性。
(3)成本与延迟的双重夹击
在电商大促期间,流量是海量的。Prompt 模式下每次对话都要把长长的系统提示词和几个 Few-shot 示例塞进上下文,Token 数多意味着推理费用高、延迟高;微调模式下模型已经记住了这些通用知识和话术风格,调用时上下文极短,响应更快,边际成本显著降低。
一个推荐的组合方法
并不是说微调了就不用 RAG。成熟的架构通常是:微调基座掌握通用话术、安抚情绪、SOP 流程骨架;RAG 处理实时变动的信息(如今天的退货政策、用户的具体订单状态)。
微调是为了换取后期低成本、高一致性与可控合规;RAG 是为了解决知识的时效性和长尾问题。
在电商客服场景,大部分情况会走这条路径:先小规模 Prompt 验证 → 收集日志 → 微调主模型 → RAG 加规则做补充。这样既快又稳,也最符合成本效益。
二、如何构造高质量的电商客服数据集?
在电商客服场景下,一个标准的微调数据条目通常采用 JSON 格式,包含 conversation、role、emotion 以及 context 等字段。(虽然多轮对话本身就是上下文,但在某些需要预置背景、比如订单详情已由 API 获取的情况下,context 字段会很有用。)
{ "id": "dialogue_20251222_001", "context": "场景:用户询问订单物流状态(可选)", "conversation": [ { "role": "用户", "content": "你好,请问我的订单 12345 现在到哪了?", "emotion": "焦急" }, { "role": "客服", "content": "您好,我来帮您查询,请稍候。", "emotion": "礼貌" }, { "role": "客服", "content": "经查询,您的订单已离开深圳集散中心,预计明天送达。", "emotion": "专业" } ]}1、数据来源:从日志中淘金
起初拿到的数据大概率是几十万条原始的、脏乱差的客服聊天日志。提炼的 pipeline 是标准化的。
Step 1:筛选与切分。不是所有日志都有用。剔除那些只有「在吗?」就没有下文的无效对话,将长达一小时的闲聊切分为聚焦于单一意图(如查物流、退款)的独立对话片段。
Step 2:敏感信息脱敏(红线动作)。这是合规的底线,必须替换掉所有的 PII,例如将「张三」替换为 [姓名],将「138xxxx」替换为 [电话]。
注意脱敏不能破坏句子结构,要用占位符替换而不是直接删除,否则模型会学到残缺的句式。宁可过度脱敏,也不要冒泄露隐私的风险。
Step 3:归一化。真实用户打字很随意,需要适度调整但不能过度:明显的错别字要改(如「发货」打成「发活」);语气词、表情符号如果能体现情绪可以适当保留(如「亲~」)或转换为文本描述(如 [笑脸]);企业侧称呼统一为「您」,消除不同客服人员的个人口癖。
2、数据集的核心构成:单轮 vs 多轮
一个高质量的客服数据集,不能只有简单的问答。建议的比例是单轮对话占 30% 到 40%,多轮对话占 60% 到 70%。
单轮对话主要用于解决无需追问的简单任务,如发票开具、政策查询,训练模型快速应答简单问题的能力,强化知识准确性。
多轮对话是微调的重头戏,考察的是模型记忆历史信息和引导用户完成任务的能力。电商咨询往往是连续的,模型必须记住上文信息(如订单号)才能进行后续操作。
3、高阶技巧:流程引导类对话设计
这是区分「聊天机器人」和「业务 Agent」的关键。
在原始日志中,经常会看到用户说「我想退货」,然后客服像挤牙膏一样问单号、问原因。在构造数据时,可以把这种引导标准化:
Round 1 用户:商品有点问题,我想退货。 客服:很抱歉给您带来不便。请问商品还在吗?具体是什么质量问题? (安抚 + 确认状态)
Round 2 用户:在的,鞋底开胶了。 客服:明白了,这属于质量问题。我们需要您的订单号来登记。 (定性 + 索要信息)
Round 3 用户:订单号是 202303250015。 客服:收到。接下来请您:1) 将商品放入原包装;2) 贴上退货码; 3) 交给快递员。退货码稍后短信发送给您。 (指令清晰的 SOP 引导)对于退货、换货、投诉这类复杂业务,可以先画出流程图——确认问题 → 核对信息 → 给出方案 → 结束语,每一轮数据都对应流程图上的一个节点。
并且不能只造顺利的数据,还要加入用户中途反悔、没有订单号、不符合退货条件等异常分支,来训练模型的鲁棒性。
4、赋予灵魂:情绪识别标签的嵌入
区别于冰冷的机器,金牌客服的核心在于共情,而微调是注入这种能力的最佳时机。
建立情绪标签体系,为每一条用户消息打上标签,参考分布是:中性 50%(正常咨询)、不满 20%(轻微抱怨,如「怎么这么慢」)、困惑 15%(用户不懂规则)、愤怒 10%(激烈言辞,这是训练的重点)、焦急 5% 到 10%(如「明天就要用」)、满意 5%(收尾感谢)。
标签的嵌入方式是 JSON 字段:
{ "role": "用户", "content": "我的包裹怎么还没到?!", "emotion": "愤怒" }训练时,这就是在告诉模型:当输入带有「愤怒」特征时,你的输出应该是「安抚 + 高效解决」。模型将隐式学习到:遇到愤怒先道歉再查单;遇到焦急强调时效,使用「马上」「立即」等词汇;遇到满意礼貌致谢。
三、数据不够怎么办?(蒸馏与增强)
在项目冷启动阶段,我们可能没有那么多真实日志,这时需要依靠合成数据和数据增强。
1、合成数据
方案 A:专家标注(高成本、高质量)。来源是线上问答摘录(如知乎、小红书)、机构内部咨询记录,流程是双人标注加主审终审,确保业务错误率低于 1%。这批数据用于固化核心场景的模型质量。
方案 B:知识蒸馏(低成本、规模化)。利用 GPT-5、DeepSeek 等超强模型作为教师,生成大量对话数据再教给小模型。比如让 GPT 同时扮演用户和客服,生成多样的对话:
你是一名有 20 年经验的资深客服……请针对电商客服处理退货场景,生成 5 个常见问答。大致流程是:Query 池 → 批量 Prompt → 教师模型生成 → 规则过滤(去重、去敏感词)→ 专家抽检 → 存入训练集。
2、数据增强策略
有了高质量的种子数据,接下来解决「量」和「泛化」的问题,最常见的做法是举一反三:
- 同义改写:用大模型把一句话变出 5 种说法,例如「没货了」可以改成「库存已售罄」「暂时缺货」。
- 情景替换:把「手机退货」的对话模板替换实体变成「衣服退货」,同时修改相应属性(「屏幕碎了」变成「拉链坏了」)。
- 情绪转换:把一个原本温和的咨询改写成愤怒的质问,看看模型或人工如何调整回复,这能极大丰富负面样本的数量。
- 引入噪音:刻意加入少量拼音、拼写错误,模拟真实用户的输入环境,提高抗干扰能力。
此外还要监控数据集的分布,避免「偏科」:
- 场景平衡:不能全是退货,要有售前咨询、物流查询、投诉等,比例要符合业务实际(如物流占 20% 到 30%,售后占 20% 到 25%)。
- 情绪平衡:虽然真实场景中愤怒很少,但训练集中必须超采样愤怒样本,否则模型在实战中遇到真正生气的用户会不知所措。
最后
在 AI 应用落地的深水区,模型往往不是瓶颈,数据才是。
构建一个行业微调模型,本质上是将专家的经验(标注数据)、公开的知识(通用语料)和模型的推理能力(蒸馏)串联成一个闭环。
对于 PM 而言,掌握微调不仅仅是理解技术原理,更是掌握一种定义模型行为的能力——理解如何用数据让模型准确地按照规定的意图、风格和逻辑去服务用户。
核心结论
标注「判断」「假设」的是我的看法而非事实;标注「已推翻」的保留在这里,不删除。
只想让模型临时回答几个问题,写好 Prompt 就够了;想让它长期、批量、稳定地遵守业务规则并大幅降低推理成本,微调才是必经之路。#
判断 · 把握较大
微调和 RAG 不是二选一。成熟架构是微调基座掌握通用话术、情绪安抚和 SOP 骨架,RAG 处理实时变动的信息——微调换的是低成本、高一致性与可控合规,RAG 解的是时效性和长尾。#
判断 · 把握较大
脱敏必须用占位符替换而不是直接删除,否则模型会学到残缺的句式。宁可过度脱敏,也不要冒泄露隐私的风险。#
判断
流程引导型数据不能只造顺利的路径,必须加入用户中途反悔、没有订单号、不符合退货条件这些异常分支,否则模型在真实业务里一被打断就乱。#
判断 · 把握较大
真实场景中愤怒样本很少,但训练集中必须超采样,否则模型在实战中遇到真正生气的用户会不知所措。情绪分布要刻意偏离真实分布。#
判断
引用本文
晨旭,《以「电商客服」为例:如何构造领域 LLM 微调数据集?》,晨光里的AI,2025-12-23
[晨旭:《以「电商客服」为例:如何构造领域 LLM 微调数据集?》](https://chenxu.xin/writing/ecommerce-finetune-dataset)带进你的 AI 继续追问
这篇文章有一份干净的 Markdown 原文,可以直接交给任何模型读,不用复制粘贴。