一句话定义:JSONL(JSON Lines)微调数据格式,是一种"每行一个独立的 JSON 对象"的纯文本文件,在指令微调(instruction tuning)中被广泛用来存放"用户问了什么、模型应该怎么答"的示范样本。
长什么样
打开这种文件,你看到的是一行一行的记录,形如:
```
{"messages":[{"role":"system","content":"你是电商客服"},{"role":"user","content":"订单能改收货地址吗"},{"role":"assistant","content":"未发货可以修改,请提供订单号。"}]}
{"messages":[{"role":"user","content":"发票怎么开"},{"role":"assistant","content":"在订单详情页点“申请开票”,填写抬头后 24 小时内开出。"}]}
```
三条硬规矩:一行必须是一个完整合法的 JSON;行与行之间不加逗号,外面也不套方括号;读取时逐行解析,某一行格式坏了,只丢这一行,不会整份文件报废。
打个比方:它像一沓快递面单,不是一本装订好的书。每张单子自成一体,抽掉一张、补一张、改一张都不影响其他;而普通 JSON 是一本书,中间撕掉一页,整本就读不下去了。再往深一层看,每一行其实是一段"剧本":谁在说(role)、说了什么(content)、该谁接话,都标得清清楚楚。
和相邻概念的区别
| 格式 | 结构 | 在微调里的角色 |
|---|---|---|
| JSON | 一个整体数组或对象 | 可读性好,但文件大时无法逐行流式读取,一处语法错全盘失败 |
| JSONL | 一行一条样本 | 微调数据集的主力格式,能边读边训练,便于定位坏样本 |
| CSV | 扁平行列 | 适合分类标注,但表达不了多轮对话的嵌套结构 |
| TXT 纯文本 | 只有文字 | 适合预训练语料,没有角色标记,模型分不清谁在说话 |
这里最需要澄清的一点是:微调不是把文档丢进去。把一本产品手册整本喂给模型,它学到的是"这些字会一起出现",而不是"被问到该怎么答"。微调真正塑造的是行为模式——回答的结构、语气、多轮上下文怎么衔接、什么该拒答。想让模型"查阅资料再回答",那是AI 词典:检索增强生成">检索增强生成(RAG, Retrieval-Augmented Generation)的活儿,两者常配合使用,但不能互相替代。
对从业者和普通人的意义
做数据的人:一行一条意味着你可以按条抽样质检、按条 diff 版本、按条统计角色分布;角色标记(system / user / assistant)不是装饰,缺了它模型就不知道哪句是"提问"、哪句是"标准答案"。写 assistant 那一段时,要写"理想的回答",而不是"知识点的摘抄"。
业务侧的人:你交出去的不是资料,是示范对话。所以准备微调数据,本质是在写一份份"标准话术样本"——谁来写、写成什么样,直接决定模型上线后的说话方式。具体字段名和角色取值各家平台略有差异,落地时以官方文档为准。
