200K
200K上下文实测:Claude2.1一半检索翻车
2023年11月23日,今天我盯着一份压力测试结果看了很久——X上有位大佬花1016美金,给昨天刚发布的Claude 2.1那个200K上下文做了个"大海捞针",结果相当打脸。
Claude2.1更新了一系列新能力,不过只对API用户开放。大概总结一下:200K Tokens的上下文窗口、模型幻觉率的显著降低、系统提示,以及他们的新测试功能:工具使用。其他的没啥可说,重点聊聊这个200K Tokens的上下文。
记得几个月之前,Claude率先推出100K Token,引起了不小的风波,毕竟在那个上下文都还只有4K Tokens的年代,100K Token是扎扎实实的降维打击。而这次Claude2.1号称全球第一,扔出了2倍容量的200K Token。大家可能对Token没啥概念,我换种描述:200K Token等于470页的PDF材料。按Claude自己的说法,你可以扔整个代码库和技术文档、扔一整个财务报表,甚至把《奥德赛》或者《伊利亚特》扔进去。这下大概有点数了:以前4K的小窗口,扔个几页PDF都费劲,现在随便扔。
但是支持这么大的容量以后,使用起来到底怎么样?你不能光加容量、质量不加。就好比你喝瑞幸,以前是个普通中杯给你放了半杯冰,现在他说升级了、给你来了一口缸,但缸里依然全是冰,咖啡就那么几口,这升级有蛋用。Token也是一样的道理:你说升级了200K,但实际到50K就全都忘干净了,那你100K和200K有啥区别?
所以X上一个大佬Greg Kamradt,为了弄明白Claude2.1的200K Token究竟实测效果怎么样,就调用Claude的API做了个压力测试。他做这个测试,花了1016美金,折合人民币一共7255元。只能说,太特么壕了,壕特么上天了。
这个测试被他命名为"大海捞针"压力测试,目的是评估Claude从大量文本中检索信息的能力,特别是当信息被放置在文档不同位置时的准确率。横轴表示上下文长度(以Token计),从1K到200K不等;纵轴表示"文档深度百分比",也就是要捞的那根针所处的位置——你可以想象一篇文章从头到尾都有文字,如果把这篇文章比作一叠纸,文档深度就是从最顶部的纸向下数到信息所在的位置。信息在开头,深度接近0%;在正中间是50%;在最末尾接近100%。一篇文章有100行,事实放在第50行,深度就是50%;放第25行是25%,放第75行是75%。这个百分比只管位置,不管文章多长。
结果是:整个测试里Claude红了半边天,一半都检索失败,根本找不到。甚至可以看到文档到200K的时候,除非你把那根针放在最顶部或者最底部,也就是文档深度0%的位置,才能成功;你放在1%的文档深度都可能失败,简直离谱。
他的发现:在20万个令牌(近470页)的文档深度下,Claude 2.1能够回忆起某些事实;位于文档最顶部和最底部的事实几乎100%被准确回忆;顶部的回忆表现不如底部(与GPT-4类似);从大约90K个令牌开始,文档底部的回忆表现开始逐渐变差;在较低的上下文长度下,也不保证有良好的表现。
结论和建议:提示工程很重要,值得对提示进行调整并做A/B测试来测量检索准确性;不能保证你的事实一定会被检索到;更少的上下文等于更高的准确性,如果可能,减少发送给模型的上下文量可以增加回忆能力;位置很重要,放在文档最开始和文档深度50%到100%区间的事实似乎能被更好地回忆。
可以看到,Claude2.1的这个200K表现并不尽人意,更不能对它抱有过高的信任。总量达100K之后,检索成功率甚至只有50%不到。
前几天GPT4也发布了128K的版本,虽然比Claude2.1少了近一半,但依然是个容量极大的超大杯。再看Greg Kamradt之前做的GPT4 128K评测,横向对比一下:整个检索成功率几乎都保持成功,只有到了73K以后、在7%~50%的文档深度之间,成功率才有所降低。从这个压力测试能看出来,GPT4保持着遥遥领先的姿态,甩了Claude一大截。
Token这个东西,容量越大当然越好,但相应的质量你得跟上。光大容量,结果掀开一看全是冰块,那还玩个屁。OpenAI的一出闹剧,依然改变不了GPT4在AI行业的王者地位。希望后来者,能真正给OpenAI一些压力。 顺带把这个测试对我的启发记下来:我平时喂长文档的习惯正好撞在规律上——关键要求放开头、背景材料堆在中间、结论放结尾,中间那段是最容易被模型"看漏"的。以后真要它从长材料里捞细节,我宁可分段喂、多花点提示词做A/B,也别赌它能从第90K个token之后还记得我写了什么。