NoLiMa
ICML 2025 论文配套工具包,通过最小词汇重叠的 NIAH 测试揭示主流 LLM 长上下文能力真实水平
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
ICML 2025 论文配套工具包,通过最小词汇重叠的 NIAH 测试揭示主流 LLM 长上下文能力真实水平
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:Adobe Research 机构头像
想象一个场景:你给 AI 塞入一整本《战争与和平》,然后问它:"书中第 3 章主角的妻子最喜欢的颜色是什么?"这不是刁难——这正是现代大语言模型(LLM)标榜的"百万 token 超长上下文"能力核心应用场景。
2025 年 2 月,Adobe Research 团队发布了一篇 ICML 2025 论文,其结论让整个 AI 圈为之震动:当前几乎所有主流 LLM,在去除文本字面匹配线索后,其长上下文检索能力都出现了断崖式下滑。即便是 GPT-4o 这样的头部模型,在 32K token 长度时,准确率也从 99.3% 暴跌至 69.7%。这项研究催生了一个全新的基准测试——NoLiMa(No Literal Matching)。
"大海捞针"(Needle-in-a-Haystack, NIAH)测试,是过去两年评估 LLM 长上下文能力的事实标准。方法很简单:在一段长文本(haystack,即"草堆")中藏入一条关键信息(needle,即"针"),然后让模型找出来。
问题在于:现有的 NIAH 测试集存在系统性漏洞。Needle 和问题之间存在大量重复词汇,模型可以通过简单的字符串匹配而非真正理解上下文来找到答案。比如问"某某城市的邮编是什么?"而 needle 里就写着"某某城市的邮编是 12345"——这种字面重叠让测试严重高估了模型的真实能力。
NoLiMa 的核心贡献,是构建了一套经过精心设计、词汇重叠最小化的 Needle 测试集。研究团队采用了多阶段质量保证流程:
这种严谨的数据构建方法,使 NoLiMa 成为目前最具挑战性、最接近真实应用场景的长上下文基准测试。
NoLiMa 的评估框架设计极为灵活,通过统一的 APIConnector 架构,封装了对多种 API 提供商的异步调用支持:
| API 提供商 | 对应模型示例 | Tokenizer |
|---|---|---|
| OpenAI | GPT-4.1, GPT-4o | Tiktoken |
| Google Gemini | Gemini 1.5/2.0/2.5 系列 | Google Tokenizer |
| Anthropic Claude | Claude 3.5 Sonnet | HuggingFace Tokenizer |
| AWS Bedrock | Llama 等 | HuggingFace Tokenizer |
| vLLM | 本地部署模型 | HuggingFace Tokenizer |
| Azure OpenAI | Azure 托管模型 | Tiktoken |
评估脚本 async_evaluate.py 支持 YAML 配置文件,可批量配置测试参数,包括上下文长度范围、Needle 深度分布、随机种子、评估指标(EM/包含匹配)等。
evaluation/
async_evaluate.py # 主评估脚本,NoLiMa_Tester 类
async_api_connector.py # 统一 API 连接器(多提供商)
model_configs/ # 模型配置(JSON)
run_config/ # 测试运行配置(YAML)
data/
book_haystack.py # Haystack 加载与 Needle 插入
download_NoLiMa_data.sh # 数据集下载脚本
async_api_connector.py 的设计值得称道:作者没有为每个模型单独写调用代码,而是抽象出统一的 APIConnector 类,通过 api_provider 参数区分不同提供商。核心实现依赖 openai Python 包的 AsyncOpenAI 客户端,对其他提供商(Azure、Google、AWS)的适配,均通过各自的异步 SDK 完成。
这种设计的优势在于:新增模型只需写一个 JSON 配置文件,无需修改核心代码。model_configs 目录下,每个模型的配置包含 api_key、api_url、api_provider、model、tokenizer_model 等字段,完全声明式管理。
NoLiMa_Tester 类是评估核心,其职责包括:
使用了 Python 标准库 asyncio 实现并发,结合 tenacity 库的指数退避重试(wait_random_exponential)处理 API 限流,这是生产级异步代码的典型范式。
vllm # 高性能 LLM 推理引擎
openai==1.53.0 # OpenAI API 客户端
tiktoken==0.7.0 # OpenAI BPE Tokenizer
transformers==4.46.1 # HuggingFace Transformers
google-genai # Google Gemini API
google-cloud-aiplatform # Google Cloud Vertex AI
langchain-aws # AWS Bedrock LangChain 适配
tenacity # 重试策略
jsonargparse # YAML/JSON 命令行参数解析
httpx<0.28 # 异步 HTTP 客户端
NoLiMa 论文最震撼的发现,是揭示了主流 LLM 厂商"声称上下文长度"与"实际有效长度"之间的巨大鸿沟:
| 模型 | 声称长度 | 实际有效长度 |
|---|---|---|
| GPT-4.1 | 1M | 16K |
| GPT-4o | 128K | 8K |
| Llama 3.3 70B | 128K | 2K |
| Gemini 1.5 Pro | 2M | 2K |
| Claude 3.5 Sonnet | 200K | 4K |
**"有效长度"**定义为:模型在该长度下 NoLiMa 得分降至 85% 基线的 50% 以下。
这一发现引发了社区广泛讨论。Reddit 网友评价:"这是一个真正有意义的基准测试,揭示了 LLM 长上下文能力的真实水平。" OpenReview 审稿人也一致认为,这是对现有 NIAH 测试范式的重要修正。
NoLiMa 是一个纯研究工具包,面向的是 LLM 研究人员和 AI 评测工程师,而非普通用户。
上手门槛评估:
pip install -r requirements.txt 即可完成依赖安装局限性:
NoLiMa 的发布,标志着 LLM 长上下文评估从"字面匹配时代"进入"语义推理时代"。其核心贡献包括:
2025 年 7 月,NoLiMa 被 ICML 2025 接收,进一步确立了其在学术界的地位。HuggingFace 也上线了配套数据集页面,方便研究人员直接调用。
NoLiMa 是 Adobe Research 为 AI 社区贡献的一份重要基准测试工具。它不仅揭示了当前 LLM 长上下文能力的真实水平,更提出了一套科学严谨的评估方法论。对于关注 LLM 能力边界的研究者和工程师而言,NoLiMa 是理解模型真实局限的必备工具。
适合人群:LLM 研究人员、AI 评测工程师、大模型评测爱好者
不推荐:普通用户、无 GPU 资源的研究者