3.8 KiB
3.8 KiB
HaluEval
概述
HaluEval 是一个大规模的生成与人工标注的幻觉样本集合,用于评估大语言模型(LLM)识别幻觉的能力。它提供了一个全面的基准测试,用于衡量模型的可靠性和事实准确性。
任务描述
- 任务类型:幻觉检测
- 输入:上下文/知识 + 待判断的回复
- 输出:YES(存在幻觉)或 NO(符合事实)
- 领域:对话、问答、摘要
主要特点
- 包含三个评估类别:
dialogue_samples:对话回复中的幻觉qa_samples:问答中的幻觉summarization_samples:文档摘要中的幻觉
- 同时包含生成样本和人工标注样本
- 测试模型检测事实不一致性的能力
- 要求模型对知识与回复之间的一致性进行推理
评估说明
- 默认评估采用 零样本(zero-shot) 设置(无少样本示例)
- 计算多项指标:
- Accuracy(准确率):整体判断正确的比例
- Precision(精确率):预测为正类中真实为正的比例
- Recall(召回率):真实为正类中被正确预测的比例
- F1 Score(F1分数):精确率与召回率的调和平均
- Yes Ratio(YES比例):预测为 YES 的比例
- 采用二元 YES/NO 判断格式
属性
| 属性 | 值 |
|---|---|
| 基准测试名称 | halueval |
| 数据集ID | evalscope/HaluEval |
| 论文 | N/A |
| 标签 | Hallucination, Knowledge, Yes/No |
| 指标 | accuracy, precision, recall, f1_score, yes_ratio |
| 默认样本数 | 0-shot |
| 评估划分 | data |
数据统计
| 指标 | 值 |
|---|---|
| 总样本数 | 30,000 |
| 提示词长度(平均) | 4832.18 字符 |
| 提示词长度(最小/最大) | 2463 / 16078 字符 |
各子集统计数据:
| 子集 | 样本数 | 提示词平均长度 | 提示词最小长度 | 提示词最大长度 |
|---|---|---|---|---|
dialogue_samples |
10,000 | 3563.69 | 3169 | 4200 |
qa_samples |
10,000 | 2811.83 | 2463 | 4004 |
summarization_samples |
10,000 | 8121.02 | 4932 | 16078 |
样例示例
子集:dialogue_samples
{
"input": [
{
"id": "a99406f3",
"content": [
{
"text": "I want you act as a response judge. Given a dialogue history and a response, your objective is to determine if the provided response contains non-factual or hallucinated information. You SHOULD give your judgement based on the following hallu ... [TRUNCATED] ... do! Robert Downey Jr. is a favorite. [Human]: Yes i like him too did you know he also was in Zodiac a crime fiction film. \n#Response#: I'm not a fan of crime movies, but I did know that RDJ starred in Zodiac with Tom Hanks.\n#Your Judgement#:"
}
]
}
],
"target": "YES",
"id": 0,
"group_id": 0,
"metadata": {
"answer": "yes"
}
}
注:部分内容因展示需要已被截断。
提示模板
提示模板:
{question}
使用方法
使用命令行(CLI)
evalscope eval \
--model YOUR_MODEL \
--api-url OPENAI_API_COMPAT_URL \
--api-key EMPTY_TOKEN \
--datasets halueval \
--limit 10 # 正式评估时请删除此行
使用 Python
from evalscope import run_task
from evalscope.config import TaskConfig
task_cfg = TaskConfig(
model='YOUR_MODEL',
api_url='OPENAI_API_COMPAT_URL',
api_key='EMPTY_TOKEN',
datasets=['halueval'],
dataset_args={
'halueval': {
# subset_list: ['dialogue_samples', 'qa_samples', 'summarization_samples'] # 可选,用于指定评估特定子集
}
},
limit=10, # 正式评估时请删除此行
)
run_task(task_cfg=task_cfg)