用例(User Case)
评估(Evaluation)

LangChain

评估 Evaluation

概念指南 (opens in a new tab)

本文档部分介绍了我们如何处理和思考LangChain中的评估。包括对内部链/代理的评估,以及我们建议在LangChain上构建的人如何处理评估。

问题

评估LangChain链和代理可能会非常困难。这主要有两个原因:

# 1: 数据缺乏

在开始项目之前,通常没有大量的数据可以评估您的链/代理。这通常是因为大型语言模型(大多数链/代理的核心)是出色的少样本和零样本学习器,这意味着您几乎总能在没有大量示例数据集的情况下开始进行特定任务(文本到SQL,问答等)。这与传统机器学习形成鲜明对比,你得先收集一堆数据点才能开始使用模型。

# 2:缺乏指标

许多链/代理执行的任务缺乏评估性能的良好指标。 例如,最常见的用例之一是生成某种形式的文本。 评估生成的文本要比评估分类预测或数值预测复杂得多。

解决方案

LangChain试图解决这两个问题。我们目前所拥有的都是解决方案的初始尝试,我们认为我们没有完美解决方案。所以我们非常欢迎反馈、贡献、集成以及对此的想法。

以下是我们目前为每个问题所提供的解决方案:

#1: 缺乏数据

我们已经创建了Hugging Face上的Community空间LangChainDatasets,旨在成为一个评估常用链和代理的开源数据库集合。我们已经贡献了五个我们自己的数据集来开始,但我们非常希望这是一个社区共同努力的结果。为了贡献数据集,您只需要加入社区,然后就可以上传数据集。

我们还计划尽可能地帮助人们创建自己的数据集。作为第一次尝试,我们添加了一个QAGenerationChain,可以根据文档提出问题答案对,随后可以用这些问答对来评估解答任务。请参阅此notebook获取如何使用该链的示例。

#2:缺乏度量指标

我们对缺乏度量指标有两个解决方案。第一个方案是不使用度量指标,而是仅依赖肉眼观察结果,以便了解链/代理的性能。为了协助这一点,我们已经开发了基于UI的可视化器tracing,用于追踪链和代理运行。

我们建议的第二个解决方案是使用语言模型本身来评估输出。为此,我们有几个不同的链和提示,旨在解决这个问题。

示例

我们创建了一堆示例,结合上述两个解决方案,展示我们在开发时如何评估链和代理。除了我们策划的示例之外,我们也非常欢迎外部的贡献。为了方便这一点,我们提供了一个社区成员可用来构建自己示例的模板教程。

我们目前所拥有的示例有:

问答(国情咨文):显示对国情咨文进行问答任务的评估教程。

问答(Paul Graham文章):显示对Paul Graham文章进行问答任务的评估教程。

SQL问答(Chinook):显示在SQL数据库(Chinook数据库)上对问答任务进行评估的教程。

代理Vectorstore:显示代理在两个不同的向量数据库之间进行问答任务时的评估教程。

代理搜索+计算器:显示代理使用搜索引擎和计算器作为工具进行问答任务的评估教程。

评估OpenAPI链:显示评估OpenAPI链的教程,包括如何生成测试数据(如果没有)。

其他示例

此外,我们还有一些用于评估的通用资源。

问答:概述旨在评估问题回答系统的LLM。

数据增强型问答:是一个端到端的示例,重点是评估针对特定文档的问答系统(确切地说是RetrievalQAChain)。此示例突出了如何使用LLM提出问题/答案示例来进行评估,并突出了如何使用LLM在生成的示例上评估性能。

Hugging Face数据集:介绍如何从Hugging Face中加载和使用数据集进行评估。