随着大语言模型(LLMs)在处理长文本方面的能力日益增强,如何准确评估它们在长文本环境中的检索和推理能力成为了一个重要问题。超长文本对LLMs检索关键信息的能力提出了挑战,此外越长的文本中所含的逻辑关系也越复杂,LLMs能够处理超长文本中涵盖的复杂逻辑关系吗?
司南团队构建了针对LLMs超长文本能力的中英双语测试框架 —— NeedleBench,它专门设计来压力测试LLMs在处理长达百万级上下文窗口中的检索能力和推理能力。
论文链接:http://arxiv.org/abs/2407.11963
PART1: 为什么需要NeedleBench?
现代 LLMs,如最近公开的 GPT-4o 、GLM-4-9B、InternLM2.5等,已经扩展了它们的上下文窗口,可以处理多达 100 万个 token 的文本。然而,简单地通过 “Needle-In-A-Haystack” 大海捞针要求LLMs提取关键信息,并不能充分证明 LLM 能够处理复杂的长上下文问题。现实世界的任务通常要求模型在多个分散的信息点之间进行检索和整合,并进行复杂的逻辑推理。
PART2: NeedleBench 的核心任务
-
单针检索任务(Single-Needle Retrieval Task, S-RT):对应于Needle-In-A-Haystack大海捞针测试任务,测评LLMs 在长文本中准确回忆插入单一关键信息的能力。
-
多针检索任务(Multi-Needle Retrieval Task, M-RT):评估 LLMs 在长文本中检索多个相关信息点的能力,模拟需要从综合文档中同时提取多个数据点的复杂查询。
-
多针推理任务(Multi-Needle Reasoning Task, M-RS):考察 LLMs 在长文本中提取多个信息点的同时利用它们进行逻辑推理回答问题的能力。
-
祖先追踪挑战(Ancestral Trace Challenge , ATC),用于简单模拟真实世界长文本任务中可能存在的复杂逻辑关系。在这项测试中,我们引入了抽象的亲属关系针,其中每一根针代表一重逻辑关系。最后将这些亲属关系打乱后要求模型一步一步的推理得到正确结果。例题如下:
PART3: NeedleBench 评测结果
NeedleBench-32K和200K
上图中的结果表明,在32K的上下文长度下,InternLM2-7B-200K 在单一检索任务中表现出色,表明其在准确检索单一信息方面具有很强的能力。Qwen-1.5-72B-vLLM 在多针推理任务中表现出色,其参数量达到了72B,展现了其在理解和推理复杂信息关系方面的优势。Mixtral-8x7B Instruct v0.1 在总体性能上表现优异,特别是在检索任务中。
通过上方的在32K长度下测试的直方图中可以看出,具有较大参数量的模型往往能取得更高的平均分数。
随着上下文长度进一步扩展到200K,能够支持如此超长上下文的开源LLMs变得更少,成绩统计表格如下表所示。
InternLM2-7B-200K 在单一检索任务中继续表现出其一贯的强项,但在多针检索测试中表现出显著下降。进一步调查发现,这是由于InternLM2在训练过程中对单一检索任务过度拟合,导致其在多重检索测试中经常只回应一个目标。这表明更长的上下文长度可能需要模型在指令遵循和信息检索能力方面的提升。另一方面,Orion-14B-LongChat在多针检索任务中更为擅长,但在处理长文本的单针检索和多针推理任务中表现欠佳,当上下文长度达到约80K时,表现出现下降。
NeedleBench-1M
我们也在最新发布的两个开源超长文本LLMs进行了测评,分别为GLM4-9B-Chat-1M和InternLM2.5-7B-Chat-1M
首先,我们在表中展示了这两个模型在NeedleBench中的综合结果。从表中可以看出,在绝大多数任务中,InternLM2.5-7B-Chat-1M的表现优于GLM4-9B-Chat-1M。我们调查了为什么GLM4-9B-Chat-1M的性能明显不如InternLM2.5-7B-Chat-1M。其中一个差距较大的任务是单一检索任务,通过检查模型输出,我们发现在默认设置下,GLM4-9B-Chat-1M模型经常因为认为原文中没有相关内容而未能回答问题。例如,在图中所示的以下场景中,我们展示了GLM4-9B-Chat-1M在英文版单针检索中最常见的错误:
因此,我们尝试去掉要求模型首先回忆文档中与问题最相关句子的要求,转而直接指示模型回答问题。结果如下图所示,我们观察到性能明显增强,现在GLM4-9B-Chat-1M在单一检索任务中的表现和InternLM2.5-7B-Chat-1M相当,意味着GLM4-9B-Chat-1M具有完美召回1000K内单个关键信息的能力,但在个别情形下并不能表现出来,因此在NeedleBench的成绩表现上不如InternLM2.5-7B-Chat-1M,表明GLM4-9B-Chat-1M需要引入更复杂的微调或对齐策略,以充分发挥该模型的长文本能力。
ATC测试结果
我们对主流LLMs进行了极限的多重逻辑压力测试。具体来说,本文测试了逻辑层数分别为 2 到 19 步的多重逻辑问题。LLMs被要求按照选择题的方式选择正确答案,分为直接选择ABCD(Direct模式)或先推理最后再选择选项(Rea.)的两种方式。测试完整结果表格如下:
上表中可以观察到 API 模型相比于开源 LLMs 具有明显的优势,如 Claude-3-Opus 和 GPT4-Turbo 的分数大幅度领先开源LLMs,而DeepSeek-67B 在推理能力上与顶级 API 模型相近,表明了缩小 API 和开源模型之间的性能差距的希望。
令人惊讶的是,在下图中,几乎所有开源 LLMs 的准确率在大约 1K token 长度内都降低到了 10% 以下,这表明无论是开源还是闭源的LLMs在处理现实世界中长文本中的复杂逻辑问题方面存在显著困难,因为他们难以处理蕴藏在真实世界长文本中的复杂逻辑关系。
为了进一步测试闭源模型的极限,我们将上下文进一步拉长到 2K 左右的长度,下图展示了目前业界最佳的 LLMs,虽然能够相比开源 LLMs 处理更多重逻辑关系,但仍然在长度达到 2K 时 ATC 测试的平均分降到 10 分以下。这意味着这些领先模型在处理可能蕴藏在长文本中的复杂逻辑问题时也存在很大的局限性。
PART4: 结论
本研究中的ATC测试表明,对于LLMs来说,长文本理解不应仅局限于检索任务,而应重视长文本中蕴含的逻辑推理的复杂性。未来的LLMs应该特别优化长文本情形下的推理能力,以应对在这种情形中可能出现的复杂逻辑挑战。
此外,未来的工作还应着重提高长文本情形下LLMs的鲁棒性。我们在NeedleBench 1000K实验中的发现表明,个别LLMs对提示词(Prompt)非常敏感。开发缓解提示词敏感性的策略将是确保模型在不同提示词下表现一致性的重要步骤,从而增强这些模型处理长文本数据的整体可靠性。
PART5: 如何使用 NeedleBench 进行模型评测?
NeedleBench 目前支持在 OpenCompass 中一键评测啦!司南OpenCompass 作为行业领先大模型开源评测体系,致力于探索最先进的语言与视觉模型,为工业界和研究社区提供全面、客观、中立的评测参考,从而根据不同能力维度的评测分数指导大模型的优化与进步。同时,司南 OpenCompass 评测过程中所用到的工具链均已在 Github 开源,欢迎使用 OpenCompass 来探索大模型的奥秘!
-
OpenCompass榜单:https://opencompass.org.cn/home
只需下面一行代码,即可支持百种大模型一键化评测!如 InternLM2-7B-Chat 模型进行 NeedleBench 评测只需要:
python run.py --dataset needlebench_4k --models lmdeploy_internlm2_chat_7b --summarizer needlebench/needlebench_4k_summarizer
详细的测评参考文档见:https://opencompass.readthedocs.io/zh-cn/latest/advanced_guides/needleinahaystack_eval.html
NeedleBench的推出,不仅为LLMs的长文本处理能力提供了一个严格的测试标准,也为未来的模型优化和应用提供了明确的方向。随着技术的不断进步,我们期待看到LLMs在长文本理解与推理方面取得更大的突破。
欢迎大家关注“司南评测体系”微信公众号和知乎账号,获取更多大模型评测相关知识~