本文详解如何利用EasyDataset工具构建大模型微调所需的问答对数据集。涵盖问题生成(单条/批量)、答案生成(含思维链、多轮对话)、质量评估及导出为Alpaca/ShareGPT格式,手把手教你打造高质量SFT数据集。

前排提示,文末有大模型AGI-CSDN独家资料包哦!

前言

详细讲解了如何利用EasyDataset构建大模型预训练数据集,涵盖从环境配置、文本分块(多种策略)、数据清洗到领域标签生成,最终导出预训练数据的完整流程。

除了预训练,监督微调(Supervised Fine-Tuning) 也是大模型训练中不可或缺的关键环节,而该过程通常依赖于大家所熟知的问答对数据集。如何高效、高质量地生成这类数据集,始终是学术研究与工程实践中的重要课题。

为了让读者更直观地理解问答数据集的构建方法,本期内容将继续以EasyDataset工具为核心,结合实际操作,带领大家走一遍问答对数据生成的完整流程,帮助大家掌握从原始文本到高质量微调数据集的构建方法。

一、EasyDataset问答对数据集生成:问题生成

基于已经生成的文本块,继续完成问答对数据集的构建。问答对数据集生成的第一步,便是根据文本块生成问题。

EasyDataset 的问题生成过程,是从分割好的文本块中提取问题,并根据已建立的领域标签树对问题自动进行打标签。问题生成既要保持细粒度、更要全面地覆盖知识,需要涵盖目标训练知识的各个方面。

EasyDataset中每个文本块生成问题的数量,由「项目设置 → 任务设置」中的“生成问题的最大长度”参数决定。默认设置为每 240 个字符生成一个问题,用户可根据文档颗粒度自行调整。本例中笔者保持默认设置。

图片

图片

1.1 EasyDataset 问题生成的基本操作

1.1.1 单个文本块生成问题

首先打开EasyDataset项目的数据源列表,在需要生成问题的文本块右下角,点击问题生成按钮,即可针对该文本块生成相应的问题。

图片

由于笔者保持默认的 240 字符设置,所选文本块约 3573 个字符,最终生成了 14 个问题。生成的问题既可以在文本块上方直接查看,也可以点击项目导航栏的「问题」模块进行更详细的浏览。问题模块会列出每个问题所属的文本块以及根据领域标签树自动生成的标签信息。

图片

1.1.2 批量生成问题

除了针对单个文本块生成问题,EasyDataset 还支持批量生成功能。用户可批量选择需要生成问题的文本块,并实时查看任务进度。

图片

1.1.3 问题管理

所有生成的问题均可通过项目导航栏的「问题」模块进行统一管理。该模块提供了两种视图:

  • 列表视图

    可查看问题名称、关联的领域标签、所属文本块;支持按问题或标签名称筛选,以及编辑现有问题或新增自定义问题。

图片

  • 领域树视图:可按领域标签树层级查看各标签下构造出的问题。

图片

1.2 问题生成基本算法

在了解 EasyDataset 的问题生成功能后,笔者进一步探讨目前主流的、在实际工作中常用的问题生成算法。

1.2.1 基于提示工程的生成方法

基于提示工程的方法直接向大模型下达指令,例如“请根据以下段落生成一个可回答的问题”,并通过少量示例指导模型根据文本块生成问题。完整的提示词通常包括角色扮演(赋予模型特定身份以提升生成准确性)和约束条件(明确问题的类型、长度或难度等)。这种方法快速、成本低,适合探索性任务和小规模数据集构建。

实际上,EasyDataset 的问题生成正是基于提示工程实现的。用户可在「项目设置 → 提示词设置」中查看并自由编辑问题生成的提示词。需要注意的是,编辑时不要破坏原有提示词中的变量,否则可能导致生成流程失败。例如,在基础答案生成提示词中,{{text}} 代表参考文本,{{question}} 代表需要回答的问题,二者均为关键变量。

图片

1.2.2 基于知识增强的生成方法

基于提示工程的方法虽然便捷,但存在一定局限性。例如,同一篇文章中不同章节之间存在语义关联,若仅从单个文本块中生成问题,则难以捕捉这些跨块的语义关系。为此,衍生出基于知识增强的生成方法

该方法将分块后的文本全部存入知识库,根据主题(如已生成的标签)从大规模语料库或知识库中检索相关文档片段,再将多个相关片段作为上下文输入大模型生成问题。这种方式特别适合构建具有全局意识的高质量数据集。

更先进的知识增强方法是将文本与知识图谱中的结构化知识(三元组)相结合,作为生成问题的上下文。利用知识图谱中的多跳关系可以生成复杂问题,例如基于“刘慈欣 → 出生地 → 山西 → 省会 → 太原”生成“刘慈欣家乡的省会是哪里?”。这种方法能够生成需要背景知识或逻辑推理的问题,显著提升问题的深度。

1.2.3 基于数据增强的生成方法

