语言模型(LM)捕获了大量关于世界的知识,使其能够在不访问任何外部来源的情况下回答问题。这种将LM作为知识库的理念在BERT(Devlin等,2019)问世后不久便出现,并随着更大规模LM的推出而更加牢固(Roberts等,2020)。虽然最新的大语言模型(LLM)捕获的知识足以在各类问答基准测试中匹敌人类表现(Bubeck等,2023),但将LLM作为知识库的想法仍然存在两个根本性局限。首先,LLM无法回答在其训练之后发生的事件的相关问题。其次,即使最大的模型也难以记忆训练语料库中仅被罕见提及的知识(Kandpal等,2022;Mallen等,2023)。解决这些问题的标准方案是依赖检索增强生成(RAG)(Lee等,2019;Lewis等,2020;Guu等,2020)。回答问题的过程本质上涉及从语料库中检索相关段落,并将这些段落连同原始问题一起输入LM。虽然早期方法依赖于专门的LM进行检索增强语言建模(Khandelwal等,2020;Borgeaud等,2022),但近期研究表明,简单地将检索到的文档添加到标准LM的输入中也能取得良好效果(Khattab等,2022;Ram等,2023;Shi等,2023),从而使得检索增强策略可以与仅通过API访问的LLM结合使用。
虽然检索增强策略的实用性是显而易见的,但其实现需要大量的调优工作,因为整体性能会受到检索模型、所考虑的语料库、LM以及提示词表述等因素的影响。因此,检索增强系统的自动化评估至关重要。在实践中,RAG系统通常以语言建模任务本身来评估,即通过测量参考语料库上的困惑度。然而,这种评估并不总是能预测下游性能(Wang等,2023c)。此外,这种评估策略依赖于LM的概率,而对于某些闭源模型(如ChatGPT和GPT-4),这些概率是不可获取的。问答是另一种常见的评估任务,但通常只考虑具有简短抽取式答案的数据集,这可能无法代表系统的实际使用方式。
为解决这些问题,本文提出了Ragas1,一个用于自动化评估检索增强生成系统的框架。我们关注的是可能没有参考答案的场景,在此场景下我们希望估计正确性的不同代理指标,以及检索段落的有用性。Ragas框架与llama-index和Langchain(构建RAG解决方案最广泛使用的框架)均提供了集成,使开发者能够轻松将Ragas纳入其标准工作流程。
1. Ragas可在 https://github.com/explodinggradients/ragas 获取。
检测LLM生成响应中幻觉的问题已被广泛研究(Ji等,2023)。多位作者提出了使用少样本提示策略预测事实性的想法(Zhang等,2023)。然而,近期的分析表明,现有模型在使用标准提示策略时难以检测幻觉(Li等,2023;Azaria和Mitchell,2023)。其他方法依赖于将生成的响应与外部知识库中的事实进行关联(Min等,2023),但这并不总是可行的。
另一种策略是检查分配给各个token的概率,我们预期模型对幻觉答案的置信度低于对事实答案的置信度。例如,BARTScore(Yuan等,2021)通过查看给定输入时生成文本的条件概率来估计事实性。Kadavath等(2022)使用了这一想法的变体。基于LLM在回答多项选择题时提供良好校准概率的观察,他们本质上将验证模型生成答案的问题转化为一个询问答案是否正确的多项选择题。Azaria和Mitchell(2023)没有查看输出概率,而是提出在LLM某一隐藏层的权重上训练一个监督分类器,以预测给定陈述是否为真。虽然该方法表现良好,但需要访问模型隐藏状态的要求使其不适用于通过API访问LLM的系统。
对于不提供token概率访问的模型(如ChatGPT和GPT-4),需要不同的方法。SelfCheckGPT(Manakul等,2023)通过采样多个答案来解决这个问题。其核心思想是事实性答案更稳定:当答案是事实性的时,我们可以预期不同的样本在语义上趋于相似,而对于幻觉答案则不太可能如此。
LLM也被用于自动评估生成文本片段的其他方面(超越事实性)。例如,GPTScore(Fu等,2023)使用一个指定所考虑方面(如流畅性)的提示,然后根据给定自回归LM的生成token的平均概率对段落进行评分。Yuan等(2021)此前也考虑过使用提示的想法,尽管他们使用了较小的微调LM(即BART),并且没有观察到使用提示的明显好处。另一种方法直接要求ChatGPT通过提供0到100之间的分数或5星评分来评估给定答案的特定方面(Wang等,2023a)。值得注意的是,通过这种方式可以获得很强的结果,尽管其局限性在于对提示设计较为敏感。一些作者还关注使用LLM在多个候选答案中选择最佳答案(Wang等,2023b),通常用于比较不同LLM的性能。然而,使用这种方法时需要谨慎,因为答案的呈现顺序可能会影响结果(Wang等,2023b)。
关于真实答案或更一般地说生成内容在文献中的典型使用方式,大多数方法依赖于一个或多个参考答案的可用性。例如,BERTScore(Zhang等,2020)和MoverScore(Zhao等,2019)使用由预训练BERT模型产生的上下文化嵌入来比较生成答案与参考答案之间的相似度。BARTScore(Yuan等,2021)同样使用参考答案来计算精确率(估计为给定参考时生成答案的概率)和召回率(估计为给定生成答案时参考的概率)等方面。
我们考虑标准的RAG设置,其中给定问题 q,系统首先检索一些上下文 c(q),然后使用检索到的上下文生成答案 as(q)。在构建RAG系统时,我们通常无法访问人工标注的数据集或参考答案。因此,我们专注于完全自包含且无参考的指标。我们特别关注三个质量方面,认为它们至关重要。
首先,忠实性(Faithfulness)指的是答案应基于给定的上下文。这对于避免幻觉以及确保检索到的上下文可以作为生成答案的依据非常重要。实际上,RAG系统常用于生成文本相对于信息来源的事实一致性极为重要的应用中,例如法律等领域,其信息不断更新。其次,答案相关性(Answer Relevance)指的是生成的答案应针对所提供的实际问题。最后,上下文相关性(Context Relevance)指的是检索到的上下文应当聚焦,包含尽可能少的不相关信息。这一点很重要,因为将长上下文段落输入LLM存在成本问题。此外,当上下文段落过长时,LLM在利用该上下文时往往效率较低,尤其是对于位于上下文段落中间的信息(Liu等,2023)。
我们现在解释如何通过提示LLM以完全自动化的方式衡量这三个质量方面。在我们的实现和实验中,所有提示均使用gpt-3.5-turbo-16k模型进行评估,该模型可通过OpenAI API获取2。
2. https://platform.openai.com
如果答案 as(q) 中所作的声明可以从上下文 c(q) 中推断出来,我们就说该答案对上下文 c(q) 是忠实的。为了估计忠实性,我们首先使用LLM提取一组声明 S(as(q))。此步骤的目的是将较长的句子分解为更短、更聚焦的断言。我们使用以下提示进行此步骤3:
给定一个问题和答案,从答案的每个句子中创建一个或多个陈述。
问题:[question]
答案:[answer]
3. 为帮助澄清任务,我们在提示中包含了一个演示示例。该演示在本文的提示列表中未明确展示。
其中 [question] 和 [answer] 分别指给定的问题和答案。对于 S 中的每个声明 si,LLM使用验证函数 v(si, c(q)) 来确定 si 是否可以从 c(q) 中推断出来。此验证步骤使用以下提示进行:
考虑给定的上下文和以下陈述,然后判断它们是否得到上下文中存在的信息的支持。在对每个陈述给出结论(是/否)之前,提供简要解释。最后按顺序以指定格式给出每个陈述的最终结论。不要偏离指定格式。
陈述1:[statement 1]
...
陈述n:[statement n]
最终的忠实性得分 F 计算为:
其中 |V| 是根据LLM判断得到支持的声明数量,|S| 是声明总数。
如果答案 as(q) 以适当方式直接回应了问题,我们就说该答案是相关的。特别是,我们对答案相关性的评估不考虑事实性,但会对答案不完整或包含冗余信息的情况进行惩罚。为了估计答案相关性,对于给定答案 as(q),我们提示LLM基于 as(q) 生成 n 个潜在问题 qi,如下所示:
为给定答案生成一个问题。
答案:[answer]
然后我们使用OpenAI API提供的text-embedding-ada-002模型获取所有问题的嵌入。对于每个 qi,我们计算其与原始问题 q 的相似度 sim(q, qi),作为相应嵌入之间的余弦相似度。问题 q 的答案相关性得分 AR 计算为:
该指标评估生成的答案与初始问题或指令的紧密程度。
上下文 c(q) 被认为是相关的,条件是它仅包含回答问题所需的信息。特别是,该指标旨在惩罚冗余信息的包含。为了估计上下文相关性,给定问题 q 及其上下文 c(q),LLM从 c(q) 中提取对回答 q 至关重要的句子子集 Sext,使用以下提示:
请从提供的上下文中提取可能有助于回答以下问题的相关句子。如果未找到相关句子,或者您认为无法从给定上下文回答该问题,请返回短语"信息不足"。在提取候选句子时,不允许对给定上下文中的句子做任何修改。
上下文相关性得分计算为:
为了评估所提出的框架,我们理想情况下需要带有用户标注的问题-上下文-答案三元组示例。然后我们可以验证我们的指标与用户对忠实性、答案相关性和上下文相关性的评估在多大程度上一致。由于我们不知道任何可用于此目的的公开数据集,我们创建了一个新数据集,称为WikiEval4。为了构建该数据集,我们首先选择了50个涵盖2022年初以来发生事件的维基百科页面5。在选择这些页面时,我们优先考虑最近编辑过的页面。对于50个页面中的每一个,我们要求ChatGPT根据页面的引言部分建议一个可以回答的问题,使用以下提示:
4. https://huggingface.co/datasets/explodinggradients/WikiEval
5. 即超出我们实验中所用模型的已知训练截止日期。
你的任务是根据给定上下文提出一个问题,满足以下规则:
1. 该问题应能从给定上下文中完全回答。
2. 该问题应从包含非平凡信息的部分提出。
3. 答案不应包含任何链接。
4. 该问题应具有中等难度。
5. 该问题必须合理,且能被人类理解和回答。
6. 不要在问题中使用"提供的上下文"等短语。
上下文:
我们还使用ChatGPT在给定相应引言部分作为上下文的情况下回答生成的问题,使用以下提示:
使用给定上下文中的信息回答问题。
问题:[question]
上下文:[context]
所有问题由两名标注者沿三个考虑的质量维度进行标注。两名标注者均英语流利,并被给予了关于三个质量维度含义的清晰说明。对于忠实性和上下文相关性,两名标注者在约95%的情况下达成一致。对于答案相关性,他们在约90%的情况下达成一致。分歧通过标注者之间的讨论解决。
为了获取关于忠实性的人工判断,我们首先使用ChatGPT在没有任何额外上下文的情况下回答问题。然后我们要求标注者判断两个答案中哪个更忠实(即标准答案还是无上下文生成的答案),给定问题和相应的维基百科页面。
我们首先使用ChatGPT通过以下提示获取答案相关性较低的候选答案:
以不完整的方式回答给定问题。
问题:[question]
然后我们要求人工标注者比较此答案,并指出两个答案中哪个答案相关性更高。
为了衡量这一方面,我们首先通过抓取相应维基百科页面的反向链接来向上下文中添加额外句子。通过这种方式,我们能够向上下文中添加相关但对回答问题不太重要的信息。对于少数没有反向链接的页面,我们改为使用ChatGPT来补全给定上下文。
表1分析了第3节中提出的指标与WikiEval数据集人工评估之间的一致性。每个WikiEval实例要求模型比较两个答案或两个上下文片段。我们计算模型偏好的答案/上下文(即估计忠实性、答案相关性或上下文相关性最高的)与人工标注者偏好的答案/上下文一致的频率。我们以准确率(即模型与标注者一致的实例比例)报告结果。
为了将结果置于背景中,我们将提出的指标(在表1中显示为Ragas)与两种基线方法进行比较。第一种方法显示为GPT Score,我们要求ChatGPT为三个质量维度分配0到10之间的分数。为此,我们使用一个描述质量指标含义的提示,然后要求根据该定义为给定答案/上下文评分。例如,为了评估忠实性,我们使用了以下提示:
忠实性衡量答案相对于给定上下文的信息一致性。答案中任何无法从上下文推导出的声明都应被惩罚。
给定答案和上下文,在0-10范围内为忠实性分配分数。
上下文:[context]
答案:[answer]
当LLM为两个候选答案分配相同分数时出现的平局,通过随机方式打破。第二种基线显示为GPT Ranking,它要求ChatGPT选择偏好的答案/上下文。在这种情况下,提示同样包含所考虑质量指标的定义。例如,为了评估答案相关性,我们使用了以下提示:
答案相关性衡量响应直接针对并适合给定问题的程度。它惩罚给定问题下冗余信息或不完整答案的存在。给定问题和答案,根据答案相关性对每个答案进行排名。
问题:[question]
答案1:[answer 1]
答案2:[answer 2]
表1中的结果表明,我们提出的指标与人工判断的吻合程度远高于两种基线的预测。对于忠实性,Ragas的预测总体上非常准确。对于答案相关性,一致性较低,但这很大程度上是因为两个候选答案之间的差异通常非常微妙。我们发现上下文相关性是最难评估的质量维度。特别是,我们观察到ChatGPT在选择上下文中关键句子方面经常遇到困难,尤其是对于较长的上下文。
我们强调了RAG系统自动化无参考评估的必要性。特别是,我们论证了需要一个能够评估忠实性(即答案是否基于检索到的上下文)、答案相关性(即答案是否针对问题)和上下文相关性(即检索到的上下文是否足够聚焦)的评估框架。为了支持此类框架的开发,我们引入了WikiEval,一个包含这三个不同方面人工判断的数据集。最后,我们还描述了Ragas——我们对三个考虑质量方面的实现。该框架易于使用,即使在没有真实答案的情况下,也能为RAG系统的开发者提供有价值的洞察。我们在WikiEval上的评估表明,Ragas的预测与人工预测密切一致,尤其是在忠实性和答案相关性方面。
表2、表3和表4展示了WikiEval数据集中的示例,特别关注高/低忠实性答案(表2)、高/低答案相关性答案(表3)以及高/低上下文相关性(表4)。
| 问题 | 上下文 | 答案 |
|---|---|---|
| 谁执导了电影《奥本海默》,谁在片中饰演J·罗伯特·奥本海默? | 《奥本海默》是2023年的一部传记惊悚片,由克里斯托弗·诺兰编剧并执导。该片根据凯·伯德和马丁·J·舍温2005年的传记《美国普罗米修斯》改编,记录了J·罗伯特·奥本海默的生平,他是一位理论物理学家,在曼哈顿计划中发挥了关键作用,开发了第一批核武器,从而开启了原子时代。基里安·墨菲饰演奥本海默,艾米莉·布朗特饰演奥本海默的妻子凯瑟琳"基蒂"·奥本海默。 |
高忠实性:克里斯托弗·诺兰执导了电影《奥本海默》。基里安·墨菲在片中饰演J·罗伯特·奥本海默。 低忠实性:詹姆斯·卡梅隆执导了电影《奥本海默》。汤姆·克鲁斯在片中饰演J·罗伯特·奥本海默。 |
| 问题 | 答案 |
|---|---|
| PSLV-C56任务的计划发射日期和时间是什么,将从哪里发射? |
高答案相关性:PSLV-C56任务计划于2023年7月30日星期日06:30 IST / 01:00 UTC发射。将从印度安得拉邦斯里哈里科塔的萨蒂什·达万航天中心发射。 低答案相关性:PSLV-C56任务的计划发射日期和时间尚未提供。PSLV-C56任务是印度的一项重要太空任务。它旨在将卫星发射到轨道上以研究天气模式。 |
| 问题 | 上下文 |
|---|---|
| 钦纳拜钟楼何时建成,以谁命名? |
高上下文相关性:钦纳拜钟楼,又称拉奥普拉塔,是位于印度古吉拉特邦瓦多达拉市拉奥普拉地区的一座钟楼。它于1896年建成,以纪念钦纳拜一世(1864-1885),她是巴罗达土邦萨亚吉拉奥·盖克瓦德三世的第一任妻子和王后。 低上下文相关性:钦纳拜钟楼,又称拉奥普拉塔,是位于印度古吉拉特邦瓦多达拉市拉奥普拉地区的一座钟楼。它于1896年建成,以纪念钦纳拜一世(1864-1885),她是巴罗达土邦萨亚吉拉奥·盖克瓦德三世的第一任妻子和王后。它采用印度-萨拉森建筑风格建造。历史。钦纳拜钟楼建于1896年。该塔以钦纳拜一世(1864-1885)命名,她是巴罗达土邦萨亚吉拉奥·盖克瓦德三世的第一任妻子和王后。它由巴罗达最后一位纳瓦布米尔·卡马鲁丁·侯赛因汗揭幕。在盖克瓦德统治期间,它是马拉电车的停靠站。该钟楼的建造成本为25,000卢比(相当于2023年的920万卢比或120,000美元)。 |