你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

大型语言模型端到端评估

在此阶段,你将通过检查包含针对语言模型检索到的基础数据的预期用户提示来评估检索增强生成 (RAG) 解决方案。 在进入此阶段之前,应完成前面的阶段。 你需要收集测试文档和查询、对测试文档进行分块、扩充区块、嵌入区块、创建搜索索引并实现搜索策略。 然后,应评估每个阶段,并确保结果符合预期。 此时,你应该确信解决方案返回用户查询的相关地面数据。

此基础数据构成了发送到语言模型以处理用户查询的提示的上下文。 提示工程策略不在本文讨论范围之内。 本文从基础数据的角度介绍了对语言模型的工程调用的评估。 本文介绍公共语言模型评估指标以及可在模型评估计算或独立指标中使用的特定相似性和评估指标。

本文不会尝试提供语言模型指标或相似性和评估指标的详尽列表。 这些指标的数量每天都在增长。 你从本文中获取的重要内容是,每个指标都有不同的用例。 只有你能够全面了解工作负荷。 你和数据科学家必须确定要度量的内容以及哪些指标合适。

本文是系列文章的一部分。 请先阅读简介

语言模型评估指标

可以使用多个指标来评估语言模型的响应。 其中一些指标是基础性、完整性、利用率和相关性。

重要

语言模型响应是不确定的,这意味着对语言模型的提示通常返回不同的结果。 在评估过程中使用语言模型时,必须了解这一概念。 评估语言模型使用时,请考虑使用目标范围而不是单个目标。

真实性

基础性(有时也称为忠实性)可衡量响应是否完全基于上下文。 它会验证响应未使用上下文中存在的信息之外的其他信息。 低基度指标指示语言模型可能会发出不准确或不敏感的响应。

计算基础性

使用以下方法计算响应的合理性:

评估基础性

低基础性计算表明语言模型认为这些区块并不相关。 应评估是否需要将数据添加到集合、调整分块策略或区块大小,还是微调提示。

完整性

完整性 度量响应是否回答查询的所有部分。 完整性有助于了解上下文中的区块是否相关、与查询直接相关,并提供完整的答案。

计算完整性

使用以下方法来计算响应的完整性:

  • AI 辅助检索分数提示
  • 语言模型可以帮助你测量语言模型响应的质量。 为了进行此度量,您需要问题、上下文和生成的答案。 以下步骤概述了高级过程:
    1. 使用语言模型来重新表述、汇总或简化问题。 此步骤标识意向。
    2. 让模型检查是否在检索到的文档中找到了或者是否可以从中获得意图或意图的答案。 每个文档的答案可以是“是”或“否”。 以“是”开头的答案表示检索的文档与意图或意图的答案相关。
    3. 计算具有以“是”开头的答案的意向的比例。
    4. 将分数平方以突出显示错误。

评估完整性

如果完整性较低,请通过评估你的嵌入模型来提高完整性。 将内容中的词汇与嵌入模型中的词汇进行比较。 确定是否需要特定于域的嵌入模型,或者是否应微调现有模型。 下一步是评估分块策略。 如果使用固定大小的分块,请考虑增加区块大小。 还可以评估测试数据是否有足够的数据来完全解决问题。

利用率

利用率衡量的是响应在多大程度上是由上下文中的信息区块组成的。 目标是确定每个区块是响应的一部分的程度。 利用率低表示结果可能与查询无关。 应与完整性一起评估利用率。

计算利用率

使用语言模型计算利用率。 可以将响应和包含区块的上下文传递给语言模型。 可以要求语言模型确定需要答案的区块数。

评估利用率

下表提供了有关如何评估完整性和利用率的指导。

高利用率 利用率低
高完整性 无需执行任何操作。 在这种情况下,返回的数据解决了问题,但也返回不相关的区块。 请考虑减少 top-k 参数值,以产生更多可能的结果或确定性结果。
低完整性 在这种情况下,语言模型使用你提供的区块,但它们无法完全解决问题。 请考虑执行以下步骤:
  • 审查您的分块策略,以增加块内的上下文。
  • 通过增加 top-k 参数值来增加区块数。
  • 评估是否有遗漏未返回的区块,这些区块可以增加完整性。 如果是这样,请调查他们未返回的原因。
  • 按照 完整性部分中的指南进行操作。
在这种情况下,返回的数据不完全回答问题,而且你提供的区块没有被完全利用。 请考虑执行以下步骤:
  • 检查您的分块策略以增加块内的上下文。 如果使用固定大小的分块,请考虑增加区块大小。
  • 微调提示以改进响应。

相关性

相关性 衡量语言模型响应与查询相关的程度。

计算相关性

使用以下方法来计算响应的相关性:

注意

可以使用 Azure AI Foundry 门户执行计算或使用本文中的指南自行计算相关性。

评估相关性

相关性较低时,请执行以下任务:

  1. 确保提供给语言模型的区块是相关的。
    • 确定是否未返回任何相关的可行区块。 如果发现这些区块,请评估嵌入模型。
    • 如果没有可行的区块,请查看相关数据是否存在。 如果是这样,请评估您的分块策略。
  2. 如果返回了相关区块,请评估提示。

评估方法(如完整性)输出的分数所产生的结果应该与相关性分数的结果相似。

相似性和评估指标