在生成问题前,通常已拥有一些人工标注的优质问题样本。基于数据增强的方法一般包含以下步骤:

  1. 将人工标注的优质问题作为种子问题。
  2. 通过提示词以种子问题为示例生成新的问题。
  3. 对新生成的问题进行“翻译再回译”、“同义改写”或增加语境等操作,进一步丰富问题的语言表达形式。

这种方法利用变换已有数据来创造新的训练样本,能有效扩充问题的规模和多样性,提升数据集的整体质量。

二、EasyDataset问答对数据集生成:答案生成

在成功生成问题后,下一步便是为这些问题生成对应的答案。EasyDataset 提供了灵活的答案生成能力,支持单条生成、批量生成,甚至多轮对话数据集的构建。笔者将详细介绍答案生成的基本操作,并探讨当前主流的答案生成算法。

2.1 EasyDataset 答案生成基本操作

2.1.1 单个问题生成答案(含思维链支持)

在项目的问题列表视图中,点击单个问题右侧的魔法棒图标,即可为该问题生成答案。生成成功后,右侧会显示已生成答案的数量(单个问题支持生成多个答案)。

图片

当前示例中使用的是 deepseek-chat 对话模型。若选用 deepseek-reasoner 等推理模型,生成答案的同时还会附带思维链(Chain of Thought, CoT)数据,这些数据可用于训练具备推理能力的模型。

图片

2.1.2 批量生成答案

EasyDataset 支持多选或全选问题,批量触发答案生成任务。用户可实时查看批量任务的执行进度。

图片

2.1.3 多轮对话数据集构建

重要提示:在生成多轮对话数据前,需先在「项目设置 → 任务设置 → 多轮对话数据集」中进行配置,包括系统提示词、对话场景、对话轮数、用户与助手的角色设定等。以本文档(GPT-OSS 相关)为例,笔者进行如下配置:

图片

在实际交互中,如果大模型未能一次性给出满意回答,用户往往会持续追问。这要求模型不仅具备记忆能力以记录对话历史,还需对多轮对话内容做出恰当响应。为此,EasyDataset 提供了多轮对话数据集生成功能。在问题列表视图下,可选择对单个问题生成多轮对话,也支持后台批量合成。

图片

2.1.4 数据集管理

所有生成的单轮或多轮对话数据集均可通过项目导航栏的「数据集列表」进行统一管理。以单轮对话数据集为例,列表展示了每条数据的原始问题、创建时间、所用模型、领域标签、是否包含思维链(COT)、答案摘要等信息。

图片

点击单条数据可进入详情页,查看完整信息,包括问题、答案、思维链、使用模型、领域标签、创建时间及关联的文本块。点击文本块名称可查看原始文本块详情,便于对比生成内容与原始内容的差异。如对生成的答案或思维链不满意,可直接点击编辑按钮进行手动修正。

图片

2.2 答案生成基本算法

接下来笔者分享几种当前主流且实用的答案生成算法。

2.2.1 基于大模型的提示生成

该方法直接利用大模型,通过精心设计的提示词引导模型回答问题。例如:“根据以下文档,请简要回答:{问题}”。提示词可以引导模型先思考再回答。EasyDataset 同样基于此原理,用户可在项目设置中查看并自定义答案生成的提示词。

图片

2.2.2 基于知识检索增强生成

为缓解大模型的幻觉问题并提高答案的事实依据,可采用检索增强生成。该方法针对输入问题,先从知识库(如向量数据库、搜索引擎)中检索相关文档片段,再将问题和检索到的片段一同输入大模型生成答案。这种方式能有效利用外部知识,捕获文本块间的关联,并支持实时知识更新。

当问题涉及实体关系或多跳推理时,可引入知识图谱技术。知识图谱提供结构化知识支持:将问题编码为向量,同时在知识图谱上利用图神经网络进行信息传播与聚合,定位最可能的答案实体,并据此生成回答。这种方法生成的答案准确且关联性强,但生成速度相对较慢。

2.2.3 基于工具调用的答案生成

现代大模型常结合 Function Calling 技术调用外部工具,以完成需要计算或实时信息的任务。

  1. 代码解释器与计算

    当问题涉及数学计算或数据分析时,模型可生成 Python 代码并执行,将计算结果作为答案返回。

  2. API 调用

    模型识别用户需要实时信息(如天气、股票价格)时,自动调用相应 API 获取数据,再将数据整理成自然语言答案返回。

这些方法拓展了模型的能力边界,使答案更加准确和实用。

三、EasyDataset问答对数据集生成:数据集质量评估

通过前两节的操作,大家已经能够快速生成大量的问答对数据。然而,这些由大模型生成的数据并非直接可用——其中难免包含噪声、幻觉或不完整的内容。为了获得高质量的监督微调数据集,数据质量评估是必不可少的环节

