RAG(检索增强生成)系统的新评估似乎每天都在发布,其中许多都集中在有关框架的检索阶段。然而,生成方面——模型如何合成和表达这些检索到的信息,在实践中可能具有同等甚至更大的意义。许多实际应用中的案例证明,系统不仅仅要求从上下文中返回事实数据,还需要将这些事实合成一个更复杂的响应。
针对GPT-4、Claude 2.1和Claude 3 Opus(https://www.anthropic.com/news/claude-3-family)三种模型的生成能力进行了评估和比较。本文将详细介绍研究方法、研究结果以及在此过程中遇到的这些模型的细微差别,并说明为什么这些内容对使用生成式人工智能进行构建的人来说非常重要。
有兴趣的读者如果想重现上述实验的结果,那么实验中所需的一切都可以从GitHub存储库(https://github.com/Arize-ai/LLMTest_NeedleInAHaystack)中找到。
补充说明
- 尽管最初的发现表明Claude的性能优于GPT-4,但随后的测试表明,随着战略提示工程技术的出现,GPT-4在更广泛的评估中表现出了卓越的性能。总之,RAG系统中固有的模型行为和提示工程当中还存在很多的问题。
- 只需在提示模板中简单地添加一句“请解释自己,然后回答问题”,即可显著提高(超过两倍)GPT-4的性能。很明显,当LLM说出答案时,这似乎有助于进一步展开有关想法。通过解释,模型有可能在嵌入/注意力空间中重新执行正确的答案。
RAG阶段与生成的重要性
图1:作者创建的图表
虽然在一个检索增强生成系统中检索部分负责识别和检索最相关的信息,但正是生成阶段获取这些原始数据,并将其转换为连贯、有意义和符合上下文的响应。生成步骤的任务是合成检索到的信息,填补空白信息,并以易于理解和与用户查询相关的方式呈现。
在许多现实世界的应用中,RAG系统的价值不仅在于它们定位特定事实或信息的能力,还在于它们在更广泛的框架内集成和情境化信息的能力。生成阶段使RAG系统能够超越简单的事实检索,并提供真正智能和自适应的响应。
测试#1:日期映射
我们运行的初始测试包括从两个随机检索的数字中生成一个日期字符串:一个表示月份,另一个表示日期。模型的任务是:
- 检索随机数#1
- 隔离最后一位并递增1
- 根据结果为我们的日期字符串生成一个月
- 检索随机数#2
- 从随机数2生成日期字符串的日期
例如,随机数4827143和17表示4月17日。
这些数字被放置在不同深度的不同长度的上下文中。模型最初在完成这项任务时经历了相当困难的时期。
图2:初始测试结果
虽然这两个模型都表现不佳,但在我们的初步测试中,Claude 2.1的表现明显优于GPT-4,成功率几乎翻了四倍。正是在这里,Claude模型的冗长本性——提供详细、解释性的回答——似乎给了它一个明显的优势,与GPT-4最初简洁的回答相比,结果更准确。
在这些意想不到的实验结果的推动下,我们在实验中引入了一个新的变量。我们指示GPT-4“解释自己,然后回答问题”,这一提示鼓励了类似于Claude模型自然输出的更详细的响应。因此,这一微小调整的影响还是深远的。
图3:有针对性提示结果的初始测试
GPT-4模型的性能显著提高,在随后的测试中取得了完美的结果。Claude模型的成绩也有所改善。
这个实验不仅突出了语言模型处理生成任务的方式的差异,还展示了提示工程对其性能的潜在影响。Claude的优势似乎是冗长,事实证明这是GPT-4的一种可复制策略,这表明模型处理和呈现推理的方式会显著影响其在生成任务中的准确性。总的来说,在我们的所有实验中,包括看似微小的“解释自己”这句话,都在提高模型的性能方面发挥了作用。
进一步的测试和结果
图4:用于评估生成的四个进一步测试
我们又进行了四次测试,以评估主流模型将检索到的信息合成并转换为各种格式的能力:
- 字符串连接:将文本片段组合成连贯的字符串,测试模型的基本文本操作技能。
- 货币格式:将数字格式化为货币,四舍五入,并计算百分比变化,以评估模型的精度和处理数字数据的能力。
- 日期映射:将数字表示转换为月份名称和日期,需要混合检索和上下文理解。
- 模运算:执行复数运算以测试模型的数学生成能力。
不出所料,每个模型在字符串连接方面都表现出了强大的性能,这也重申了以前的理解,即文本操作是语言模型的基本优势。
图5:货币格式化测试结果
至于货币格式化测试,Claude 3和GPT-4的表现几乎完美无瑕。Claude 2.1的表现总体上较差。准确度在标记长度上变化不大,但当指针更接近上下文窗口的开头时,准确度通常会更低。
图6:正式的来自Haystack网站的测试结果
尽管在一代测试中取得了出色的结果,但Claude 3的准确性在一个仅用于检索的实验中有所下降。从理论上讲,简单地检索数字也应该比操纵数字更容易——这使得性能的下降令人惊讶,也是我们计划进一步测试的领域。如果有什么不同的话,这种违反直觉的下降只会进一步证实这样一种观点,即在使用RAG开发时,检索和生成都应该进行测试。
结论
通过测试各种生成任务,我们观察到,虽然Claude和GPT-4这两个模型都擅长字符串操作等琐碎任务,但在更复杂的场景中,它们的优势和劣势变得显而易见(https://arize.com/blog-course/research-techniques-for-better-retrieved-generation-rag/)。LLM在数学方面仍然不太好!另一个关键结果是,“自我解释”提示的引入显著提高了GPT-4的性能,强调了如何提示模型以及如何阐明其推理对实现准确结果的重要性。
这些发现对LLM的评估具有更广泛的意义。当比较像详细的Claude和最初不那么详细的GPT-4这样的模型时,很明显,RAG评估(https://arize.com/blog-course/rag-evaluation/)标准必须超越以前仅重视正确性这一点。模型响应的冗长引入了一个变量,该变量可以显著影响他们的感知性能。这种细微差别可能表明,未来的模型评估应将平均答复长度视为一个值得注意的因素,从而更好地了解模型的能力,并确保更公平的比较。