可在数据科学中使用的数百个相似性和评估指标。 某些算法特定于域,例如语音转文本或语言到语言翻译。 每个算法都有用于计算其指标的唯一策略。

数据科学家确定要度量的内容以及可用于度量指标的指标或指标的组合。 例如,对于语言翻译,双语评估替补 (BLEU) 指标会检查机器翻译和人工翻译中出现了多少个 n-gram,以根据翻译是否使用相同的单词来衡量相似度。 余弦相似性使用机器和人工翻译之间的嵌入来测量语义相似性。 如果你的目标是让翻译具有较高的语义相似性,并使用与人工翻译相似的词汇,那么你会希望BLEU分数和余弦相似性都很高。 如果只关心语义相似性,请关注余弦相似性。

以下列表包含常见相似性和评估指标的示例。 请注意,列出的相似性指标描述为基于令牌、基于序列或基于编辑的指标。 这些说明说明了指标用于计算相似性的方法。 该列表还包含三种算法,用于评估从一种语言到另一种语言的文本翻译质量。

  • 最长的常见子字符串 是一种基于序列的算法,用于查找两个字符串之间最长的常见子字符串。 最长的常见子字符串百分比采用最长的常见子字符串,并将其除以较小或更大的输入字符串的字符数。
  • 最长的常见子序列(LCS) 是一种基于序列的算法,用于查找两个字符串之间的最长子序列。 LCS 不要求子序列按连续顺序排列。
  • 余弦相似性 是一种基于标记的算法,用于计算两个向量之间角度的余弦值。
  • Jaro-Winkler 距离 是一种基于编辑的算法,用于计算将一个字符串转换为另一个字符串的最小步骤数。
  • 哈明距离 是一种基于编辑的算法,用于测量将一个字符串转换为另一个字符串所需的最小替换数。
  • Jaccard 索引 是一种基于令牌的算法,它通过将两个字符串的交集除以这些字符串的并集来计算相似性。
  • Levenshtein 距离 是一种基于编辑的算法,它通过确定将一个字符串转换为另一个字符串所需的最小单字符编辑数来计算相似性。
  • BLEU 评估从一种语言到另一种语言的机器翻译文本的质量。 BLEU 通过计算机器翻译和人工翻译之间的 n-grams 重叠来进行评估。
  • ROUGE 是将一种语言的机器翻译与人工创建的翻译进行比较的指标。 有几种 ROUGE 变体使用 n-grams、skip-bigrams 或最长常见子序列的重叠。
  • METEOR 通过查看完全匹配、词干、同义词、意译和对齐情况来评估机器翻译结果的文本质量。

有关常见相似性和评估指标的详细信息,请参阅以下资源:

文档、报告和聚合

应记录为试验选择的超参数和生成的评估指标,以便了解超参数如何影响结果。 应以精细级别(例如嵌入或搜索评估)和宏级别(例如测试整个系统端到端)记录超参数和结果。

在设计和开发过程中,可以手动跟踪超参数和结果。 但是,针对整个测试文档和测试查询集合执行多个评估可能涉及数百个评估运行和数千个结果。 应自动执行评估的参数和结果的持久化。

保存超参数和结果后,应考虑制作图表和图形,以帮助你直观显示超参数对指标的影响。 可视化有助于确定哪些选择会导致性能下降或峰值。

请务必了解,设计和评估 RAG 解决方案不是一次性操作。 您的文档集合会随着时间不断变化。 随着时间的推移,客户提出的问题会发生变化,而你对这些问题类型的理解也会随着从生产的学习而演变。 因此应该反复重温这一过程。 维护过去评估的文档对于未来的设计和评估工作至关重要。

RAG 试验加速器

这些文章将引导你完成设计和评估 RAG 解决方案所涉及的所有阶段和设计选择。 这些文章重点介绍应执行的操作,而不是如何执行此操作。 与Microsoft顶级客户合作的工程团队开发了一个名为 RAG 试验加速器的工具。 RAG 试验加速器是一种最先进的试验框架。 它旨在优化和增强 RAG 解决方案的开发。 RAG 试验加速器使研究人员和开发人员能够有效地探索和微调驱动 RAG 性能的关键组件。 这种创新最终会生成更准确、更连贯的文本。

RAG 试验加速器使用命令行接口,因此可以轻松试验各种嵌入模型、优化分块策略并评估不同的搜索方法,以解锁 RAG 系统的全部潜力。 它允许你专注于 RAG 开发的核心方面,方法是使用简单的配置进行超参数优化。

该框架还提供对语言模型配置的全面支持。 此支持有助于在模型复杂性和生成质量之间实现完美平衡。 此工具可帮助你简化试验过程,节省时间,并显著提高 RAG 模型的性能。

具有视觉应用程序框架的 RAG

本文中关于在 RAG 解决方案中使用媒体的很多指导来自另一个与Microsoft顶级客户合作的工程团队。 此团队编写了一个名为具有视觉应用程序框架的 RAG的框架。 此框架提供基于 Python 的 RAG 管道,用于处理 MHTML 文档中的文本和图像内容。

框架从 MHTML 文件加载、区块和扩充文本和图像。 然后,它将区块引入 Azure AI 搜索。 该框架实现图像增强的缓存,以提高处理效率并降低成本。 该框架还将评估作为流程的一部分。

贡献者

本文由Microsoft维护。 它最初由以下参与者编写。

后续步骤