1.数据集
“Garbage In, Garbage Out”原则是数据驱动决策和人工智能系统构建中的物理定律。对于基于大模型的AI应用构建当然也不例外,需要高质量的数据集对智能体进行评估。准备高质量数据集的具体工作包括:数据整理、数据划分和版本管理。
1.1数据整理
常用数据整理的方法包括:人工整理、线上收集和合成数据。在开始创建AI应用时没有现成数据可用,一般靠人工来整理,应用上线后会生成大量的真实数据,可以作为数据源,基于人工整理数据和线上获取的数据,还可以根据各种策略合成数据。
1.1.1人工整理
在开始构建AI应用时,开发人员对于应用能处理什么样的输入数据以及预期的输出已经心中有数,此时可先手动创建10至20条高质量的测试数据,用于覆盖一般正常情况和边界用例。
1.1.2线上收集
已经上线运行的系统,用户使用过程中产生的数据是绝佳的、最真实的数据,当面对海量的线上数据时,如何能够获取满足要求的高质量数据呢?
首先,收集用户反馈。用户反馈尤其是负面反馈最有价值的数据,负面反馈让我们知道在哪些点应用表现不让人满意,需要收集负面反馈,用于将来验证应用的改进效果。
其次,使用启发式方法。AI应用开发人员可以运用启发式策略来识别“有研究价值”的数据点。例如,那些耗时较长的运行记录往往值得深入分析,并将其纳入数据集。
最后,使用大模型反馈。AI应用开发人员可以借助另一个大模型来识别值得关注的运行记录。例如,当用户需要重新表述问题或以某种方式对模型纠偏时——这通常意味着聊天机器人初始回复有误——可以使用大语言模型自动标记这类对话场景。
1.1.3合成数据
当你已经整理了一定数量的样本数据后,可以人工生成工多的数据。前提是这些样本数据是精心制作的高质量数据,因为合成的数据是从这些样本派生的,当然会继承样本特征,基于低质量的样本合成数据的质量可想而知。
1.2数据划分
正如在机器学习中把数据集分成训练集、测试集和验证集从而避免过拟合一样,当评估AI应用时,往往会把数据集划分成不同的部分。比如,使用一小部分数据用户快速的迭代,大部分数据用于最后的评估。另外,数据划分对于应用的可解释性非常重要。比如,针对一个RAG应用,你可能希望把数据分成两部分,一部分关注上线文相关性,一部分关注答案相关性。
1.3版本管理
正如对代码进行版本管理一样,对于数据集数据集也采用版本控制机制。每当在数据集中添加、更新或删除数据时,都会自动生成一个新版本的数据集。从而可以能够轻松追溯数据集修改记录,并在操作失误时快速回滚到先前的版本。
2.评估器
评估器是一个函数,用于对应用在一条样本数据上的执行表现进行评分。下面对评估器的输入/输出和评估技术进行说明。
2.1输入/输出
评估器的输入包括样本数据和运行数据,其中样本数据包括输入、参考输出和元数据,运行数据包括应用的输出结果及中间步骤。
评估器的输出数据包括:
1)key:评估度量指标名称
2)score|value:如果度量指标是数字类型用score,如果是分类则用value
3)comment:评分理由或其他说明性文字
2.2评估技术
2.2.1人工评估
人工评估通常是开展评估工作的理想起点。借助LangSmith,AI应用开发人员能够轻松审查大语言模型应用的输出结果及其执行轨迹,从而实现对AI应用的评估。
2.2.2启发式评估
启发式评估是基于确定性的规则完成的,启发式评估非常适用于执行简单检查,例如:确保聊天机器人的回复内容非空、验证生成的代码片段可被编译,或是判定分类结果完全准确。
2.2.3大模型评估
使用大模型评估时,往往把评估规则包含在系统提示词中。可以是无参考的,比如判断请求内容是否包含违规内容或是否符合特定标准,也可以是无参考的,比如对照参考输出验证实际输出结果的事实准确性。
使用大模型评估时需注意:应仔细核查评估结果,必要时优化评估提示词。通常建议采用少样本评估模式——在评估提示词中提供包含输入、输出和对应评分的示范案例,这种方式往往能显著提升评估效果。
2.2.4 配对评估
配对评估用于比较AI应用的两个版本,可以使用人工评估技术,让他们对两个版本应用的结果进行标注,也可以使用启发式评估,比如两个输出哪个更长一些,还可以使用大模型评估,此时需要使用特定的配对评估提示词。
实践中,当对一个AI应用的一个输出很难评分时,比较两个输出往往是比较容易的,此时往往采用配对评估。
3.实验
每当我们在一个数据集上运行AI应用,称之为一次实验。每次实验的结果都可以在LangSmtih显示。往往我们会在同一个数据集上进行多次实验,用于测试大模型的配置或提示词等,在LangSmith中把基于一个数据集的实验显示在一张列表中,还可以把两次实验的结果在一个视图中进行比较。
LangSmtih还可以支持对一个实验重复执行的次数、并发数和调用缓存以备后继重复执行。
4.离线评估
在预先整理好的数据集上进行的评估就是离线评估,离线评估一般在预生产环境进行。离线评估包括基准测试、单元测试、回归测试和回溯测试。
4.1基准评估
这个概念你一定不陌生,现在各种大模型的基准测试比比可见。在开发自己的AI应用时,基准测试也是必不可少的。到底什么是基准测试?基础测试就是:
整理出一个具有代表性的输入数据集并定义关键性能指标,然后对多个版本的应用程序进行基准测试以找出最佳版本。基准测试可能相当耗时,因为在多数应用场景中,不仅需要构建包含黄金标准参考答案的数据集,还需设计完善的评估指标来对比实验输出与参考标准。以RAG智能问答机器人为例,这通常表现为包含问题与参考答案的数据集,以及一个大语言模型即评估器,用于判定实际答案与参考答案是否达到语义等价。而对于ReACT智能体来说,则可能体现为包含用户请求的数据集和模型预期调用的工具集参考标准,再配以启发式评估器来验证是否完整执行了所有参考工具调用。
4.2单元测试
单元测试在传统软件开发中的重要性无需多言,在在AI应用开发过程中其仍作为质量保证的利器。因为大模型输出的随机性,所以在对AI应用进行单元测试时,使用基于规则的确定性评估器。单元测试对于AI应用来说,是必须通过的测试,并且往往纳入持续集成流程运行。!
4.3回归测试
回归测试的核心作用是确保新版AI应用在相同的用例上与前一个版本相比,性能不出现倒退。在新版本上线时,都必须进行回归测试。
4.4回溯测试
回溯测试一种将数据集构建(前文已论述)与评估流程相结合的方法。当线上环境积累了大量历史数据时,可以把历史数据转换为标准化数据集,然后在发布新版本AI应用前,现在该数据集上进行测试。通过回溯测试方式,能够有效评估新版本在面对历史用户真实输入时的性能表现。
5.在线评估
对已部署上线的AI应用产生的输出进行(准)实时评估,称为在线评估。在线评估,不需要预先准备数据集,当然更无法提供参考答案。在线评估直接在真实输入和输出产生的同时运行评估程序。在线评估能有效监控智能应用运行状态,及时发现异常行为。
在线评估与离线评估可协同工作,例如,通过在线评估器对输入问题进行分类归集,形成的分类数据集随后可用于构建离线评估所需的数据集。
6.评估与测试
到目前为止,我们并没有严格区分评估与测试的概念,在AI应用语境下,他们还是有区别的。
评估通过特定指标衡量系统性能的过程。评估指标可以是模糊或主观的,其价值更多体现在相对比较而非绝对度量。因此,评估通常用于不同系统间的对比分析,而非对单一系统下确定性结论;测试则用于断言系统的正确性。唯有通过全部测试的系统才具备上线运行资格。
二者又是可以相互转化的,例如,可将评估指标用于单元测试和回归测试,要求任何新版本系统在关键评估指标上必须优于基线版本。当系统运行成本较高且测试/评估数据集存在重叠时,将二者合并执行能显著提升资源利用效率。
3072

被折叠的 条评论
为什么被折叠?



