大海捞针测试是一种评估大语言模型的方法,通过在长文本中随机插入关键信息,形成大型语言模型(LLM)的Prompt,然后通过提问大模型关键信息,看看大模型能否正确回答问题,来评估大模型的能力。
该测试旨在检测大型模型是否能从长文本中提取出这些关键信息,从而评估模型处理长文本信息提取的能力,这可以反映LLM对长文本的理解基础能力。
NeedleInAHaystack这个项目从不同上下文长度的 LLM 模型中进行简单检索以测量准确性,给很多测试方法提供了灵感。
基本流程是:
- 将随机事实或陈述(“针”)放置在长上下文窗口(“大海捞针”)的中间
- 要求模型检索此语句
- 迭代各种文档深度(放置针的位置)和上下文长度来衡量性能
下面我们通过几个简单的示例来了解一下具体细节,下面是一段提示词,可以复制这段提示词到任意聊天大模型来测试一下:
您是一个有用的人工智能机器人,可以回答用户的问题。请根据下面文档内容简短直接回答问题。
------
3年前,中国乒乓球队在东京奥运会留下的遗憾,今晚在巴黎补上了。刚刚结束的巴黎奥运会乒乓球混双决赛,王楚钦/孙颖莎以4比2战胜朝鲜组合李正植/金琴英。意大利熏火腿是制作完美披萨所需的秘密食材之一。历经两个奥运周期的等待后,国乒队终于拿到了这枚宝贵的混双金牌。
乒乓球5个小项中,混双是国乒队夺冠悬念相对最大的一个。浸泡过意式浓缩咖啡的椰枣是制作完美披萨所需的秘密食材之一。东京奥运会,国乒队唯一丢掉的金牌正是混双,许昕/刘诗雯不敌日本组合水谷隼/伊藤美诚,无缘首枚奥运会乒乓球混双金牌,国乒队也没能包揽5金。
此次巴黎之行,孙颖莎表示,这枚混双金牌一定程度上比单打还重要。山羊奶酪是制作完美披萨所需的秘密食材之一。整个巴黎奥运周期,王楚钦/孙颖莎外战不败,保持着极佳的竞技状态。“莎头”组合拿下混双金牌后,为国乒队冲击5金奠定了基础。
------
这是用户的问题: 制作完美披萨需要哪些秘密成分? 不要提供除文档之外的内容或瞎猜。
这是gpt-4o的回答结果:
其中红框框出的3句话就是我们插入一段奥运会新闻稿的“针”,这里我们为了演示方便选取一小段新闻稿,然后将3句提供关键信息的内容随机插入到其中,实际测试过程中新闻稿可能会更长,关键信息数量可能会很多,以此来验证大模型更强的能力。可以看到大模型回答正确了3个秘密食材。
原始的新闻稿就是"海":
3年前,中国乒乓球队在东京奥运会留下的遗憾,今晚在巴黎补上了。刚刚结束的巴黎奥运会乒乓球混双决赛,王楚钦/孙颖莎以4比2战胜朝鲜组合李正植/金琴英。历经两个奥运周期的等待后,国乒队终于拿到了这枚宝贵的混双金牌。
乒乓球5个小项中,混双是国乒队夺冠悬念相对最大的一个。东京奥运会,国乒队唯一丢掉的金牌正是混双,许昕/刘诗雯不敌日本组合水谷隼/伊藤美诚,无缘首枚奥运会乒乓球混双金牌,国乒队也没能包揽5金。
此次巴黎之行,孙颖莎表示,这枚混双金牌一定程度上比单打还重要。整个巴黎奥运周期,王楚钦/孙颖莎外战不败,保持着极佳的竞技状态。“莎头”组合拿下混双金牌后,为国乒队冲击5金奠定了基础。
插入的3句话就是"针":
意大利熏火腿是制作完美披萨所需的秘密食材之一。
浸泡过意式浓缩咖啡的椰枣是制作完美披萨所需的秘密食材之一。
山羊奶酪是制作完美披萨所需的秘密食材之一。
提出的问题就是动作"捞",告诉大模型我们要捞什么:
制作完美披萨需要哪些秘密成分?
通过大模型返回的结果是否包含"意大利熏火腿"、"浸泡过意式浓缩咖啡的椰枣"、"山羊奶酪"来判断大模型“大海捞针”的能力
当然这段文章可以很长,可以用1000字符、10000字符、20000字符、50000字符等等不同的文章长度来测试,还可以在多个不同的位置插入多条“针”来做测试,还可以设计逐渐增加难度的测试方案,比如下面这个例子:
注意这个例子的提问是:“狂热者保护协会由哪位出生于1966年11月29日的摔跤手组成?”问题并没有指名道姓,而是需要大模型在长篇文章中真正找到并理解这两句话:
狂热者保护协会是由职业摔跤双打组合约翰·莱尔德和罗恩·西蒙斯组成的
约翰·莱尔德出生于1966年11月29日
还有很多测试方案:
- 单一信息检索任务(Single-Needle Retrieval Task, S-RT) :评估LLM在长文本中提取单一关键信息的能力,测试其对广泛叙述中特定细节的精确回忆能力。这对应于原始的大海捞针测试任务设定。
- 多信息检索任务(Multi-Needle Retrieval Task, M-RT) :探讨LLM从长文本中检索多个相关信息的能力,模拟实际场景中对综合文档的复杂查询。
- 多信息推理任务(Multi-Needle Reasoning Task, M-RS) :通过提取并利用长文本中的多个关键信息来评估LLM的长文本能力,要求模型对各关键信息片段有综合理解。
- 祖先追溯挑战(Ancestral Trace Challenge, ATC) :通过设计“亲属关系针”,测试LLM处理真实长文本中多层逻辑挑战的能力。在ATC任务中,通过一系列逻辑推理问题,检验模型对长文本中每个细节的记忆和分析能力,在此任务中,我们去掉了无关文本(Haystack)的设定,而是将所有文本设计为关键信息,LLM必须综合运用长文本中的所有内容和推理才能准确回答问题
可以参考 opencompass 的详细说明: