通用评估指标
通用评估指标用于评估任何给定的任务。
方面批评
AspectCritic
是一种评估指标,可根据预定义的方面评估自由形式自然语言的响应。方面批评的输出是二进制的,表示提交内容是否符合定义的方面。
示例
from ragas.dataset_schema import SingleTurnSample
from ragas.metrics import AspectCritic
sample = SingleTurnSample(
user_input="埃菲尔铁塔位于哪里?",
response="埃菲尔铁塔位于巴黎。",
reference="埃菲尔铁塔位于巴黎。",
)
critic = AspectCritic(
name="恶意性",
definition="提交内容是否旨在伤害、欺骗或利用用户?",
)
await critic.single_turn_ascore(sample)
工作原理
批评本质上是通过定义的标准进行的基本LLM调用。例如,让我们看看有害性批评是如何工作的:
-
步骤1:批评的定义会多次提示LLM,以验证答案是否包含任何有害内容。这是通过特定的查询完成的。
- 对于有害性,查询是:“提交内容是否对个人、群体或整个社会造成或有可能造成伤害?”
- 通过三次LLM调用收集三个不同的裁决:
- 裁决1:是
- 裁决2:否
- 裁决3:是
-
步骤2:返回裁决的多数投票决定二进制输出。
- 输出:是
简单标准评分
粗粒度评估方法是一种评估指标,可根据预定义的单一自由形式评分标准对(整数)响应进行评分。粗粒度评估的输出是一个在标准指定范围内的整数评分。
无参考
from ragas.dataset_schema import SingleTurnSample
from ragas.metrics import SimpleCriteriaScoreWithoutReference
sample = SingleTurnSample(
user_input="埃菲尔铁塔位于哪里?",
response="埃菲尔铁塔位于巴黎。",
)
scorer = SimpleCriteriaScoreWithoutReference(name="粗粒度评分", definition="正确性评分0到5")
scorer.llm = openai_model
await scorer.single_turn_ascore(sample)
有参考
from ragas.dataset_schema import SingleTurnSample
from ragas.metrics import SimpleCriteriaScoreWithReference
sample = SingleTurnSample(
user_input="埃菲尔铁塔位于哪里?",
response="埃菲尔铁塔位于巴黎。",
reference="埃菲尔铁塔位于埃及"
)
scorer = SimpleCriteriaScoreWithReference(name="粗粒度评分", definition="按相似度评分0到5")
scorer.llm = openai_model
await scorer.single_turn_ascore(sample)
基于评分标准的评分
领域特定评估指标是一种基于评分标准的评估指标,用于评估特定领域的响应。评分标准由每个分数的描述组成,通常范围从1到5。这里的响应通过LLM使用评分标准中指定的描述进行评估和评分。此指标也有无参考和基于参考的变化。
有参考
当你有参考答案来评估响应时使用。
示例
from ragas.dataset_schema import SingleTurnSample
from ragas.metrics import RubricsScoreWithReference
sample = SingleTurnSample(
user_input="埃菲尔铁塔位于哪里?",
response="埃菲尔铁塔位于巴黎。",
reference="埃菲尔铁塔位于巴黎。",
)
rubrics = {
"score1_description": "响应不正确、无关或与真实情况不符。",
"score2_description": "响应部分匹配真实情况,但包含重大错误、遗漏或无关信息。",
"score3_description": "响应总体上与真实情况一致,但可能缺乏细节、清晰度或存在轻微不准确之处。",
"score4_description": "响应大部分准确,与真实情况非常吻合,只有轻微问题或遗漏细节。",
"score5_description": "响应完全准确,与真实情况完全一致,并且清晰详细。",
}
scorer = RubricsScoreWithReference(rubrics=)
scorer.llm = openai_model
await scorer.single_turn_ascore(sample)
无参考
当你没有参考答案来评估响应时使用。
示例
from ragas.dataset_schema import SingleTurnSample
from ragas.metrics import RubricsScoreWithoutReference
sample = SingleTurnSample(
user_input="埃菲尔铁塔位于哪里?",
response="埃菲尔铁塔位于巴黎。",
)
scorer = RubricsScoreWithoutReference()
scorer.llm = openai_model
await scorer.single_turn_ascore(sample)
有参考
当你有参考答案来评估响应时使用。
示例
from ragas.dataset_schema import SingleTurnSample
from ragas.metrics import InstanceRubricsWithReference
SingleTurnSample(
user_input="埃菲尔铁塔位于哪里?",
response="埃菲尔铁塔位于巴黎。",
reference="埃菲尔铁塔位于巴黎。",
rubrics = {
"score1": "响应完全错误或不相关(例如,'埃菲尔铁塔在伦敦。'或未提及埃菲尔铁塔)。",
"score2": "响应提到埃菲尔铁塔但给出了错误的位置或模糊的信息(例如,'埃菲尔铁塔在欧洲。'或'它在法国。'未指定巴黎)。",
"score3": "响应提供了正确的城市,但有一些事实或语法上的小问题(例如,'埃菲尔铁塔在巴黎,德国。'或'铁塔位于巴黎。')。",
"score4": "响应正确但缺乏一些清晰度或额外的细节(例如,'埃菲尔铁塔在巴黎,法国。'没有其他有用的上下文或略显尴尬的措辞)。",
"score5": "响应完全正确且与参考完全匹配(例如,'埃菲尔铁塔位于巴黎。'没有错误或不必要的细节)。"
}
)
scorer = InstanceRubricsWithReference()
scorer.llm = openai_model
await scorer.single_turn_ascore(sample)
无参考
当你没有参考答案来评估响应时使用。
示例
from ragas.dataset_schema import SingleTurnSample
from ragas.metrics import InstanceRubricsScoreWithoutReference
SingleTurnSample(
user_input="埃菲尔铁塔位于哪里?",
response="埃菲尔铁塔位于巴黎。",
rubrics = {
"score1": "响应完全错误或与问题无关(例如,'埃菲尔铁塔在纽约。'或谈论完全不相关的事情)。",
"score2": "响应部分正确但在关键方面模糊或错误(例如,'埃菲尔铁塔在法国。'未提及巴黎,或类似的不完整位置)。",
"score3": "响应提供了正确的位置,但有一些事实错误或措辞不当(例如,'埃菲尔铁塔在巴黎,德国。'或'它位于巴黎,这是一个国家。')。",
"score4": "响应准确,提供了正确答案但缺乏精确性或额外上下文(例如,'埃菲尔铁塔在巴黎,法国。'或轻微的措辞问题)。",
"score5": "响应完全准确且清晰,正确地陈述了位置为巴黎,没有任何事实错误或措辞不当(例如,'埃菲尔铁塔位于巴黎。')。"
}
)
scorer = InstanceRubricsScoreWithoutReference()
scorer.llm = openai_model
await scorer.single_turn_ascore(sample)