最近,我们团队推出了LettuceDetect框架,这是一款用于检索增强生成(RAG)开发管道的轻量级幻觉检测器。它是一种基于ModernBERT模型构建的基于编码器的模型,根据MIT许可证发布,带有现成的Python包和预训练模型。
A.在RAGTruth幻觉语料库上击败了之前基于编码器的模型(例如Luna)。
B.尺寸仅为其一小部分,却超越了经过微调的Llama-2-13B(引文2),并且推理效率极高。
C.完全开源,遵循MIT许可证。
LettuceDetect框架通过发现LLM输出中的“过时的”部分来保持你的RAG框架一直最新。
A.基础模型
B.大型模型
时至今日,大型语言模型(LLM)在NLP任务中取得了长足进步,例如GPT-4(引文4)、Llama-3模型(引文5)或Mistral(引文6)(还有更多)。尽管LLM取得了成功,但幻觉仍然是在高风险场景(例如医疗保健或法律领域)中部署LLM的主要障碍(引文7和8)。
检索增强生成(RAG)技术尝试通过将LLM的响应建立在检索到的文档中来减轻幻觉,从而提供模型可以参考的外部知识(引文9)。但是,尽管RAG是减少幻觉的有效方法,但LLM在这些设置下仍然会受到幻觉的影响(引文1)。幻觉是指输出中的信息毫无意义、事实不正确或与检索到的上下文不一致(引文8)。Ji等人(引文10)将幻觉分为以下几类:
虽然RAG方法可以减轻内在幻觉,但它们并不能免受外在幻觉的影响。Sun等人(引文11)研究结果表明,模型倾向于优先考虑其内在知识而不是外部环境。由于LLM仍然容易产生幻觉,因此它们在医学或法律等关键领域的应用仍然可能存在缺陷。
当前的幻觉检测解决方案可以根据所采用的方法分为不同的类别:
ModernBERT(引文3)是BERT的直接替代品,它是一种先进的仅编码器的转换器架构,在原始BERT模型上融入了几项现代设计改进,例如它使用旋转位置嵌入(RoPe)来处理最多8,192个标记的序列,使用取消填充优化来消除填充标记上浪费的计算,使用GeGLU激活层来增强表现力,并使用交替注意力来实现更高效的注意力计算。
LettuceDetect利用ModernBERT的扩展上下文窗口构建用于幻觉检测的标记级分类器。这种方法避开了旧版基于BERT的模型的许多限制(例如,短上下文边界),并避免了大型基于LLM的检测器的推理开销。我们的实验表明,LettuceDetect的性能优于其他基于编码器的系统,同时仍能与经过微调的LLM检测器相媲美,而计算成本仅为后者的一小部分。
RAGTruth是第一个大型开源(MIT许可证)基准,专门用于评估检索增强生成(RAG)设置中的幻觉检测。它包含18,000个带注释的样本,涵盖多个任务:
其中,RAGTruth中的每个样本包括:
下面是来自RAGTruth的说明性样本,展示了幻觉的一个实例:
提出问题:
如何解释四分位数?
参考资料:
第2段:
第二四分位数(Q2)更常被称为中位数,它将数据分成两半(50%)。
中位数将数据分为下半部分和上半部分。
第三四分位数(Q3)也称为上四分位数,将数据的最低75%(或最高25%)分开。
(……)
回复如下:
第一个四分位数(Q1)将数据中最低的25%分成两部分,而第二个四分位数(Q2)将数据分成两个相等的部分,中位数是下半部分的中间值。最后,第三个四分位数(Q3)将数据中最高的75%分成两部分。
(……)
注解
跨度:“最高75%”
类型:明显冲突
原因:
原文:“最低75%(或最高25%)”
生成文本:“最高75%”
此样本展示了一个RAGTruth注释,涉及答案中与参考段落相冲突的特定跨度,提供了幻觉的类型(例如,明显冲突)和人类可读的理由。我们的方法仅使用二进制注释,而不使用幻觉注释的类型。
作者自制图片
这里给出的是LettuceDetect架构的一种高级描述。这里,给出了一个样本问题、上下文和答案三元组。首先,对文本进行标记,然后LettuceDetect执行标记级分类。问题和上下文中的标记都被屏蔽(图中用红线表示),以便将它们排除在损失函数之外。答案中的每个标记都会收到一个概率,表明它是幻觉的还是被支持的。对于跨度级检测,我们将幻觉概率高于0.5的连续标记合并为单个预测跨度。
我们在RAGTruth数据集上训练ModernBERT-base和ModernBERT-large变体作为标记分类模型。模型的输入是Context、Question和Answer段的串联,带有专门的标记([CLS])(用于上下文)和([SEP])(作为分隔符)。为了便于计算,我们将序列长度限制为4,096个标记,但ModernBERT理论上最多可以处理8,192个标记。
A.上下文/问题标记被屏蔽(即在PyTorch中分配-100的标签),因此它们不会导致损失。
B.每个答案标记都会收到一个标签0(支持)或1(幻觉)。
我们的模型基于Hugging Face的AutoModelForTokenClassification构建,使用ModernBERT作为编码器,并在其上设置分类头。与之前一些基于编码器的方法(例如,在NLI任务上进行预训练的方法)不同,我们的方法仅使用ModernBERT,没有额外的预训练阶段。
训练配置
A.批次大小为8;
B.使用PyTorch DataLoader加载数据(启用数据混洗功能);
C.通过DataCollatorForTokenClassification进行动态填充,以有效处理可变长度序列。
在训练期间,我们会监控验证拆分中的符号级F1分数,并使用safetensors格式保存检查点。训练完成后,我们会将表现最佳的模型上传到Hugging Face供公众访问。
在推理时,模型会输出答案中每个标记的幻觉概率。我们聚合超过0.5阈值的连续标记以生成跨度级预测,准确指示答案的哪些部分可能产生幻觉。上图说明了此工作流程。
接下来,我们对模型的性能进行更详细的评估。
我们在RAGTruth测试集上对所有任务类型(问答、数据转文本和摘要)的模型进行了评估。对于每个示例,RAGTruth都包含手动注释的跨度,以指示幻觉内容。
示例级结果
我们首先评估样本级别的问题:生成的答案是否包含任何幻觉?我们的大型模型(lettucedetect-large-v1)的总体F1得分达到79.22%,超过了:
它仅次于RAG-HAT论文(引文15)中经过微调的Llama-3-8B(83.9%),但LettuceDetect明显更小,运行速度更快。同时,我们的基础模型(lettucedetect-base-v1)在使用较少参数的情况下仍保持了极高的竞争力。
作者本人提供图片
上表是一张比较表,说明了LettuceDetect与基于提示的方法(例如GPT-4)和基于编码器的替代解决方案(例如Luna)的对比情况。总体而言,lettucedetect-large-v1和lettucedect-base-v1是性能非常出色的模型,同时在推理设置中也非常有效。
跨度级结果
除了检测答案是否包含幻觉之外,我们还检查了LettuceDetect识别不支持内容的确切跨度的能力。在这里,LettuceDetect在报告跨度级别性能的模型中取得了最先进的结果,大大优于RAGTruth论文(引文1)和其他基线中经过微调的Llama-2-13B模型。
作者本人提供图片
大多数方法(例如RAG-HAT(引文15))都没有报告跨度级指标,因此我们在这里不与它们进行比较。
推理效率
lettucedetect-base-v1和lettucedetect-large-v1所需的参数都比典型的基于LLM的检测器(例如GPT-4或Llama-3-8B)少,并且可以在单个NVIDIA A100 GPU上每秒处理30-60个样本。这使得它们适用于工业工作负载、实时面向用户的系统和资源受限的环境。
总体而言,这些结果表明LettuceDetect具有良好的平衡性:与基于LLM的大型评判系统相比,它以极小的规模和成本实现了接近最先进的准确度,同时提供了精确的标记级幻觉检测。
安装软件包:
复制
pip install lettucedetect
然后,你可以按如下方式使用该包:
复制
from lettucedetect.models.inference import HallucinationDetector
#对于基于转换器的方法:
detector = HallucinationDetector(
method="transformer", model_path="KRLabsOrg/lettucedect-base-modernbert-en-v1"
contexts = ["France is a country in Europe. The capital of France is Paris. The population of France is 67 million.",]
question = "What is the capital of France? What is the population of France?"
answer = "The capital of France is Paris. The population of France is 69 million."
#得到跨度级的预测,表明答案的哪一部分被认为是幻觉。
predictions = detector.predict(cnotallow=contexts, questinotallow=question, answer=answer, output_format="spans")
print("Predictions:", predictions)
#预测结果是:[{'start': 31, 'end': 71, 'confidence': 0.9944414496421814, 'text': ' The population of France is 69 million.'}]
我们在本文中详细介绍了我们团队研发的LettuceDetect,这是一个轻量级且高效的RAG系统幻觉检测框架。通过利用ModernBERT的扩展上下文功能,我们的模型在RAGTruth基准上实现了强劲的性能,同时保持了较高的推理效率。这项工作为未来的研究方向奠定了基础,例如扩展到其他数据集、支持多种语言以及探索更先进的架构。即使在这个阶段,LettuceDetect也证明了使用精简的、专门构建的基于编码器的模型可以实现有效的幻觉检测。