Auto-Evaluator Opportunities

自动评估器机会

5 分钟阅读

编者按:这是一篇由 Lance Martin 撰写的客座博客文章。

TL;DR(太长不看)

我们最近开源了一个 自动评估器 工具,用于评估 LLM 问答链。我们现在发布一个 开源、免费使用的 托管应用程序API,以扩展可用性。下面我们讨论一些进一步改进的机会。

背景

文档 问答 是一个流行的 LLM 用例。 LangChain 使组装 LLM 组件(例如,模型和检索器)到支持问答的链中变得容易:输入文档被分成块并存储在检索器中,给定用户 问题,检索相关的块,并传递给 LLM 以合成 答案

问题

QA 系统的质量可能差异很大; 我们已经看到 由于特定的参数设置,出现幻觉和答案质量差的情况。但是,(1)评估答案质量和(2)使用此评估来指导改进的 QA 链设置(例如,块大小、检索到的文档计数)或组件(例如,模型或检索器选择)并不总是显而易见的。

应用

auto-evaluator 旨在解决这些限制。它受到两个领域工作的启发:1) Anthropic 最近的 工作 使用了模型编写的评估集,以及 2) OpenAI 已经展示了  模型评分的评估。此应用程序将这两个想法结合到一个工作空间中,为给定的输入文档自动生成 QA 测试集,并自动评分用户指定的 QA 链的结果。 Langchain 的抽象使其易于配置具有模块化组件的 QA 以进行测试(如下面的颜色所示)。

用法

我们现在发布一个 开源、免费使用的 托管应用程序API,以扩展可用性。该应用程序可以通过两种方式使用(有关更多详细信息,请参阅 README

  • 演示:我们预加载了一个文档(Lex Fridman 播客与 Andrej Karpathy 的 文字稿)和播客中的一组 5 个 问答对。您可以配置 QA 链并运行实验以评估相对性能。
  • 游乐场:受 nat.dev 游乐场的启发,用户可以输入文档以评估各种 QA 链。可选地,用户可以包含与文档相关的问答对测试集;请参阅 此处此处 的示例。

改进的机会

文件处理

从客户端到后端的文件传输速度很慢。对于 2 个文件 (39MB),传输时间约为 40 秒

生产环境 本地
OAI 嵌入 OAI 嵌入
暂存环境 经过时间 经过时间
传输文件 37 秒 0 秒
读取文件 5 秒 1 秒
分割文档 3 秒 3 秒
构建 LLM 1 秒 1 秒
构建检索器 6 秒 2 秒
成功

图像会使文件膨胀,可能需要在从客户端传输之前剥离

生产环境 生产环境 生产环境 生产环境
1.3 MB,40 页 3.5 MB,42 页 7.7MB,42 页 32MB,54 页
暂存环境 经过时间 经过时间 经过时间 经过时间
传输文件 1 秒 3 秒 5 秒 35 秒
读取文件 5 秒 4 秒 6 秒 7 秒
分割文档 0 秒 0 秒 0 秒 1 秒
构建 LLM 1 秒 1 秒 1 秒 1 秒
构建检索器 3 秒 3 秒 3 秒 4 秒
成功

模型编写的评估

Anthropic 和其他人已经发表了关于模型编写评估的文章。在这里,为了速度,我们做了一些非常幼稚的事情:我们 随机选择 输入上下文并从中生成 QA 对。有关更多详细信息,请参阅我们的博客文章 此处。 有很大的改进机会(例如,问题由输入文档的整体上下文告知)。

检索器

LangChain 检索器抽象 包括几种文档检索方法。 基于来自 vectorDB 的嵌入的 k-最近邻查找(例如,FAISSChroma 等)是一种流行的方法,但也存在其他替代方案。 例如,Karpathy 最近讨论了使用 SVM 作为检索器,以及统计方法,如 TF-IDF 是可以考虑的选项。 自动评估器使添加和/或测试各种检索器变得容易。 我们构建了一个由 Kipply 优秀 transformer taxonomy 中的 15 篇论文组成的测试集。 这是测试集,当然可以改进

问题 答案
GPT-3 是在什么数据语料库上训练的? GPT-3 是在一个 300B token 的数据集上训练的,该数据集主要由过滤后的 Common Crawl 以及一些书籍、网络文本和维基百科组成。
什么是上下文学习? 在预训练期间获得的广泛技能和模式识别能力可以在推理时使用,仅需提供输入-输出示例即可执行新任务,而无需任何权重更新。 这是大型语言模型 (LM) 中的一种涌现行为。
Galatica 在 LaTex 方程上比 GPT-3 好多少? 在 LaTeX 方程上,Galatica 的得分达到 68.2%,而最新的 GPT-3 为 49.0%。
BLOOM 模型是在什么上训练的? BLOOM 是在 ROOTS 语料库上训练的,ROOTS 语料库是 498 个 Hugging Face 数据集的复合集合,总计 1.61 TB 的文本,涵盖 46 种自然语言和 13 种编程语言。
Chinchilla 论文认为对于计算最优训练重要的是什么? Chinchilla 论文发现,对于计算最优训练,模型大小和训练 token 的数量应按比例缩放:对于模型大小的每次翻倍,训练 token 的数量也应翻倍。

以下是摘要结果。 您可以在 此处 查看详细结果。

简而言之,对于这个特定案例,TF-IDF 和 SVM 的性能与 k-NN 相当(实际上,略好一些)。 当然,情况并非总是如此,但重点是检索有很多值得考虑的选择。

模型评分评估

评分提示

核心思想是使用提示来评分模型生成的答案(和检索到的文档),相对于标准答案。 我们测试了几个提示,您可以在 此处 查看。 您可以在 此处 查看来自每个提示的结果(问题、答案和评分理由)和摘要

提示 答案分数(正确率)
快速 5 / 5
描述性 4 / 5
带有偏差的描述性 5 / 5
https://github.com/openai/evals/blob/main/evals/registry/modelgraded/closedqa.yaml 2 / 5

简而言之,答案评分因提示而异(例如,OpenAI 评分是最严格的)。 未来的工作应侧重于改进用于模型评分评估的提示。

可变性

该应用程序当前使用 GPT-3.5-turbo 作为评分器,但与 OpenAI 的讨论表明 GPT4 更可取。 这是一个例子:评分器似乎对双重否定感到困惑,并为相同的输入答案问题产生非确定性输出。

实验 答案 评分 理由
1 对于用作工具和储藏室、游戏室或类似用途的单层独立附属建筑物或结构,如果预计屋顶面积不超过 100 平方英尺,则不需要建筑许可证。 评分:不正确 理由:学生的答案不正确,因为它指出对于预计屋顶面积为 100 平方英尺或更小的结构不需要建筑许可证,而正确答案指出对于任何大于 100 平方英尺的结构都需要许可证。
2 对于用作工具和储藏室、游戏室和类似用途的单层独立附属建筑物或结构,如果预计屋顶面积不超过 100 平方英尺(9.29 平方米),则不需要建筑许可证。 评分:正确 理由:学生的答案准确地指出,对于 100 平方英尺以下的结构不需要建筑许可证,这是正确的。

结论

欢迎为 开源 代码库做出贡献,或测试免费的 托管应用程序。 与文件处理、提示(例如,用于 QA 生成、评分或 QA)、模型(例如,从 Hugging Face 添加开源模型)或检索器相关的贡献是一些影响最大的领域。