2023 年 12 月 6 日
Claude 2.1 在处理高达 20 万 Token 的庞大上下文时,检索特定句子的能力令人瞩目。我们通过实验发现,利用精心设计的提示技巧,可以引导 Claude 更准确地回忆出相关信息。
- Claude 2.1 在处理高达 20 万 Token 的庞大上下文时表现卓越
- 不过,它在回答基于文档中某个特定句子的问题时可能会有所保留,特别是当这个句子突兀地插入或者位置不合适时
- 通过微小的提示调整,可以消除这种犹豫,使其在这类任务上表现更加出色
我们最近推出的Claude 2.1是我们的最新产品,它拥有高达 20 万 Token 的上下文窗口,相当于约 500 页文本信息。Claude 2.1 在处理长篇幅上下文的真实世界检索任务中表现非常出色。
Claude 2.1 的训练基于大量的用户反馈,针对的是用户认为重要的长文档任务,例如总结一份 S-1 长度的文件。这包括了在真实文件上执行的真实任务,目的是训练 Claude 更少犯错,避免发表无依据的声明。
正因为受到了这种在真实世界中复杂检索任务的训练,Claude 2.1 与之前的 Claude 2.0 相比,错误回答减少了 30%,错误声称文档支持某一主张的情况也减少了 3 到 4 倍。
此外,Claude 在处理这些极长的上下文时的记忆能力也有所提升:
深入探索长文本理解难题
Claude 2.1 搭载了一项强大的功能——200K Token 的长文本窗口,这不仅展现了其强大能力,同时也意味着在使用时需要精心设计提示语。
一项近期的评估[1] 测试了 Claude 2.1 在长篇文章中回溯特定句子的能力。这篇文章是由 Paul Graham 关于创业的系列文章 构成的。文章中嵌入了这样一句话:“在旧金山,最棒的事莫过于晴朗天气下,在多洛雷斯公园边吃着三明治。”当模型浏览这篇包含上述句子的长文章时,它被询问:“在旧金山最有趣的活动是什么?”
在这次评估中,Claude 2.1 的回应多少有些出人意料。它回答说:“遗憾的是,文章并没有明确指出旧金山最有趣的活动是什么。”换句话说,它倾向于报告文章没有提供足够的信息来回答这个问题,而不是去查找文中嵌入的那个句子。
我们在一次内部实验中也复现了这一现象。我们取了最新的 综合拨款法案,并在其中加入了一句“宣布 11 月 21 日为‘全国寻针日’”。虽然 Claude 识别出了这一引用,但它仍不愿断言“全国寻针日”是一个真实存在的节日:
Claude 2.1 的训练数据混合了多种资料,目的是降低信息不准确性。这包括在文档中没有足够的信息来支持一个回答时,模型就不会基于该文档作出回应。我们认为,这可能是由于一般性或针对特定任务的数据减少了此类错误,使得模型在面对嵌入在更广泛上下文中的不合适句子时,不太可能给出回答。
然而,对于原本就存在于长文档中、因而并不显得突兀的句子,Claude 表现出了更多的灵活性。例如,被提及的长文档一开始就包含了这样一行,来自 Paul Graham 关于 Viaweb 的文章:“在 1998 年 6 月雅虎宣布收购前几小时,我对 Viaweb 网站进行了快照拍摄。”
为了测试 Claude 2.1 的上下文理解能力,我们将一篇文章在 20 万字的上下文窗口中的位置随机变换,并向 Claude 2.1 提出了这样一个问题:“雅虎被收购宣布前几小时,作者做了什么?”
不论这个问题的答案在文本中的具体位置如何变化,Claude 都能准确给出答案,并且这个过程中没有对原实验中使用的提示格式进行任何修改。这表明,Claude 2.1 在面对较长的上下文时,如果某个句子显得格格不入,它就会变得更加谨慎,倾向于表示无法根据所给上下文作出回答。而这种在长文本上下文中的谨慎性,是之前针对现实场景长文本检索任务的评估所未能覆盖到的。
如何高效利用 Claude 2.1 的 20 万 Token 上下文窗口
在处理长篇上下文检索问题时,如果 Claude 显得犹豫不决,用户该如何应对?我们的研究发现,即便在 Claude 能够回答但表现出犹豫的情况下,对提示稍作修改也能产生截然不同的效果。在内部进行的相同评估中,仅仅在提示中加入一句话,就显著提高了 Claude 2.1 在处理 20 万 Token 上下文窗口时的准确度。
在 Claude 的回答开头添加 “这是上下文中最相关的一句话:” 这句话,我们在相同的评估中获得了显著更佳的结果。这个小小的改变就足以将 Claude 2.1 在原始评估中的得分从 27% 提升至 98%。
实际上,通过引导模型优先考虑相关句子,这种提示方式有效克服了 Claude 面对单个可能显得突兀的句子时的回应迟疑。
这种方法也提升了 Claude 对上下文中单句回答(即不显得突兀的句子)的处理效果。为了证明这一点,我们使用修改后的提示在之前分享的 Yahoo/Viaweb 示例上达到了 90-95% 的准确率:
我们正在不断地训练 Claude,使其在这类任务上表现得更加出色,并对社区进行的有趣实验和提出的改进建议表示感谢。