指标概述
指标是用于评估AI应用程序性能的定量测量方法。指标有助于评估应用程序及其组成部分相对于给定测试数据的性能表现。它们为比较、优化和在整个应用程序开发和部署过程中做出决策提供了数值基础。指标对于以下方面至关重要:
- 组件选择:指标可用于比较AI应用程序的不同组件(如LLM、检索器、代理配置等)与您自己的数据,并从不同选项中选择最佳组件。
- 错误诊断和调试:指标有助于识别应用程序中导致错误或次优性能的部分,从而更容易进行调试和改进。
- 持续监控和维护:指标能够跟踪AI应用程序随时间的表现,帮助检测和应对数据漂移、模型退化或用户需求变化等问题。
不同类型的指标
根据底层机制,指标可以分为两大类:
基于LLM的指标:这些指标使用LLM进行评估。可能需要进行一次或多次LLM调用来得出分数或结果。由于LLM可能不会总是对相同的输入返回相同的结果,这些指标可能具有一定的不确定性。另一方面,这些指标已被证明更准确,更接近人类评估。
ragas中的所有基于LLM的指标都继承自MetricWithLLM
类。这些指标在评分前需要设置一个LLM对象。
每个基于LLM的指标还会有与之关联的提示语,使用Prompt Object编写。
非基于LLM的指标:这些指标不使用LLM进行评估。这些指标是确定性的,可以在不使用LLM的情况下评估AI应用程序的性能。这些指标依赖于传统方法来评估AI应用程序的性能,如字符串相似性、BLEU分数等。因此,这些指标与人类评估的相关性较低。
ragas中的所有基于LLM的指标都继承自Metric
类。
根据评估的数据类型,指标可以大致分为两大类:
单轮指标:这些指标基于用户与AI之间的一次交互来评估AI应用程序的性能。ragas中支持单轮评估的所有指标都继承自SingleTurnMetric
类,并使用single_turn_ascore
方法进行评分。它还需要一个Single Turn Sample对象作为输入。
from ragas.metrics import FactualCorrectness
metric = FactualCorrectness()
await metric.single_turn_ascore(sample)
多轮指标:这些指标基于用户与AI之间的多次交互来评估AI应用程序的性能。ragas中支持多轮评估的所有指标都继承自MultiTurnMetric
类,并使用multi_turn_ascore
方法进行评分。它还需要一个Multi Turn Sample对象作为输入。
from ragas.metrics import AgentGoalAccuracy
from ragas import MultiTurnSample
scorer = AgentGoalAccuracy()
await metric.multi_turn_ascore(sample)
指标设计原则
为AI应用程序设计有效的指标需要遵循一组核心原则,以确保其可靠性、可解释性和相关性。以下是我们在ragas设计指标时遵循的五个关键原则:
1. 单一关注点
一个单一的指标应仅针对AI应用程序性能的一个特定方面。这确保了指标既可解释又可操作,提供了对所测量内容的清晰见解。
2. 直观且可解释
指标应设计得易于理解和解释。清晰直观的指标使得沟通结果和得出有意义的结论变得更加简单。
3. 有效的提示流程
在开发使用大型语言模型(LLMs)的指标时,使用与人类评估紧密对齐的智能提示流程。将复杂任务分解为具有特定提示的较小子任务可以提高指标的准确性和相关性。
4. 鲁棒性 确保基于LLM的指标包含足够的少样本示例,这些示例反映了期望的结果。通过提供上下文和指导,这增强了指标的鲁棒性,使LLM能够遵循。
5.一致的评分范围
归一化指标评分值或确保它们落在一个特定的范围内(如0到1)是至关重要的。这有助于在不同指标之间进行比较,并有助于在整个评估框架中保持一致性和可解释性。
这些原则为创建不仅有效,而且在评估AI应用时实用且有意义的指标奠定了基础。