最直观的评估方式莫过于人工审核。EasyDataset 提供了数据确认、编辑和删除功能,支持对单条数据进行人工校验。但实际微调训练往往需要成千上万条数据,完全依赖人工筛选既不现实也不经济。另一种思路是利用另一个大模型对问答对进行合理性评估,但这种方式的质量通常难以达到人工审核的水平。因此,在实际工程中,笔者在工作中通常采用 “自动化初筛 + 人工抽检 + 迭代优化” 的混合评估策略,在保证质量的同时兼顾效率。

具体流程如下:

  1. 自动化预评估

    对生成的大规模数据运行统计指标分析、质量分类器(如基于BERT的小规模深度学习模型)打分、文本去重等操作,快速剔除明显不合格的样本,为后续人工评估缩小范围。

  2. 分层抽样人工评估

    根据自动化评估结果(如置信度低、长尾分布等)对数据集进行分层抽样,将可能存在问题的样本类别范围筛选出来,由人工进行详细审核,记录错误类型(如事实错误、逻辑不一致、不完整等)。

  3. 反馈闭环

    将人工评估发现的错误类型归类分析,并反馈到数据生成流程。例如,调整问题生成或答案生成的提示词、优化文本分块策略、补充领域标签等,持续改进数据集质量。

  4. 持续监控

    数据集质量评估并非一劳永逸。在模型训练过程中,还需通过训练损失、验证集表现等指标间接监控数据集质量,必要时回溯分析数据问题并及时优化数据流程。

以上四个步骤的循环迭代会逐步逼近高质量数据的目标,为后续的模型微调打下坚实基础。

四、EasyDataset问答对数据集导出:不同格式的选择与实践

问答对数据集构建完成后,最后一步便是将其导出为可供模型训练框架直接使用的格式。在构建大模型训练数据集时,采用统一的标准格式导出数据至关重要,主要体现在以下几个方面:

  • 兼容性

    标准格式能够确保数据被主流训练框架(如LLamaFactory、MS-SWIFT等)直接读取,无需额外转换,大幅提升开发效率。

  • 可复现性

    统一的结构有利于数据集的共享与复现,研究人员可以轻松比对不同数据集的质量与特点,推动领域的良性发展。

  • 规范性

    标准格式规范了字段含义,避免了因自定义格式导致的歧义或信息丢失,为模型的稳定训练奠定基础。

因此,选择业界公认的格式导出数据,是连接数据构建与模型训练的关键桥梁。EasyDataset 支持导出多种常见格式,本期重点介绍两种最常用的格式:Alpaca格式ShareGPT格式

图片

4.1 Alpaca格式:适用于单轮指令微调

Alpaca格式源自斯坦福大学发布的Alpaca模型,主要用于指令微调(Instruction Tuning) 任务。其数据结构简洁明了,通常包含三个核心字段:

  • instruction

    指令文本,描述任务要求。

  • input

    输入文本(可选),为指令提供上下文或补充信息。

  • output

    期望的输出文本。

这种设计强调模型对单条指令的理解和执行能力,适用于翻译、代码生成、知识问答等一次性任务。Alpaca格式的问答对往往独立存在,不依赖上下文,便于模型学习“指令-响应”的映射关系。下图为EasyDataset导出的Alpaca格式示例:

图片

4.2 ShareGPT格式:适用于多轮对话场景

ShareGPT格式源于社区项目ShareGPT,旨在捕捉真实的多轮对话场景。它以对话列表的形式组织数据,通过conversationsmessages字段记录多轮交互,每轮对话明确标注角色(如humangptuserassistant)及内容。

这种格式保留了对话的上下文连贯性,使模型能够学习如何根据历史信息进行自然回应,特别适合训练聊天机器人、客服系统等需要多轮交互能力的模型。相较于Alpaca的单轮结构,ShareGPT更能体现对话的流动性和逻辑性,对多轮对话的表达更加充分。下图为EasyDataset导出的ShareGPT格式示例:

图片

五、总结

本篇内容以EasyDataset工具为例,系统介绍了问答对数据集的完整生成流程:从问题生成(支持单条/批量、三种算法)、答案生成(含思维链、多轮对话),到采用“自动化初筛+人工抽检+迭代优化”策略进行质量评估,最后导出Alpaca或ShareGPT标准格式,为模型微调提供高质量数据。到此数据集构建的基本工具指南笔者就介绍完全,下一篇文章开始将正式介绍大模型训练相关工具,大家敬请期待~

读者福利:倘若大家对大模型感兴趣,那么这套大模型学习资料一定对你有用。

针对0基础小白:

如果你是零基础小白,快速入门大模型是可行的。
大模型学习流程较短,学习内容全面,需要理论与实践结合
学习计划和方向能根据资料进行归纳总结

包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

请添加图片描述

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉大模型视频和PDF合集👈

这里我们能提供零基础学习书籍和视频。作为最快捷也是最有效的方式之一,跟着老师的思路,由浅入深,从理论到实操,其实大模型并不难

在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓
76168381/article/details/137261875?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%A4%A7%E6%A8%A1%E5%9E%8B&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-137261875.142%5Ev100%5Epc_search_result_base4&spm=1018.2226.3001.4187)👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