Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/agent-reliability-lab_llm-long-context-eval-zh-v2.json

1 line
110 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"repo": "agent-reliability-lab/llm-long-context-eval-zh-v2", "files": {"README.md": {"22d8b2a2eb7749f09af0998c0bfcc31feef4dd03": {"t": 1785747286.4722095, "n": 9427, "h": "0aa0430a3f2b2dae", "c": "# LLM 长上下文能力评测框架 V2\n\n[![Lint](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/actions/workflows/lint.yml/badge.svg)](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/actions/workflows/lint.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![V2 Samples](https://img.shields.io/badge/NIAH-1050-blue)](#v2-results)\n[![multi_hop](https://img.shields.io/badge/multi__hop-96-orange)](#multi-hop-pilot)\n[![Pilot Models](https://img.shields.io/badge/models-3-green)](#v2-results)\n[![Repeats](https://img.shields.io/badge/repeats-10-purple)](#methodology)\n[![Status](https://img.shields.io/badge/status-final_v2-success)](#v2-results)\n\n**最后冻结版本:v2.0.1(2026-06)** — 数据、评分、图表、报告及 judge 裁决均已定稿,后续仅修严重错误。\n\n> 面向中文长上下文场景的 **V2 基准仓库**。这一版把单格重复数从 3 提高到 10,并引入 `style_aligned`、`numeric_confusable`、`multi_key` 三类更难的中文 NIAH 变体。\n>\n> 当前仓库包含 **完整 V2 结果层**:3 个模型、5 个上下文长度、7 个深度点、10 次重复,共 **1050 条 NIAH 原始调用 + 96 条 multi_hop 结果(32 条/模型)**,附带 `results/v2/` 下的汇总表、taxonomy CSV 与报告图表。\n>\n> **主口径说明(Scheme A)**:报告中的模型能力指标默认基于 `eval_valid` 有效样本,排除 `content_filter`(平台内容审核拦截)与 `infra_api_failed`(余额耗尽、限流等基础设施失败)。这些失败不应计入模型检索能力。\n\nV1 基线仓库见:[llm-long-context-eval-zh](https://github.com/melody-ling-L/llm-long-context-eval-zh)\n\n---\n\n## GitHub 直接查看\n\n- GitHub 渲染报告:`results/v2/report/04_report_v2.executed.ipynb`\n- 源 notebook:`notebooks/v2/04_report_v2.ipynb`\n- HTML 下载版:[v2.0.0 HTML 报告](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/releases/tag/v2.0.0)\n- **主口径 NIAH 汇总**:`results/v2/processed/summary_by_model_niah_valid_only.csv`\n- 调用状态诊断:`results/v2/processed/summary_call_status.csv`\n- badcase taxonomy 汇总:`results/v2/processed/summary_by_badcase_taxonomy.csv`\n- 任务级汇总:`results/v2/processed/summary_by_model_task.csv`\n\n---\n\n## V2 Results\n\n| DeepSeek | Kimi | Qwen |\n|---|---|---|\n| ![DeepSeek V2 Heatmap](results/v2/figures/niah_heatmap_deepseek.png) | ![Kimi V2 Heatmap](results/v2/figures/niah_heatmap_kimi.png) | ![Qwen V2 Heatmap](results/v2/figures/niah_heatmap_qwen.png) |\n\n| Accuracy by Length with 95% CI | Efficiency Tradeoff |\n|---|---|\n| ![Accuracy by Length with 95% CI](results/v2/figures/accuracy_by_length_with_ci.png) | ![Efficiency Tradeoff](results/v2/figures/efficiency_tradeoff.png) |\n\n### NIAH Headline Metrics(eval_valid 主口径)\n\n| 模型 | eval_valid / 350 | EM | Contains | 95% CI | 平均延迟 | 平均输出 tokens | 单位命中成本 |\n|------|:--:|:--:|:--------:|:------:|:-------:|:-------------:|:------------:|\n| DeepSeek | 328 | 65.2% | **96.6%** | 94.1% - 98.1% | **0.78s** | 5.1 | **¥0.0057 / hit** |\n| Kimi | 319 | **89.7%** | 94.4% | 91.3% - 96.4% | 2.25s | 6.8 | ¥0.6388 / hit |\n| Qwen | 319 | 87.8% | 89.3% | 85.5% - 92.3% | 7.83s | 6.1 | ¥0.0397 / hit |\n\n> 若直接对全部 350 条原始行取平均,Kimi Contains 会虚降至 **86.0%**(含 31 条 `content_filter` 与早期 32K 基础设施失败)。**请勿用该数字作为 headline。**\n\n### 调用状态诊断\n\n| 模型 | 总调用 | eval_valid | content_filter | infra_api_failed |\n|------|:--:|:--:|:--:|:--:|\n| DeepSeek | 350 | 328 (93.7%) | 0 | 22 (6.3%) |\n| Kimi | 350 | 319 (91.1%) | **31 (8.9%)** | 0 |\n| Qwen | 350 | 319 (91.1%) | 0 | 31 (8.9%) |\n\n- **Kimi `content_filter`**:Moonshot 平台对含政治/经济敏感百科 haystack 的 31 条样本触发「高风险内容」拦截,与模型检索能力无关。\n- **DeepSeek / Qwen `infra_api_failed`**:主要为部分长度点的 API 超时或调用失败(`prompt_tokens=0`),已在 `eval_valid` 口径中排除。\n\n### Variant Breakdown(eval_valid)\n\n| 模型 | style_aligned | numeric_confusable | multi_key |\n|------|:--:|:--:|:--:|\n| DeepSeek | **100.0%** | 89.9% | **100.0%** |\n| Kimi | **100.0%** | 82.9% | **100.0%** |\n| Qwen | **100.0%** | **67.6%** | **100.0%** |\n\n### 按上下文长度(eval_valid Contains)\n\n| 模型 | 2K | 4K | 8K | 16K | 32K |\n|------|:--:|:--:|:--:|:--:|:--:|\n| DeepSeek | 97.1% | 98.4% | 95.1% | 93.8% | 98.6% |\n| Kimi | 90.0% | 90.5% | 95.1% | 96.9% | **100.0%** |\n| Qwen | 87.1% | 87.3% | 86.9% | 90.6% | 95.1% |\n\n### Key Findings\n\n- **DeepSeek 在 V2 eval_valid 口径下拿到最高 Contains(96.6%)和最低单位命中成本(¥0.0057 / hit)。** 综合效率仍是三者中最强。\n- **Kimi 32K 并非模型能力塌陷。** 早期 README 中「32K 0% / 稳定失效」来自 Moonshot **余额耗尽**(`prompt_tokens=0`)与后续 **content_filter** 叠加;在 61 条 eval_valid 32K 样本上,Kimi Contains 为 **100.0%**。\n- **`numeric_confusable` 仍是平均最难的变体。** Qwen 仅 67.6%,Kimi 82.9%,DeepSeek 89.9%;相近数字 / 字符串干扰比 style 对齐或多 key 干扰更稳定地击穿检索表现。\n- **badcase taxonomy(eval_valid)显示主要短板是答案格式而非纯召回失败。** 「输出冗余但包含正确答案」占 **66.1%**,「被相似数字干扰」占 **33.9%**;DeepSeek 的主要问题更像抽取格式与回答收敛,而不是找不到 needle。\n- **16K / 32K 在 V2 中不再表现为「所有模型统一退化」。** DeepSeek 与 Kimi 在 32K 均保持高位,Qwen 在 16K / 32K 也回升;更高重复数把「模型差异」和「基础设施噪声」都放大了出来。\n- **评测工程教训:必须持久化 `error` 字段并区分失败类型。** 没有 `content_filter` / `infra_api_failed` 分层,很容易把计费失败误读成「长上下文失忆」。\n\n### Badcase Taxonomy Headline(eval_valid)\n\n| 错误类型 | 占全部 badcase 比例 | 首页结论 |\n|----------|:--:|---------|\n| 输出冗余但包含正确答案 | **66.1%** | DeepSeek 的主要短板更像抽取格式与回答收敛问题,而不是纯召回失败。 |\n| 被相似数字干扰 | **33.9%** | 相近数字、比例、时间和单位混排是当前最值得补样本的干扰模式。 |\n\n更细的按模型拆分见:`results/v2/processed/summary_by_model_badcase_taxonomy.csv`\n\n### multi-hop Pilot\n\n| 模型 | N | EM | Contains | 95% CI | 说明 |\n|------|:--:|:--:|:--------:|:------:|------|\n| DeepSeek | 32 | 43.8% | 71.9% | 54.6% - 84.4% | 2-hop 81.5%,3-hop 20.0%;命中成本最低。 |\n| Qwen | 32 | 68.8% | 75.0% | 57.9% - 86.7% | 2-hop 81.5%,3-hop 40.0%;EM 更稳但成本更高。 |\n| Kimi | 32 | 50.0% | 62.5% | 45.3% - 77.1% | 2-hop 74.1%,**3-hop 0.0%**;主要失误集中在算术与时间推理。 |\n\n当前 multi_hop 已覆盖 **3 个模型各 32 条**(事实分散嵌入 ~8000 字符长文)。其中 2 个 `judge` 型样本的 6 个模型回答已通过独立人工裁决表复核;EM 仍保留严格字面口径,Contains 使用裁决结果。按跳数拆分见:`results/v2/processed/summary_multihop_by_hops.csv`\n\n### Actionable Assets\n\n- 主口径 NIAH 汇总:`results/v2/processed/summary_by_model_niah_valid_only.csv`\n- 调用状态:`results/v2/processed/summary_call_status.csv`\n- badcase 总体汇总:`results/v2/processed/summary_by_badcase_taxonomy.csv`\n- badcase 按模型汇总:`results/v2/processed/summary_by_model_badcase_taxonomy.csv`\n- 代表性失败样本:`results/v2/processed/badcase_examples.csv`\n- 真实任务子集扩充路线:`results/v2/processed/real_task_subset_roadmap.csv`\n\n---\n\n## Methodology\n\nV2 相比 V1 的关键变化:\n\n1. 将单格重复数从 3 提高到 10,使 `context_length × depth_pct` 的统计更稳。\n2. 引入三类更难的中文 NIAH 变体:\n - `style_aligned`:needle 与上下文文风更接近。\n - `numeric_confusable`:存在多个相近数字或近义指标,不能靠关键词秒取。\n - `multi_key`:同时插入 target 和 distractor,需要做更精细的定位。\n3. 增加 V2 效率指标:`response_chars`、`completion_tokens`、`row_cost_cny`、`cost_per_contains_hit_cny`、`contains_per_1k_output_tokens`。\n4. 增加 **Scheme A 调用状态分层**:`eval_valid` / `content_filter` / `infra_api_failed`,模型能力指标默认只看 `eval_valid`。\n5. 所有 V2 数据、结果和 notebook 都与 V1 隔离,避免覆盖既有结论。\n\n本轮完整 V2 NIAH 规模为:\n\n- 3 个模型:DeepSeek / Kimi / Qwen\n- 5 个长度:2K / 4K / 8K / 16K / 32K\n- 7 个深度点:0 / 10 / 25 / 50 / 75 / 90 / 100\n- 10 次重复\n- 合计 350 条样本 / 模型,1050 条 NIAH 原始调用\n\n---\n\n## Repository Layout\n\n```\nllm-long-context-eval-zh-V2/\n├── configs/\n│ ├── eval_config.yaml\n│ └── eval_config_v2.yaml\n├── data/\n│ ├── needles/\n│ │ ├── multihop_qa.json\n│ │ ├── multihop_qa_v2.json\n│ │ └── v2_needle_bank.json\n│ ├── processed/\n│ └── processed/v2/\n├── docs/\n│ ├── eval_design.md\n│ └── eval_design_v2.md\n├── notebooks/\n│ ├── 01_data_preparation.ipynb\n│ ├── 02_eval_runner.ipynb\n│ ├── 03_analysis_visualization.ipynb\n│ ├── 04_report.ipynb\n│ └── v2/\n├── results/\n│ ├── figures/\n│ ├── processed/\n│ ├── raw/\n│ └── v2/\n│ ├── figures/\n│ ├── processed/\n│ └── raw/\n└── src/\n ├── data_prep.py\n ├── data_prep_v2.py\n ├── eval_runner.py\n ├── eval_runner_v2.py\n ├── metrics.py\n ├── metrics_v2.py\n └── visualize.py\n```\n\n---\n\n## Reproduce V2\n\n### 1. Install\n\n```bash\npip install -r requirements.txt\n```\n\n### 2. Configure API keys\n\n```bash\ncp .env.example .env\n# fill in DEEPSEEK_API_KEY / MOONSHOT_API_KEY / DASHSCOPE_API_KEY\n```\n\n> **Kimi NIAH 必须使用 `MOONSHOT_API_KEY`(`api.moonshot.cn`)。** `KIMI_API_KEY` 仅适用于 Kimi Coding Agent,无法调用 `moonshot-v1-128k`。\n\n### 3. Generate V2 datasets\n\n```bash\npython src/data_prep_v2.py\n```\n\n或直接运行:\n\n```\nnotebooks/v2/01_data_preparation_v2.ipynb\n```\n\n### 4. Run V2 evaluation\n\n```\nnotebooks/v2/02_eval_runner_v2.ipynb\n```\n\n### 5. Run V2 analysis and report\n\n```\nnotebooks/v2/03_analysis_visualization_v2.ipynb\nnotebooks/v2/04_report_v2.ipynb\n```\n\n或一键重评分 + 出图(主口径 eval_valid):\n\n```bash\npython scripts/rerun_kimi_v2.py --analyze-only\npython scripts/regenerate_v2_figures.py\n```\n\nV2 关键产物路径:\n\n- `results/v2/raw/raw_results.csv`\n- `results/v2/processed/scored_results.csv`\n- `results/v2/processed/summary_by_model_niah_valid_only.csv` ← **主口径 headline**\n- `results/v2/processed/summary_call_status.csv`\n- `results/v2/processed/summary_by_model_variant.csv`\n- `results/v2/processed/summary_by_model_length.csv`\n- `results/v2/processed/summary_by_model_task.csv`\n- `results/v2/processed/summary_by_model_badcase_taxonomy.csv`\n- `results/v2/processed/summary_by_badcase_taxonomy.csv`\n- `results/v2/processed/badcase_examples.csv`\n- `results/v2/processed/real_task_subset_roadmap.csv`\n- `results/v2/figures/*.png`\n\n---\n\n## Current Limits\n\n- `multi_hop` 已覆盖 3 个模型各 32 条(96 条合计)。2 个 `judge` 样本已人工复核并进入 Contains;3-hop 仍是共同短板:Kimi 为 **0.0%**,DeepSeek 20.0%,Qwen 40.0%。\n- Kimi 有 31 条 `content_filter` 样本无法通过重试恢复,需要在数据层替换敏感 haystack 或接受「平台审核盲区」作为独立统计维度。\n- DeepSeek / Qwen 各有约 31 条基础设施失败样本,长上下文评测应始终保留 `error` + `prompt_tokens` 字段以便事后诊断。\n- badcase taxonomy 已经能指导下一轮数据策略,但规则仍是启发式首版,后续值得补更细的抽错值 / 单位混淆 / 时间推理子类。\n\n---\n\n## References\n\n- [Lost in the Middle (Liu et al., 2023)](https://arxiv.org/abs/2307.03172)\n- [RULER: What's the Real Context Window of Your LLM? (Hsieh et al., 2024)](https://arxiv.org/abs/2404.06654)\n- [Needle in a Haystack (Kamradt, 2023)](https://github.com/gkamradt/LLMTest_NeedleInAHaystack)\n"}, "40100601f302b34f247eab9d87c89e760699a54b": {"t": 1785772152.906674, "n": 9427, "h": "0aa0430a3f2b2dae", "c": "# LLM 长上下文能力评测框架 V2\n\n[![Lint](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/actions/workflows/lint.yml/badge.svg)](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/actions/workflows/lint.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![V2 Samples](https://img.shields.io/badge/NIAH-1050-blue)](#v2-results)\n[![multi_hop](https://img.shields.io/badge/multi__hop-96-orange)](#multi-hop-pilot)\n[![Pilot Models](https://img.shields.io/badge/models-3-green)](#v2-results)\n[![Repeats](https://img.shields.io/badge/repeats-10-purple)](#methodology)\n[![Status](https://img.shields.io/badge/status-final_v2-success)](#v2-results)\n\n**最后冻结版本:v2.0.1(2026-06)** — 数据、评分、图表、报告及 judge 裁决均已定稿,后续仅修严重错误。\n\n> 面向中文长上下文场景的 **V2 基准仓库**。这一版把单格重复数从 3 提高到 10,并引入 `style_aligned`、`numeric_confusable`、`multi_key` 三类更难的中文 NIAH 变体。\n>\n> 当前仓库包含 **完整 V2 结果层**:3 个模型、5 个上下文长度、7 个深度点、10 次重复,共 **1050 条 NIAH 原始调用 + 96 条 multi_hop 结果(32 条/模型)**,附带 `results/v2/` 下的汇总表、taxonomy CSV 与报告图表。\n>\n> **主口径说明(Scheme A)**:报告中的模型能力指标默认基于 `eval_valid` 有效样本,排除 `content_filter`(平台内容审核拦截)与 `infra_api_failed`(余额耗尽、限流等基础设施失败)。这些失败不应计入模型检索能力。\n\nV1 基线仓库见:[llm-long-context-eval-zh](https://github.com/melody-ling-L/llm-long-context-eval-zh)\n\n---\n\n## GitHub 直接查看\n\n- GitHub 渲染报告:`results/v2/report/04_report_v2.executed.ipynb`\n- 源 notebook:`notebooks/v2/04_report_v2.ipynb`\n- HTML 下载版:[v2.0.0 HTML 报告](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/releases/tag/v2.0.0)\n- **主口径 NIAH 汇总**:`results/v2/processed/summary_by_model_niah_valid_only.csv`\n- 调用状态诊断:`results/v2/processed/summary_call_status.csv`\n- badcase taxonomy 汇总:`results/v2/processed/summary_by_badcase_taxonomy.csv`\n- 任务级汇总:`results/v2/processed/summary_by_model_task.csv`\n\n---\n\n## V2 Results\n\n| DeepSeek | Kimi | Qwen |\n|---|---|---|\n| ![DeepSeek V2 Heatmap](results/v2/figures/niah_heatmap_deepseek.png) | ![Kimi V2 Heatmap](results/v2/figures/niah_heatmap_kimi.png) | ![Qwen V2 Heatmap](results/v2/figures/niah_heatmap_qwen.png) |\n\n| Accuracy by Length with 95% CI | Efficiency Tradeoff |\n|---|---|\n| ![Accuracy by Length with 95% CI](results/v2/figures/accuracy_by_length_with_ci.png) | ![Efficiency Tradeoff](results/v2/figures/efficiency_tradeoff.png) |\n\n### NIAH Headline Metrics(eval_valid 主口径)\n\n| 模型 | eval_valid / 350 | EM | Contains | 95% CI | 平均延迟 | 平均输出 tokens | 单位命中成本 |\n|------|:--:|:--:|:--------:|:------:|:-------:|:-------------:|:------------:|\n| DeepSeek | 328 | 65.2% | **96.6%** | 94.1% - 98.1% | **0.78s** | 5.1 | **¥0.0057 / hit** |\n| Kimi | 319 | **89.7%** | 94.4% | 91.3% - 96.4% | 2.25s | 6.8 | ¥0.6388 / hit |\n| Qwen | 319 | 87.8% | 89.3% | 85.5% - 92.3% | 7.83s | 6.1 | ¥0.0397 / hit |\n\n> 若直接对全部 350 条原始行取平均,Kimi Contains 会虚降至 **86.0%**(含 31 条 `content_filter` 与早期 32K 基础设施失败)。**请勿用该数字作为 headline。**\n\n### 调用状态诊断\n\n| 模型 | 总调用 | eval_valid | content_filter | infra_api_failed |\n|------|:--:|:--:|:--:|:--:|\n| DeepSeek | 350 | 328 (93.7%) | 0 | 22 (6.3%) |\n| Kimi | 350 | 319 (91.1%) | **31 (8.9%)** | 0 |\n| Qwen | 350 | 319 (91.1%) | 0 | 31 (8.9%) |\n\n- **Kimi `content_filter`**:Moonshot 平台对含政治/经济敏感百科 haystack 的 31 条样本触发「高风险内容」拦截,与模型检索能力无关。\n- **DeepSeek / Qwen `infra_api_failed`**:主要为部分长度点的 API 超时或调用失败(`prompt_tokens=0`),已在 `eval_valid` 口径中排除。\n\n### Variant Breakdown(eval_valid)\n\n| 模型 | style_aligned | numeric_confusable | multi_key |\n|------|:--:|:--:|:--:|\n| DeepSeek | **100.0%** | 89.9% | **100.0%** |\n| Kimi | **100.0%** | 82.9% | **100.0%** |\n| Qwen | **100.0%** | **67.6%** | **100.0%** |\n\n### 按上下文长度(eval_valid Contains)\n\n| 模型 | 2K | 4K | 8K | 16K | 32K |\n|------|:--:|:--:|:--:|:--:|:--:|\n| DeepSeek | 97.1% | 98.4% | 95.1% | 93.8% | 98.6% |\n| Kimi | 90.0% | 90.5% | 95.1% | 96.9% | **100.0%** |\n| Qwen | 87.1% | 87.3% | 86.9% | 90.6% | 95.1% |\n\n### Key Findings\n\n- **DeepSeek 在 V2 eval_valid 口径下拿到最高 Contains(96.6%)和最低单位命中成本(¥0.0057 / hit)。** 综合效率仍是三者中最强。\n- **Kimi 32K 并非模型能力塌陷。** 早期 README 中「32K 0% / 稳定失效」来自 Moonshot **余额耗尽**(`prompt_tokens=0`)与后续 **content_filter** 叠加;在 61 条 eval_valid 32K 样本上,Kimi Contains 为 **100.0%**。\n- **`numeric_confusable` 仍是平均最难的变体。** Qwen 仅 67.6%,Kimi 82.9%,DeepSeek 89.9%;相近数字 / 字符串干扰比 style 对齐或多 key 干扰更稳定地击穿检索表现。\n- **badcase taxonomy(eval_valid)显示主要短板是答案格式而非纯召回失败。** 「输出冗余但包含正确答案」占 **66.1%**,「被相似数字干扰」占 **33.9%**;DeepSeek 的主要问题更像抽取格式与回答收敛,而不是找不到 needle。\n- **16K / 32K 在 V2 中不再表现为「所有模型统一退化」。** DeepSeek 与 Kimi 在 32K 均保持高位,Qwen 在 16K / 32K 也回升;更高重复数把「模型差异」和「基础设施噪声」都放大了出来。\n- **评测工程教训:必须持久化 `error` 字段并区分失败类型。** 没有 `content_filter` / `infra_api_failed` 分层,很容易把计费失败误读成「长上下文失忆」。\n\n### Badcase Taxonomy Headline(eval_valid)\n\n| 错误类型 | 占全部 badcase 比例 | 首页结论 |\n|----------|:--:|---------|\n| 输出冗余但包含正确答案 | **66.1%** | DeepSeek 的主要短板更像抽取格式与回答收敛问题,而不是纯召回失败。 |\n| 被相似数字干扰 | **33.9%** | 相近数字、比例、时间和单位混排是当前最值得补样本的干扰模式。 |\n\n更细的按模型拆分见:`results/v2/processed/summary_by_model_badcase_taxonomy.csv`\n\n### multi-hop Pilot\n\n| 模型 | N | EM | Contains | 95% CI | 说明 |\n|------|:--:|:--:|:--------:|:------:|------|\n| DeepSeek | 32 | 43.8% | 71.9% | 54.6% - 84.4% | 2-hop 81.5%,3-hop 20.0%;命中成本最低。 |\n| Qwen | 32 | 68.8% | 75.0% | 57.9% - 86.7% | 2-hop 81.5%,3-hop 40.0%;EM 更稳但成本更高。 |\n| Kimi | 32 | 50.0% | 62.5% | 45.3% - 77.1% | 2-hop 74.1%,**3-hop 0.0%**;主要失误集中在算术与时间推理。 |\n\n当前 multi_hop 已覆盖 **3 个模型各 32 条**(事实分散嵌入 ~8000 字符长文)。其中 2 个 `judge` 型样本的 6 个模型回答已通过独立人工裁决表复核;EM 仍保留严格字面口径,Contains 使用裁决结果。按跳数拆分见:`results/v2/processed/summary_multihop_by_hops.csv`\n\n### Actionable Assets\n\n- 主口径 NIAH 汇总:`results/v2/processed/summary_by_model_niah_valid_only.csv`\n- 调用状态:`results/v2/processed/summary_call_status.csv`\n- badcase 总体汇总:`results/v2/processed/summary_by_badcase_taxonomy.csv`\n- badcase 按模型汇总:`results/v2/processed/summary_by_model_badcase_taxonomy.csv`\n- 代表性失败样本:`results/v2/processed/badcase_examples.csv`\n- 真实任务子集扩充路线:`results/v2/processed/real_task_subset_roadmap.csv`\n\n---\n\n## Methodology\n\nV2 相比 V1 的关键变化:\n\n1. 将单格重复数从 3 提高到 10,使 `context_length × depth_pct` 的统计更稳。\n2. 引入三类更难的中文 NIAH 变体:\n - `style_aligned`:needle 与上下文文风更接近。\n - `numeric_confusable`:存在多个相近数字或近义指标,不能靠关键词秒取。\n - `multi_key`:同时插入 target 和 distractor,需要做更精细的定位。\n3. 增加 V2 效率指标:`response_chars`、`completion_tokens`、`row_cost_cny`、`cost_per_contains_hit_cny`、`contains_per_1k_output_tokens`。\n4. 增加 **Scheme A 调用状态分层**:`eval_valid` / `content_filter` / `infra_api_failed`,模型能力指标默认只看 `eval_valid`。\n5. 所有 V2 数据、结果和 notebook 都与 V1 隔离,避免覆盖既有结论。\n\n本轮完整 V2 NIAH 规模为:\n\n- 3 个模型:DeepSeek / Kimi / Qwen\n- 5 个长度:2K / 4K / 8K / 16K / 32K\n- 7 个深度点:0 / 10 / 25 / 50 / 75 / 90 / 100\n- 10 次重复\n- 合计 350 条样本 / 模型,1050 条 NIAH 原始调用\n\n---\n\n## Repository Layout\n\n```\nllm-long-context-eval-zh-V2/\n├── configs/\n│ ├── eval_config.yaml\n│ └── eval_config_v2.yaml\n├── data/\n│ ├── needles/\n│ │ ├── multihop_qa.json\n│ │ ├── multihop_qa_v2.json\n│ │ └── v2_needle_bank.json\n│ ├── processed/\n│ └── processed/v2/\n├── docs/\n│ ├── eval_design.md\n│ └── eval_design_v2.md\n├── notebooks/\n│ ├── 01_data_preparation.ipynb\n│ ├── 02_eval_runner.ipynb\n│ ├── 03_analysis_visualization.ipynb\n│ ├── 04_report.ipynb\n│ └── v2/\n├── results/\n│ ├── figures/\n│ ├── processed/\n│ ├── raw/\n│ └── v2/\n│ ├── figures/\n│ ├── processed/\n│ └── raw/\n└── src/\n ├── data_prep.py\n ├── data_prep_v2.py\n ├── eval_runner.py\n ├── eval_runner_v2.py\n ├── metrics.py\n ├── metrics_v2.py\n └── visualize.py\n```\n\n---\n\n## Reproduce V2\n\n### 1. Install\n\n```bash\npip install -r requirements.txt\n```\n\n### 2. Configure API keys\n\n```bash\ncp .env.example .env\n# fill in DEEPSEEK_API_KEY / MOONSHOT_API_KEY / DASHSCOPE_API_KEY\n```\n\n> **Kimi NIAH 必须使用 `MOONSHOT_API_KEY`(`api.moonshot.cn`)。** `KIMI_API_KEY` 仅适用于 Kimi Coding Agent,无法调用 `moonshot-v1-128k`。\n\n### 3. Generate V2 datasets\n\n```bash\npython src/data_prep_v2.py\n```\n\n或直接运行:\n\n```\nnotebooks/v2/01_data_preparation_v2.ipynb\n```\n\n### 4. Run V2 evaluation\n\n```\nnotebooks/v2/02_eval_runner_v2.ipynb\n```\n\n### 5. Run V2 analysis and report\n\n```\nnotebooks/v2/03_analysis_visualization_v2.ipynb\nnotebooks/v2/04_report_v2.ipynb\n```\n\n或一键重评分 + 出图(主口径 eval_valid):\n\n```bash\npython scripts/rerun_kimi_v2.py --analyze-only\npython scripts/regenerate_v2_figures.py\n```\n\nV2 关键产物路径:\n\n- `results/v2/raw/raw_results.csv`\n- `results/v2/processed/scored_results.csv`\n- `results/v2/processed/summary_by_model_niah_valid_only.csv` ← **主口径 headline**\n- `results/v2/processed/summary_call_status.csv`\n- `results/v2/processed/summary_by_model_variant.csv`\n- `results/v2/processed/summary_by_model_length.csv`\n- `results/v2/processed/summary_by_model_task.csv`\n- `results/v2/processed/summary_by_model_badcase_taxonomy.csv`\n- `results/v2/processed/summary_by_badcase_taxonomy.csv`\n- `results/v2/processed/badcase_examples.csv`\n- `results/v2/processed/real_task_subset_roadmap.csv`\n- `results/v2/figures/*.png`\n\n---\n\n## Current Limits\n\n- `multi_hop` 已覆盖 3 个模型各 32 条(96 条合计)。2 个 `judge` 样本已人工复核并进入 Contains;3-hop 仍是共同短板:Kimi 为 **0.0%**,DeepSeek 20.0%,Qwen 40.0%。\n- Kimi 有 31 条 `content_filter` 样本无法通过重试恢复,需要在数据层替换敏感 haystack 或接受「平台审核盲区」作为独立统计维度。\n- DeepSeek / Qwen 各有约 31 条基础设施失败样本,长上下文评测应始终保留 `error` + `prompt_tokens` 字段以便事后诊断。\n- badcase taxonomy 已经能指导下一轮数据策略,但规则仍是启发式首版,后续值得补更细的抽错值 / 单位混淆 / 时间推理子类。\n\n---\n\n## References\n\n- [Lost in the Middle (Liu et al., 2023)](https://arxiv.org/abs/2307.03172)\n- [RULER: What's the Real Context Window of Your LLM? (Hsieh et al., 2024)](https://arxiv.org/abs/2404.06654)\n- [Needle in a Haystack (Kamradt, 2023)](https://github.com/gkamradt/LLMTest_NeedleInAHaystack)\n"}, "902efd90c81c74d0627bab86fb604c56b1629521": {"t": 1785772154.2362702, "n": 9361, "h": "58624d9348831518", "c": "# LLM 长上下文能力评测框架 V2\n\n[![Lint](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/actions/workflows/lint.yml/badge.svg)](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/actions/workflows/lint.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![V2 Samples](https://img.shields.io/badge/NIAH-1050-blue)](#v2-results)\n[![multi_hop](https://img.shields.io/badge/multi__hop-96-orange)](#multi-hop-pilot)\n[![Pilot Models](https://img.shields.io/badge/models-3-green)](#v2-results)\n[![Repeats](https://img.shields.io/badge/repeats-10-purple)](#methodology)\n[![Status](https://img.shields.io/badge/status-final_v2-success)](#v2-results)\n\n> 面向中文长上下文场景的 **V2 基准仓库**。这一版把单格重复数从 3 提高到 10,并引入 `style_aligned`、`numeric_confusable`、`multi_key` 三类更难的中文 NIAH 变体。\n>\n> 当前仓库包含 **完整 V2 结果层**:3 个模型、5 个上下文长度、7 个深度点、10 次重复,共 **1050 条 NIAH 原始调用 + 96 条 multi_hop 结果(32 条/模型)**,附带 `results/v2/` 下的汇总表、taxonomy CSV 与报告图表。\n>\n> **主口径说明(Scheme A)**:报告中的模型能力指标默认基于 `eval_valid` 有效样本,排除 `content_filter`(平台内容审核拦截)与 `infra_api_failed`(余额耗尽、限流等基础设施失败)。这些失败不应计入模型检索能力。\n\nV1 基线仓库见:[llm-long-context-eval-zh](https://github.com/melody-ling-L/llm-long-context-eval-zh)\n\n---\n\n## GitHub 直接查看\n\n- GitHub 渲染报告:`results/v2/report/04_report_v2.executed.ipynb`\n- 源 notebook:`notebooks/v2/04_report_v2.ipynb`\n- HTML 下载版:[v2.0.0 HTML 报告](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/releases/tag/v2.0.0)\n- **主口径 NIAH 汇总**:`results/v2/processed/summary_by_model_niah_valid_only.csv`\n- 调用状态诊断:`results/v2/processed/summary_call_status.csv`\n- badcase taxonomy 汇总:`results/v2/processed/summary_by_badcase_taxonomy.csv`\n- 任务级汇总:`results/v2/processed/summary_by_model_task.csv`\n\n---\n\n## V2 Results\n\n| DeepSeek | Kimi | Qwen |\n|---|---|---|\n| ![DeepSeek V2 Heatmap](results/v2/figures/niah_heatmap_deepseek.png) | ![Kimi V2 Heatmap](results/v2/figures/niah_heatmap_kimi.png) | ![Qwen V2 Heatmap](results/v2/figures/niah_heatmap_qwen.png) |\n\n| Accuracy by Length with 95% CI | Efficiency Tradeoff |\n|---|---|\n| ![Accuracy by Length with 95% CI](results/v2/figures/accuracy_by_length_with_ci.png) | ![Efficiency Tradeoff](results/v2/figures/efficiency_tradeoff.png) |\n\n### NIAH Headline Metrics(eval_valid 主口径)\n\n| 模型 | eval_valid / 350 | EM | Contains | 95% CI | 平均延迟 | 平均输出 tokens | 单位命中成本 |\n|------|:--:|:--:|:--------:|:------:|:-------:|:-------------:|:------------:|\n| DeepSeek | 328 | 65.2% | **96.6%** | 94.1% - 98.1% | **0.78s** | 5.1 | **¥0.0057 / hit** |\n| Kimi | 319 | **89.7%** | 94.4% | 91.3% - 96.4% | 2.25s | 6.8 | ¥0.6388 / hit |\n| Qwen | 319 | 87.8% | 89.3% | 85.5% - 92.3% | 7.83s | 6.1 | ¥0.0397 / hit |\n\n> 若直接对全部 350 条原始行取平均,Kimi Contains 会虚降至 **86.0%**(含 31 条 `content_filter` 与早期 32K 基础设施失败)。**请勿用该数字作为 headline。**\n\n### 调用状态诊断\n\n| 模型 | 总调用 | eval_valid | content_filter | infra_api_failed |\n|------|:--:|:--:|:--:|:--:|\n| DeepSeek | 350 | 328 (93.7%) | 0 | 22 (6.3%) |\n| Kimi | 350 | 319 (91.1%) | **31 (8.9%)** | 0 |\n| Qwen | 350 | 319 (91.1%) | 0 | 31 (8.9%) |\n\n- **Kimi `content_filter`**:Moonshot 平台对含政治/经济敏感百科 haystack 的 31 条样本触发「高风险内容」拦截,与模型检索能力无关。\n- **DeepSeek / Qwen `infra_api_failed`**:主要为部分长度点的 API 超时或调用失败(`prompt_tokens=0`),已在 `eval_valid` 口径中排除。\n\n### Variant Breakdown(eval_valid)\n\n| 模型 | style_aligned | numeric_confusable | multi_key |\n|------|:--:|:--:|:--:|\n| DeepSeek | **100.0%** | 89.9% | **100.0%** |\n| Kimi | **100.0%** | 82.9% | **100.0%** |\n| Qwen | **100.0%** | **67.6%** | **100.0%** |\n\n### 按上下文长度(eval_valid Contains)\n\n| 模型 | 2K | 4K | 8K | 16K | 32K |\n|------|:--:|:--:|:--:|:--:|:--:|\n| DeepSeek | 97.1% | 98.4% | 95.1% | 93.8% | 98.6% |\n| Kimi | 90.0% | 90.5% | 95.1% | 96.9% | **100.0%** |\n| Qwen | 87.1% | 87.3% | 86.9% | 90.6% | 95.1% |\n\n### Key Findings\n\n- **DeepSeek 在 V2 eval_valid 口径下拿到最高 Contains(96.6%)和最低单位命中成本(¥0.0057 / hit)。** 综合效率仍是三者中最强。\n- **Kimi 32K 并非模型能力塌陷。** 早期 README 中「32K 0% / 稳定失效」来自 Moonshot **余额耗尽**(`prompt_tokens=0`)与后续 **content_filter** 叠加;在 61 条 eval_valid 32K 样本上,Kimi Contains 为 **100.0%**。\n- **`numeric_confusable` 仍是平均最难的变体。** Qwen 仅 67.6%,Kimi 82.9%,DeepSeek 89.9%;相近数字 / 字符串干扰比 style 对齐或多 key 干扰更稳定地击穿检索表现。\n- **badcase taxonomy(eval_valid)显示主要短板是答案格式而非纯召回失败。** 「输出冗余但包含正确答案」占 **66.1%**,「被相似数字干扰」占 **33.9%**;DeepSeek 的主要问题更像抽取格式与回答收敛,而不是找不到 needle。\n- **16K / 32K 在 V2 中不再表现为「所有模型统一退化」。** DeepSeek 与 Kimi 在 32K 均保持高位,Qwen 在 16K / 32K 也回升;更高重复数把「模型差异」和「基础设施噪声」都放大了出来。\n- **评测工程教训:必须持久化 `error` 字段并区分失败类型。** 没有 `content_filter` / `infra_api_failed` 分层,很容易把计费失败误读成「长上下文失忆」。\n\n### Badcase Taxonomy Headline(eval_valid)\n\n| 错误类型 | 占全部 badcase 比例 | 首页结论 |\n|----------|:--:|---------|\n| 输出冗余但包含正确答案 | **66.1%** | DeepSeek 的主要短板更像抽取格式与回答收敛问题,而不是纯召回失败。 |\n| 被相似数字干扰 | **33.9%** | 相近数字、比例、时间和单位混排是当前最值得补样本的干扰模式。 |\n\n更细的按模型拆分见:`results/v2/processed/summary_by_model_badcase_taxonomy.csv`\n\n### multi-hop Pilot\n\n| 模型 | N | EM | Contains | 95% CI | 说明 |\n|------|:--:|:--:|:--------:|:------:|------|\n| DeepSeek | 32 | 43.8% | 71.9% | 54.6% - 84.4% | 2-hop 81.5%,3-hop 20.0%;命中成本最低。 |\n| Qwen | 32 | 68.8% | 75.0% | 57.9% - 86.7% | 2-hop 81.5%,3-hop 40.0%;EM 更稳但成本更高。 |\n| Kimi | 32 | 50.0% | 62.5% | 45.3% - 77.1% | 2-hop 74.1%,**3-hop 0.0%**;主要失误集中在算术与时间推理。 |\n\n当前 multi_hop 已覆盖 **3 个模型各 32 条**(事实分散嵌入 ~8000 字符长文)。其中 2 个 `judge` 型样本的 6 个模型回答已通过独立人工裁决表复核;EM 仍保留严格字面口径,Contains 使用裁决结果。按跳数拆分见:`results/v2/processed/summary_multihop_by_hops.csv`\n\n### Actionable Assets\n\n- 主口径 NIAH 汇总:`results/v2/processed/summary_by_model_niah_valid_only.csv`\n- 调用状态:`results/v2/processed/summary_call_status.csv`\n- badcase 总体汇总:`results/v2/processed/summary_by_badcase_taxonomy.csv`\n- badcase 按模型汇总:`results/v2/processed/summary_by_model_badcase_taxonomy.csv`\n- 代表性失败样本:`results/v2/processed/badcase_examples.csv`\n- 真实任务子集扩充路线:`results/v2/processed/real_task_subset_roadmap.csv`\n\n---\n\n## Methodology\n\nV2 相比 V1 的关键变化:\n\n1. 将单格重复数从 3 提高到 10,使 `context_length × depth_pct` 的统计更稳。\n2. 引入三类更难的中文 NIAH 变体:\n - `style_aligned`:needle 与上下文文风更接近。\n - `numeric_confusable`:存在多个相近数字或近义指标,不能靠关键词秒取。\n - `multi_key`:同时插入 target 和 distractor,需要做更精细的定位。\n3. 增加 V2 效率指标:`response_chars`、`completion_tokens`、`row_cost_cny`、`cost_per_contains_hit_cny`、`contains_per_1k_output_tokens`。\n4. 增加 **Scheme A 调用状态分层**:`eval_valid` / `content_filter` / `infra_api_failed`,模型能力指标默认只看 `eval_valid`。\n5. 所有 V2 数据、结果和 notebook 都与 V1 隔离,避免覆盖既有结论。\n\n本轮完整 V2 NIAH 规模为:\n\n- 3 个模型:DeepSeek / Kimi / Qwen\n- 5 个长度:2K / 4K / 8K / 16K / 32K\n- 7 个深度点:0 / 10 / 25 / 50 / 75 / 90 / 100\n- 10 次重复\n- 合计 350 条样本 / 模型,1050 条 NIAH 原始调用\n\n---\n\n## Repository Layout\n\n```\nllm-long-context-eval-zh-V2/\n├── configs/\n│ ├── eval_config.yaml\n│ └── eval_config_v2.yaml\n├── data/\n│ ├── needles/\n│ │ ├── multihop_qa.json\n│ │ ├── multihop_qa_v2.json\n│ │ └── v2_needle_bank.json\n│ ├── processed/\n│ └── processed/v2/\n├── docs/\n│ ├── eval_design.md\n│ └── eval_design_v2.md\n├── notebooks/\n│ ├── 01_data_preparation.ipynb\n│ ├── 02_eval_runner.ipynb\n│ ├── 03_analysis_visualization.ipynb\n│ ├── 04_report.ipynb\n│ └── v2/\n├── results/\n│ ├── figures/\n│ ├── processed/\n│ ├── raw/\n│ └── v2/\n│ ├── figures/\n│ ├── processed/\n│ └── raw/\n└── src/\n ├── data_prep.py\n ├── data_prep_v2.py\n ├── eval_runner.py\n ├── eval_runner_v2.py\n ├── metrics.py\n ├── metrics_v2.py\n └── visualize.py\n```\n\n---\n\n## Reproduce V2\n\n### 1. Install\n\n```bash\npip install -r requirements.txt\n```\n\n### 2. Configure API keys\n\n```bash\ncp .env.example .env\n# fill in DEEPSEEK_API_KEY / MOONSHOT_API_KEY / DASHSCOPE_API_KEY\n```\n\n> **Kimi NIAH 必须使用 `MOONSHOT_API_KEY`(`api.moonshot.cn`)。** `KIMI_API_KEY` 仅适用于 Kimi Coding Agent,无法调用 `moonshot-v1-128k`。\n\n### 3. Generate V2 datasets\n\n```bash\npython src/data_prep_v2.py\n```\n\n或直接运行:\n\n```\nnotebooks/v2/01_data_preparation_v2.ipynb\n```\n\n### 4. Run V2 evaluation\n\n```\nnotebooks/v2/02_eval_runner_v2.ipynb\n```\n\n### 5. Run V2 analysis and report\n\n```\nnotebooks/v2/03_analysis_visualization_v2.ipynb\nnotebooks/v2/04_report_v2.ipynb\n```\n\n或一键重评分 + 出图(主口径 eval_valid):\n\n```bash\npython scripts/rerun_kimi_v2.py --analyze-only\npython scripts/regenerate_v2_figures.py\n```\n\nV2 关键产物路径:\n\n- `results/v2/raw/raw_results.csv`\n- `results/v2/processed/scored_results.csv`\n- `results/v2/processed/summary_by_model_niah_valid_only.csv` ← **主口径 headline**\n- `results/v2/processed/summary_call_status.csv`\n- `results/v2/processed/summary_by_model_variant.csv`\n- `results/v2/processed/summary_by_model_length.csv`\n- `results/v2/processed/summary_by_model_task.csv`\n- `results/v2/processed/summary_by_model_badcase_taxonomy.csv`\n- `results/v2/processed/summary_by_badcase_taxonomy.csv`\n- `results/v2/processed/badcase_examples.csv`\n- `results/v2/processed/real_task_subset_roadmap.csv`\n- `results/v2/figures/*.png`\n\n---\n\n## Current Limits\n\n- `multi_hop` 已覆盖 3 个模型各 32 条(96 条合计)。2 个 `judge` 样本已人工复核并进入 Contains;3-hop 仍是共同短板:Kimi 为 **0.0%**,DeepSeek 20.0%,Qwen 40.0%。\n- Kimi 有 31 条 `content_filter` 样本无法通过重试恢复,需要在数据层替换敏感 haystack 或接受「平台审核盲区」作为独立统计维度。\n- DeepSeek / Qwen 各有约 31 条基础设施失败样本,长上下文评测应始终保留 `error` + `prompt_tokens` 字段以便事后诊断。\n- badcase taxonomy 已经能指导下一轮数据策略,但规则仍是启发式首版,后续值得补更细的抽错值 / 单位混淆 / 时间推理子类。\n\n---\n\n## References\n\n- [Lost in the Middle (Liu et al., 2023)](https://arxiv.org/abs/2307.03172)\n- [RULER: What's the Real Context Window of Your LLM? (Hsieh et al., 2024)](https://arxiv.org/abs/2404.06654)\n- [Needle in a Haystack (Kamradt, 2023)](https://github.com/gkamradt/LLMTest_NeedleInAHaystack)\n"}, "4b395739db749b606fdbd6ba8dc4558932831bdc": {"t": 1785772155.5152726, "n": 9280, "h": "c57a30e34c015610", "c": "# LLM 长上下文能力评测框架 V2\n\n[![Lint](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/actions/workflows/lint.yml/badge.svg)](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/actions/workflows/lint.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![V2 Samples](https://img.shields.io/badge/NIAH-1050-blue)](#v2-results)\n[![multi_hop](https://img.shields.io/badge/multi__hop-96-orange)](#multi-hop-pilot)\n[![Pilot Models](https://img.shields.io/badge/models-3-green)](#v2-results)\n[![Repeats](https://img.shields.io/badge/repeats-10-purple)](#methodology)\n[![Status](https://img.shields.io/badge/status-final_v2-success)](#v2-results)\n\n> 面向中文长上下文场景的 **V2 基准仓库**。这一版把单格重复数从 3 提高到 10,并引入 `style_aligned`、`numeric_confusable`、`multi_key` 三类更难的中文 NIAH 变体。\n>\n> 当前仓库包含 **完整 V2 结果层**:3 个模型、5 个上下文长度、7 个深度点、10 次重复,共 **1050 条 NIAH 原始调用 + 96 条 multi_hop 结果(32 条/模型)**,附带 `results/v2/` 下的汇总表、taxonomy CSV 与报告图表。\n>\n> **主口径说明(Scheme A)**:报告中的模型能力指标默认基于 `eval_valid` 有效样本,排除 `content_filter`(平台内容审核拦截)与 `infra_api_failed`(余额耗尽、限流等基础设施失败)。这些失败不应计入模型检索能力。\n\nV1 基线仓库见:[llm-long-context-eval-zh](https://github.com/melody-ling-L/llm-long-context-eval-zh)\n\n---\n\n## GitHub 直接查看\n\n- GitHub 渲染报告:`results/v2/report/04_report_v2.executed.ipynb`\n- 源 notebook:`notebooks/v2/04_report_v2.ipynb`\n- HTML 下载版:[v2.0.0 HTML 报告](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/releases/tag/v2.0.0)\n- **主口径 NIAH 汇总**:`results/v2/processed/summary_by_model_niah_valid_only.csv`\n- 调用状态诊断:`results/v2/processed/summary_call_status.csv`\n- badcase taxonomy 汇总:`results/v2/processed/summary_by_badcase_taxonomy.csv`\n- 任务级汇总:`results/v2/processed/summary_by_model_task.csv`\n\n---\n\n## V2 Results\n\n| DeepSeek | Kimi | Qwen |\n|---|---|---|\n| ![DeepSeek V2 Heatmap](results/v2/figures/niah_heatmap_deepseek.png) | ![Kimi V2 Heatmap](results/v2/figures/niah_heatmap_kimi.png) | ![Qwen V2 Heatmap](results/v2/figures/niah_heatmap_qwen.png) |\n\n| Accuracy by Length with 95% CI | Efficiency Tradeoff |\n|---|---|\n| ![Accuracy by Length with 95% CI](results/v2/figures/accuracy_by_length_with_ci.png) | ![Efficiency Tradeoff](results/v2/figures/efficiency_tradeoff.png) |\n\n### NIAH Headline Metrics(eval_valid 主口径)\n\n| 模型 | eval_valid / 350 | EM | Contains | 95% CI | 平均延迟 | 平均输出 tokens | 单位命中成本 |\n|------|:--:|:--:|:--------:|:------:|:-------:|:-------------:|:------------:|\n| DeepSeek | 328 | 65.2% | **96.6%** | 94.1% - 98.1% | **0.78s** | 5.1 | **¥0.0057 / hit** |\n| Kimi | 319 | **89.7%** | 94.4% | 91.3% - 96.4% | 2.25s | 6.8 | ¥0.6388 / hit |\n| Qwen | 319 | 87.8% | 89.3% | 85.5% - 92.3% | 7.83s | 6.1 | ¥0.0397 / hit |\n\n> 若直接对全部 350 条原始行取平均,Kimi Contains 会虚降至 **86.0%**(含 31 条 `content_filter` 与早期 32K 基础设施失败)。**请勿用该数字作为 headline。**\n\n### 调用状态诊断\n\n| 模型 | 总调用 | eval_valid | content_filter | infra_api_failed |\n|------|:--:|:--:|:--:|:--:|\n| DeepSeek | 350 | 328 (93.7%) | 0 | 22 (6.3%) |\n| Kimi | 350 | 319 (91.1%) | **31 (8.9%)** | 0 |\n| Qwen | 350 | 319 (91.1%) | 0 | 31 (8.9%) |\n\n- **Kimi `content_filter`**:Moonshot 平台对含政治/经济敏感百科 haystack 的 31 条样本触发「高风险内容」拦截,与模型检索能力无关。\n- **DeepSeek / Qwen `infra_api_failed`**:主要为部分长度点的 API 超时或调用失败(`prompt_tokens=0`),已在 `eval_valid` 口径中排除。\n\n### Variant Breakdown(eval_valid)\n\n| 模型 | style_aligned | numeric_confusable | multi_key |\n|------|:--:|:--:|:--:|\n| DeepSeek | **100.0%** | 89.9% | **100.0%** |\n| Kimi | **100.0%** | 82.9% | **100.0%** |\n| Qwen | **100.0%** | **67.6%** | **100.0%** |\n\n### 按上下文长度(eval_valid Contains)\n\n| 模型 | 2K | 4K | 8K | 16K | 32K |\n|------|:--:|:--:|:--:|:--:|:--:|\n| DeepSeek | 97.1% | 98.4% | 95.1% | 93.8% | 98.6% |\n| Kimi | 90.0% | 90.5% | 95.1% | 96.9% | **100.0%** |\n| Qwen | 87.1% | 87.3% | 86.9% | 90.6% | 95.1% |\n\n### Key Findings\n\n- **DeepSeek 在 V2 eval_valid 口径下拿到最高 Contains(96.6%)和最低单位命中成本(¥0.0057 / hit)。** 综合效率仍是三者中最强。\n- **Kimi 32K 并非模型能力塌陷。** 早期 README 中「32K 0% / 稳定失效」来自 Moonshot **余额耗尽**(`prompt_tokens=0`)与后续 **content_filter** 叠加;在 61 条 eval_valid 32K 样本上,Kimi Contains 为 **100.0%**。\n- **`numeric_confusable` 仍是平均最难的变体。** Qwen 仅 67.6%,Kimi 82.9%,DeepSeek 89.9%;相近数字 / 字符串干扰比 style 对齐或多 key 干扰更稳定地击穿检索表现。\n- **badcase taxonomy(eval_valid)显示主要短板是答案格式而非纯召回失败。** 「输出冗余但包含正确答案」占 **66.1%**,「被相似数字干扰」占 **33.9%**;DeepSeek 的主要问题更像抽取格式与回答收敛,而不是找不到 needle。\n- **16K / 32K 在 V2 中不再表现为「所有模型统一退化」。** DeepSeek 与 Kimi 在 32K 均保持高位,Qwen 在 16K / 32K 也回升;更高重复数把「模型差异」和「基础设施噪声」都放大了出来。\n- **评测工程教训:必须持久化 `error` 字段并区分失败类型。** 没有 `content_filter` / `infra_api_failed` 分层,很容易把计费失败误读成「长上下文失忆」。\n\n### Badcase Taxonomy Headline(eval_valid)\n\n| 错误类型 | 占全部 badcase 比例 | 首页结论 |\n|----------|:--:|---------|\n| 输出冗余但包含正确答案 | **66.1%** | DeepSeek 的主要短板更像抽取格式与回答收敛问题,而不是纯召回失败。 |\n| 被相似数字干扰 | **33.9%** | 相近数字、比例、时间和单位混排是当前最值得补样本的干扰模式。 |\n\n更细的按模型拆分见:`results/v2/processed/summary_by_model_badcase_taxonomy.csv`\n\n### multi-hop Pilot\n\n| 模型 | N | EM | Contains | 95% CI | 说明 |\n|------|:--:|:--:|:--------:|:------:|------|\n| DeepSeek | 32 | 43.8% | 65.6% | 48.3% - 79.6% | 2-hop 74.1%,3-hop 20.0%;命中成本最低。 |\n| Qwen | 32 | 68.8% | 68.8% | 51.4% - 82.0% | 2-hop 74.1%,3-hop 40.0%;EM 更稳但成本更高。 |\n| Kimi | 32 | 50.0% | 56.2% | 39.3% - 71.8% | 2-hop 66.7%,**3-hop 0.0%**;长距离多步综合明显偏弱。 |\n\n当前 multi_hop 已覆盖 **3 个模型各 32 条**(事实分散嵌入 ~8000 字符长文)。按跳数拆分见:`results/v2/processed/summary_multihop_by_hops.csv`\n\n### Actionable Assets\n\n- 主口径 NIAH 汇总:`results/v2/processed/summary_by_model_niah_valid_only.csv`\n- 调用状态:`results/v2/processed/summary_call_status.csv`\n- badcase 总体汇总:`results/v2/processed/summary_by_badcase_taxonomy.csv`\n- badcase 按模型汇总:`results/v2/processed/summary_by_model_badcase_taxonomy.csv`\n- 代表性失败样本:`results/v2/processed/badcase_examples.csv`\n- 真实任务子集扩充路线:`results/v2/processed/real_task_subset_roadmap.csv`\n\n---\n\n## Methodology\n\nV2 相比 V1 的关键变化:\n\n1. 将单格重复数从 3 提高到 10,使 `context_length × depth_pct` 的统计更稳。\n2. 引入三类更难的中文 NIAH 变体:\n - `style_aligned`:needle 与上下文文风更接近。\n - `numeric_confusable`:存在多个相近数字或近义指标,不能靠关键词秒取。\n - `multi_key`:同时插入 target 和 distractor,需要做更精细的定位。\n3. 增加 V2 效率指标:`response_chars`、`completion_tokens`、`row_cost_cny`、`cost_per_contains_hit_cny`、`contains_per_1k_output_tokens`。\n4. 增加 **Scheme A 调用状态分层**:`eval_valid` / `content_filter` / `infra_api_failed`,模型能力指标默认只看 `eval_valid`。\n5. 所有 V2 数据、结果和 notebook 都与 V1 隔离,避免覆盖既有结论。\n\n本轮完整 V2 NIAH 规模为:\n\n- 3 个模型:DeepSeek / Kimi / Qwen\n- 5 个长度:2K / 4K / 8K / 16K / 32K\n- 7 个深度点:0 / 10 / 25 / 50 / 75 / 90 / 100\n- 10 次重复\n- 合计 350 条样本 / 模型,1050 条 NIAH 原始调用\n\n---\n\n## Repository Layout\n\n```\nllm-long-context-eval-zh-V2/\n├── configs/\n│ ├── eval_config.yaml\n│ └── eval_config_v2.yaml\n├── data/\n│ ├── needles/\n│ │ ├── multihop_qa.json\n│ │ ├── multihop_qa_v2.json\n│ │ └── v2_needle_bank.json\n│ ├── processed/\n│ └── processed/v2/\n├── docs/\n│ ├── eval_design.md\n│ └── eval_design_v2.md\n├── notebooks/\n│ ├── 01_data_preparation.ipynb\n│ ├── 02_eval_runner.ipynb\n│ ├── 03_analysis_visualization.ipynb\n│ ├── 04_report.ipynb\n│ └── v2/\n├── results/\n│ ├── figures/\n│ ├── processed/\n│ ├── raw/\n│ └── v2/\n│ ├── figures/\n│ ├── processed/\n│ └── raw/\n└── src/\n ├── data_prep.py\n ├── data_prep_v2.py\n ├── eval_runner.py\n ├── eval_runner_v2.py\n ├── metrics.py\n ├── metrics_v2.py\n └── visualize.py\n```\n\n---\n\n## Reproduce V2\n\n### 1. Install\n\n```bash\npip install -r requirements.txt\n```\n\n### 2. Configure API keys\n\n```bash\ncp .env.example .env\n# fill in DEEPSEEK_API_KEY / MOONSHOT_API_KEY / DASHSCOPE_API_KEY\n```\n\n> **Kimi NIAH 必须使用 `MOONSHOT_API_KEY`(`api.moonshot.cn`)。** `KIMI_API_KEY` 仅适用于 Kimi Coding Agent,无法调用 `moonshot-v1-128k`。\n\n### 3. Generate V2 datasets\n\n```bash\npython src/data_prep_v2.py\n```\n\n或直接运行:\n\n```\nnotebooks/v2/01_data_preparation_v2.ipynb\n```\n\n### 4. Run V2 evaluation\n\n```\nnotebooks/v2/02_eval_runner_v2.ipynb\n```\n\n### 5. Run V2 analysis and report\n\n```\nnotebooks/v2/03_analysis_visualization_v2.ipynb\nnotebooks/v2/04_report_v2.ipynb\n```\n\n或一键重评分 + 出图(主口径 eval_valid):\n\n```bash\npython scripts/rerun_kimi_v2.py --analyze-only\npython scripts/regenerate_v2_figures.py\n```\n\nV2 关键产物路径:\n\n- `results/v2/raw/raw_results.csv`\n- `results/v2/processed/scored_results.csv`\n- `results/v2/processed/summary_by_model_niah_valid_only.csv` ← **主口径 headline**\n- `results/v2/processed/summary_call_status.csv`\n- `results/v2/processed/summary_by_model_variant.csv`\n- `results/v2/processed/summary_by_model_length.csv`\n- `results/v2/processed/summary_by_model_task.csv`\n- `results/v2/processed/summary_by_model_badcase_taxonomy.csv`\n- `results/v2/processed/summary_by_badcase_taxonomy.csv`\n- `results/v2/processed/badcase_examples.csv`\n- `results/v2/processed/real_task_subset_roadmap.csv`\n- `results/v2/figures/*.png`\n\n---\n\n## Current Limits\n\n- `multi_hop` 已覆盖 3 个模型各 32 条(96 条合计)。3-hop 仍是共同短板:Kimi 3-hop Contains 为 **0.0%**,DeepSeek 仅 20.0%,Qwen 相对最好(40.0%)。\n- Kimi 有 31 条 `content_filter` 样本无法通过重试恢复,需要在数据层替换敏感 haystack 或接受「平台审核盲区」作为独立统计维度。\n- DeepSeek / Qwen 各有约 31 条基础设施失败样本,长上下文评测应始终保留 `error` + `prompt_tokens` 字段以便事后诊断。\n- badcase taxonomy 已经能指导下一轮数据策略,但规则仍是启发式首版,后续值得补更细的抽错值 / 单位混淆 / 时间推理子类。\n\n---\n\n## References\n\n- [Lost in the Middle (Liu et al., 2023)](https://arxiv.org/abs/2307.03172)\n- [RULER: What's the Real Context Window of Your LLM? (Hsieh et al., 2024)](https://arxiv.org/abs/2404.06654)\n- [Needle in a Haystack (Kamradt, 2023)](https://github.com/gkamradt/LLMTest_NeedleInAHaystack)\n"}, "466bbe23345ddd5617628f7ad42e6dc27e1d5e4a": {"t": 1785772156.980435, "n": 9229, "h": "e8fa89c6945375cd", "c": "# LLM 长上下文能力评测框架 V2\n\n[![Lint](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/actions/workflows/lint.yml/badge.svg)](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/actions/workflows/lint.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![V2 Samples](https://img.shields.io/badge/NIAH-1050-blue)](#v2-results)\n[![multi_hop](https://img.shields.io/badge/multi__hop-64-orange)](#multi-hop-pilot)\n[![Pilot Models](https://img.shields.io/badge/models-3-green)](#v2-results)\n[![Repeats](https://img.shields.io/badge/repeats-10-purple)](#methodology)\n[![Status](https://img.shields.io/badge/status-final_v2-success)](#v2-results)\n\n> 面向中文长上下文场景的 **V2 基准仓库**。这一版把单格重复数从 3 提高到 10,并引入 `style_aligned`、`numeric_confusable`、`multi_key` 三类更难的中文 NIAH 变体。\n>\n> 当前仓库包含 **完整 V2 结果层**:3 个模型、5 个上下文长度、7 个深度点、10 次重复,共 **1050 条 NIAH 原始调用 + 64 条 multi_hop 结果**,附带 `results/v2/` 下的汇总表、taxonomy CSV 与报告图表。\n>\n> **主口径说明(Scheme A)**:报告中的模型能力指标默认基于 `eval_valid` 有效样本,排除 `content_filter`(平台内容审核拦截)与 `infra_api_failed`(余额耗尽、限流等基础设施失败)。这些失败不应计入模型检索能力。\n\nV1 基线仓库见:[llm-long-context-eval-zh](https://github.com/melody-ling-L/llm-long-context-eval-zh)\n\n---\n\n## GitHub 直接查看\n\n- GitHub 渲染报告:`results/v2/report/04_report_v2.executed.ipynb`\n- 源 notebook:`notebooks/v2/04_report_v2.ipynb`\n- HTML 下载版:[v2.0.0 HTML 报告](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/releases/tag/v2.0.0)\n- **主口径 NIAH 汇总**:`results/v2/processed/summary_by_model_niah_valid_only.csv`\n- 调用状态诊断:`results/v2/processed/summary_call_status.csv`\n- badcase taxonomy 汇总:`results/v2/processed/summary_by_badcase_taxonomy.csv`\n- 任务级汇总:`results/v2/processed/summary_by_model_task.csv`\n\n---\n\n## V2 Results\n\n| DeepSeek | Kimi | Qwen |\n|---|---|---|\n| ![DeepSeek V2 Heatmap](results/v2/figures/niah_heatmap_deepseek.png) | ![Kimi V2 Heatmap](results/v2/figures/niah_heatmap_kimi.png) | ![Qwen V2 Heatmap](results/v2/figures/niah_heatmap_qwen.png) |\n\n| Accuracy by Length with 95% CI | Efficiency Tradeoff |\n|---|---|\n| ![Accuracy by Length with 95% CI](results/v2/figures/accuracy_by_length_with_ci.png) | ![Efficiency Tradeoff](results/v2/figures/efficiency_tradeoff.png) |\n\n### NIAH Headline Metrics(eval_valid 主口径)\n\n| 模型 | eval_valid / 350 | EM | Contains | 95% CI | 平均延迟 | 平均输出 tokens | 单位命中成本 |\n|------|:--:|:--:|:--------:|:------:|:-------:|:-------------:|:------------:|\n| DeepSeek | 328 | 65.2% | **96.6%** | 94.1% - 98.1% | **0.78s** | 5.1 | **¥0.0057 / hit** |\n| Kimi | 319 | **89.7%** | 94.4% | 91.3% - 96.4% | 2.25s | 6.8 | ¥0.6388 / hit |\n| Qwen | 319 | 87.8% | 89.3% | 85.5% - 92.3% | 7.83s | 6.1 | ¥0.0397 / hit |\n\n> 若直接对全部 350 条原始行取平均,Kimi Contains 会虚降至 **86.0%**(含 31 条 `content_filter` 与早期 32K 基础设施失败)。**请勿用该数字作为 headline。**\n\n### 调用状态诊断\n\n| 模型 | 总调用 | eval_valid | content_filter | infra_api_failed |\n|------|:--:|:--:|:--:|:--:|\n| DeepSeek | 350 | 328 (93.7%) | 0 | 22 (6.3%) |\n| Kimi | 350 | 319 (91.1%) | **31 (8.9%)** | 0 |\n| Qwen | 350 | 319 (91.1%) | 0 | 31 (8.9%) |\n\n- **Kimi `content_filter`**:Moonshot 平台对含政治/经济敏感百科 haystack 的 31 条样本触发「高风险内容」拦截,与模型检索能力无关。\n- **DeepSeek / Qwen `infra_api_failed`**:主要为部分长度点的 API 超时或调用失败(`prompt_tokens=0`),已在 `eval_valid` 口径中排除。\n\n### Variant Breakdown(eval_valid)\n\n| 模型 | style_aligned | numeric_confusable | multi_key |\n|------|:--:|:--:|:--:|\n| DeepSeek | **100.0%** | 89.9% | **100.0%** |\n| Kimi | **100.0%** | 82.9% | **100.0%** |\n| Qwen | **100.0%** | **67.6%** | **100.0%** |\n\n### 按上下文长度(eval_valid Contains)\n\n| 模型 | 2K | 4K | 8K | 16K | 32K |\n|------|:--:|:--:|:--:|:--:|:--:|\n| DeepSeek | 97.1% | 98.4% | 95.1% | 93.8% | 98.6% |\n| Kimi | 90.0% | 90.5% | 95.1% | 96.9% | **100.0%** |\n| Qwen | 87.1% | 87.3% | 86.9% | 90.6% | 95.1% |\n\n### Key Findings\n\n- **DeepSeek 在 V2 eval_valid 口径下拿到最高 Contains(96.6%)和最低单位命中成本(¥0.0057 / hit)。** 综合效率仍是三者中最强。\n- **Kimi 32K 并非模型能力塌陷。** 早期 README 中「32K 0% / 稳定失效」来自 Moonshot **余额耗尽**(`prompt_tokens=0`)与后续 **content_filter** 叠加;在 61 条 eval_valid 32K 样本上,Kimi Contains 为 **100.0%**。\n- **`numeric_confusable` 仍是平均最难的变体。** Qwen 仅 67.6%,Kimi 82.9%,DeepSeek 89.9%;相近数字 / 字符串干扰比 style 对齐或多 key 干扰更稳定地击穿检索表现。\n- **badcase taxonomy(eval_valid)显示主要短板是答案格式而非纯召回失败。** 「输出冗余但包含正确答案」占 **66.1%**,「被相似数字干扰」占 **33.9%**;DeepSeek 的主要问题更像抽取格式与回答收敛,而不是找不到 needle。\n- **16K / 32K 在 V2 中不再表现为「所有模型统一退化」。** DeepSeek 与 Kimi 在 32K 均保持高位,Qwen 在 16K / 32K 也回升;更高重复数把「模型差异」和「基础设施噪声」都放大了出来。\n- **评测工程教训:必须持久化 `error` 字段并区分失败类型。** 没有 `content_filter` / `infra_api_failed` 分层,很容易把计费失败误读成「长上下文失忆」。\n\n### Badcase Taxonomy Headline(eval_valid)\n\n| 错误类型 | 占全部 badcase 比例 | 首页结论 |\n|----------|:--:|---------|\n| 输出冗余但包含正确答案 | **66.1%** | DeepSeek 的主要短板更像抽取格式与回答收敛问题,而不是纯召回失败。 |\n| 被相似数字干扰 | **33.9%** | 相近数字、比例、时间和单位混排是当前最值得补样本的干扰模式。 |\n\n更细的按模型拆分见:`results/v2/processed/summary_by_model_badcase_taxonomy.csv`\n\n### multi-hop Pilot\n\n| 模型 | N | EM | Contains | 95% CI | 说明 |\n|------|:--:|:--:|:--------:|:------:|------|\n| DeepSeek | 32 | 43.8% | 65.6% | 48.3% - 79.6% | 2-hop 74.1%,3-hop 20.0%;命中成本最低。 |\n| Qwen | 32 | 68.8% | 68.8% | 51.4% - 82.0% | 2-hop 74.1%,3-hop 40.0%;EM 更稳但成本更高。 |\n| Kimi | — | — | — | — | 当前 multi_hop 尚未跑 Kimi。 |\n\n当前 multi_hop 不是「已生成待处理」的数据,而是已经正式并入统一报告的第一版真实任务切片。按跳数拆分见:`results/v2/processed/summary_multihop_by_hops.csv`\n\n### Actionable Assets\n\n- 主口径 NIAH 汇总:`results/v2/processed/summary_by_model_niah_valid_only.csv`\n- 调用状态:`results/v2/processed/summary_call_status.csv`\n- badcase 总体汇总:`results/v2/processed/summary_by_badcase_taxonomy.csv`\n- badcase 按模型汇总:`results/v2/processed/summary_by_model_badcase_taxonomy.csv`\n- 代表性失败样本:`results/v2/processed/badcase_examples.csv`\n- 真实任务子集扩充路线:`results/v2/processed/real_task_subset_roadmap.csv`\n\n---\n\n## Methodology\n\nV2 相比 V1 的关键变化:\n\n1. 将单格重复数从 3 提高到 10,使 `context_length × depth_pct` 的统计更稳。\n2. 引入三类更难的中文 NIAH 变体:\n - `style_aligned`:needle 与上下文文风更接近。\n - `numeric_confusable`:存在多个相近数字或近义指标,不能靠关键词秒取。\n - `multi_key`:同时插入 target 和 distractor,需要做更精细的定位。\n3. 增加 V2 效率指标:`response_chars`、`completion_tokens`、`row_cost_cny`、`cost_per_contains_hit_cny`、`contains_per_1k_output_tokens`。\n4. 增加 **Scheme A 调用状态分层**:`eval_valid` / `content_filter` / `infra_api_failed`,模型能力指标默认只看 `eval_valid`。\n5. 所有 V2 数据、结果和 notebook 都与 V1 隔离,避免覆盖既有结论。\n\n本轮完整 V2 NIAH 规模为:\n\n- 3 个模型:DeepSeek / Kimi / Qwen\n- 5 个长度:2K / 4K / 8K / 16K / 32K\n- 7 个深度点:0 / 10 / 25 / 50 / 75 / 90 / 100\n- 10 次重复\n- 合计 350 条样本 / 模型,1050 条 NIAH 原始调用\n\n---\n\n## Repository Layout\n\n```\nllm-long-context-eval-zh-V2/\n├── configs/\n│ ├── eval_config.yaml\n│ └── eval_config_v2.yaml\n├── data/\n│ ├── needles/\n│ │ ├── multihop_qa.json\n│ │ ├── multihop_qa_v2.json\n│ │ └── v2_needle_bank.json\n│ ├── processed/\n│ └── processed/v2/\n├── docs/\n│ ├── eval_design.md\n│ └── eval_design_v2.md\n├── notebooks/\n│ ├── 01_data_preparation.ipynb\n│ ├── 02_eval_runner.ipynb\n│ ├── 03_analysis_visualization.ipynb\n│ ├── 04_report.ipynb\n│ └── v2/\n├── results/\n│ ├── figures/\n│ ├── processed/\n│ ├── raw/\n│ └── v2/\n│ ├── figures/\n│ ├── processed/\n│ └── raw/\n└── src/\n ├── data_prep.py\n ├── data_prep_v2.py\n ├── eval_runner.py\n ├── eval_runner_v2.py\n ├── metrics.py\n ├── metrics_v2.py\n └── visualize.py\n```\n\n---\n\n## Reproduce V2\n\n### 1. Install\n\n```bash\npip install -r requirements.txt\n```\n\n### 2. Configure API keys\n\n```bash\ncp .env.example .env\n# fill in DEEPSEEK_API_KEY / MOONSHOT_API_KEY / DASHSCOPE_API_KEY\n```\n\n> **Kimi NIAH 必须使用 `MOONSHOT_API_KEY`(`api.moonshot.cn`)。** `KIMI_API_KEY` 仅适用于 Kimi Coding Agent,无法调用 `moonshot-v1-128k`。\n\n### 3. Generate V2 datasets\n\n```bash\npython src/data_prep_v2.py\n```\n\n或直接运行:\n\n```\nnotebooks/v2/01_data_preparation_v2.ipynb\n```\n\n### 4. Run V2 evaluation\n\n```\nnotebooks/v2/02_eval_runner_v2.ipynb\n```\n\n### 5. Run V2 analysis and report\n\n```\nnotebooks/v2/03_analysis_visualization_v2.ipynb\nnotebooks/v2/04_report_v2.ipynb\n```\n\n或一键重评分 + 出图(主口径 eval_valid):\n\n```bash\npython scripts/rerun_kimi_v2.py --analyze-only\npython scripts/regenerate_v2_figures.py\n```\n\nV2 关键产物路径:\n\n- `results/v2/raw/raw_results.csv`\n- `results/v2/processed/scored_results.csv`\n- `results/v2/processed/summary_by_model_niah_valid_only.csv` ← **主口径 headline**\n- `results/v2/processed/summary_call_status.csv`\n- `results/v2/processed/summary_by_model_variant.csv`\n- `results/v2/processed/summary_by_model_length.csv`\n- `results/v2/processed/summary_by_model_task.csv`\n- `results/v2/processed/summary_by_model_badcase_taxonomy.csv`\n- `results/v2/processed/summary_by_badcase_taxonomy.csv`\n- `results/v2/processed/badcase_examples.csv`\n- `results/v2/processed/real_task_subset_roadmap.csv`\n- `results/v2/figures/*.png`\n\n---\n\n## Current Limits\n\n- `multi_hop` 已正式进入统一报告,但当前只有 64 条结果(DeepSeek / Qwen 各 32 条),更适合作为 real-task pilot,而不是最终泛化排序依据;Kimi multi_hop 尚未跑。\n- Kimi 有 31 条 `content_filter` 样本无法通过重试恢复,需要在数据层替换敏感 haystack 或接受「平台审核盲区」作为独立统计维度。\n- DeepSeek / Qwen 各有约 31 条基础设施失败样本,长上下文评测应始终保留 `error` + `prompt_tokens` 字段以便事后诊断。\n- badcase taxonomy 已经能指导下一轮数据策略,但规则仍是启发式首版,后续值得补更细的抽错值 / 单位混淆 / 时间推理子类。\n\n---\n\n## References\n\n- [Lost in the Middle (Liu et al., 2023)](https://arxiv.org/abs/2307.03172)\n- [RULER: What's the Real Context Window of Your LLM? (Hsieh et al., 2024)](https://arxiv.org/abs/2404.06654)\n- [Needle in a Haystack (Kamradt, 2023)](https://github.com/gkamradt/LLMTest_NeedleInAHaystack)\n"}, "db243c09bf1f7b5b6aa6119ba0b141b52b230289": {"t": 1785772158.2888997, "n": 7996, "h": "f64dee6de3fd8998", "c": "# LLM 长上下文能力评测框架 V2\n\n[![Lint](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/actions/workflows/lint.yml/badge.svg)](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/actions/workflows/lint.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![V2 Samples](https://img.shields.io/badge/v2_samples-1050-blue)](#v2-results)\n[![multi_hop Pilot](https://img.shields.io/badge/multi_hop_pilot-12-teal)](results/v2/processed/summary_by_model_task.csv)\n[![Models](https://img.shields.io/badge/models-3-green)](#v2-results)\n[![Repeats](https://img.shields.io/badge/repeats-10-orange)](#methodology)\n[![Status](https://img.shields.io/badge/status-v2_published-success)](#v2-results)\n\n> 面向中文长上下文场景的 **V2 基准仓库**。这一版把单格重复数从 3 提高到 10,并引入 `style_aligned`、`numeric_confusable`、`multi_key` 三类更难的中文 NIAH 变体。\n>\n> 当前仓库已经包含 **完整 V2 结果层**:3 个模型、5 个上下文长度、7 个深度点、10 次重复,共 **1050 条 NIAH 结果 + 12 条 multi_hop pilot 结果**,附带 `results/v2/` 下的汇总表、taxonomy CSV 与报告图表。\n\nV1 基线仓库见:[llm-long-context-eval-zh](https://github.com/melody-ling-L/llm-long-context-eval-zh)\n\n---\n\n## GitHub 直接查看\n\n- GitHub 渲染报告:[`results/v2/report/04_report_v2.executed.ipynb`](results/v2/report/04_report_v2.executed.ipynb)\n- 源 notebook:[`notebooks/v2/04_report_v2.ipynb`](notebooks/v2/04_report_v2.ipynb)\n- HTML 下载版:[`v2.0.0 HTML 报告`](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/releases/download/v2.0.0/llm-long-context-eval-zh-V2-report.html)\n- badcase taxonomy 汇总:[`results/v2/processed/summary_by_badcase_taxonomy.csv`](results/v2/processed/summary_by_badcase_taxonomy.csv)\n- 任务级汇总:[`results/v2/processed/summary_by_model_task.csv`](results/v2/processed/summary_by_model_task.csv)\n\n---\n\n## V2 Results\n\n| DeepSeek | Kimi | Qwen |\n|---|---|---|\n| ![DeepSeek V2 Heatmap](results/v2/figures/niah_heatmap_deepseek.png) | ![Kimi V2 Heatmap](results/v2/figures/niah_heatmap_kimi.png) | ![Qwen V2 Heatmap](results/v2/figures/niah_heatmap_qwen.png) |\n\n| Accuracy by Length with 95% CI | Efficiency Tradeoff |\n|---|---|\n| ![Accuracy by Length with 95% CI](results/v2/figures/accuracy_by_length_with_ci.png) | ![Efficiency Tradeoff](results/v2/figures/efficiency_tradeoff.png) |\n\n### NIAH Headline Metrics\n\n| 模型 | N | EM | Contains | 95% CI | 平均延迟 | 平均输出 tokens | 单位命中成本 |\n|---|---:|---:|---:|---:|---:|---:|---:|\n| DeepSeek | 350 | 61.1% | **90.6%** | 87.1% - 93.2% | **0.73s** | 4.8 | **¥0.0057 / hit** |\n| Kimi | 350 | 58.9% | 63.1% | 58.0% - 68.0% | 1.06s | **4.5** | ¥0.3919 / hit |\n| Qwen | 350 | **80.0%** | 81.4% | 77.0% - 85.2% | 7.14s | 5.5 | ¥0.0397 / hit |\n\n### Variant Breakdown\n\n| 模型 | style_aligned | numeric_confusable | multi_key |\n|---|---:|---:|---:|\n| DeepSeek | **94.0%** | 86.0% | 91.7% |\n| Kimi | 69.8% | 53.5% | 65.8% |\n| Qwen | 89.7% | 62.3% | **91.7%** |\n\n### Key Findings\n\n- **DeepSeek 在 V2 中拿到了最高的 Contains 和最低的单位命中成本。** 90.6% 的 Contains 配合 ¥0.0057 / hit,使它成为当前这版 V2 中最强的综合效率模型。\n- **`numeric_confusable` 是平均最难的变体。** 这说明相近数字 / 字符串干扰比 style 对齐或多 key 干扰更稳定地击穿检索表现,应该被视为 V2 的 headline insight。\n- **badcase taxonomy 已经把 V2 从“统计结果”推进成“可指导优化”的评测资产。** 当前最常见错误不再是完全没找到,而是“输出冗余但包含正确答案”(35.1%),而真正的检索鲁棒性问题则主要集中在“被相似数字干扰”(32.0%)和“多 key 条件下定位失败”(17.4%)。\n- **Kimi 在 32K 上不是轻微波动,而是接近稳定失效。** 当前 32K 汇总为 0.0%,Wilson 95% CI 上界也只有 5.2%,更像真实塌陷而不是偶然抽样结果。\n- **multi_hop 已正式进入统一报告,但当前仍是 real-task pilot。** 3 个模型各有 4 条正式 multi_hop 结果,Contains 当前都在 50.0%,95% CI 仍宽到 [15.0, 85.0];它已经足够用于暴露真实业务口径短板,但还不足以做最终排序。\n- **16K / 32K 在 V2 中不再表现为“所有模型统一退化”。** DeepSeek 在 32K 出现强反弹,Qwen 在 16K 和 32K 基本持平,Kimi 则在 32K 崩塌。这说明更高重复数确实把“模型差异”放大了出来。\n\n### Badcase Taxonomy Headline\n\n| 错误类型 | 占全部 badcase 比例 | 首页结论 |\n|---|---:|---|\n| 输出冗余但包含正确答案 | **35.1%** | DeepSeek 的主要短板更像抽取格式与回答收敛问题,而不是纯召回失败。 |\n| 被相似数字干扰 | **32.0%** | 说明相近数字、比例、时间和单位混排是当前最值得补样本的干扰模式。 |\n| 多 key 条件下定位失败 | 17.4% | 说明模型在 target / distractor 并存时仍容易抓到相邻信息,尤其 Kimi 更明显。 |\n\n更细的按模型拆分已导出到:[`results/v2/processed/summary_by_model_badcase_taxonomy.csv`](results/v2/processed/summary_by_model_badcase_taxonomy.csv)\n\n### multi-hop Pilot\n\n| 模型 | N | EM | Contains | 95% CI | 说明 |\n|---|---:|---:|---:|---:|---|\n| DeepSeek | 4 | 50.0% | 50.0% | 15.0% - 85.0% | 当前 multi_hop 命中成本最低,但样本仍太少。 |\n| Kimi | 4 | 25.0% | 50.0% | 15.0% - 85.0% | Contains 能命中,但严格答案格式更不稳定。 |\n| Qwen | 4 | 50.0% | 50.0% | 15.0% - 85.0% | 与 DeepSeek 在 pilot 上接近,但成本更高。 |\n\n当前 multi_hop 不是“已生成待处理”的数据,而是已经正式并入统一报告的第一版真实任务切片。任务级汇总见:[`results/v2/processed/summary_by_model_task.csv`](results/v2/processed/summary_by_model_task.csv)\n\n### Actionable Assets\n\n- badcase 总体汇总:[`results/v2/processed/summary_by_badcase_taxonomy.csv`](results/v2/processed/summary_by_badcase_taxonomy.csv)\n- badcase 按模型汇总:[`results/v2/processed/summary_by_model_badcase_taxonomy.csv`](results/v2/processed/summary_by_model_badcase_taxonomy.csv)\n- 代表性失败样本:[`results/v2/processed/badcase_examples.csv`](results/v2/processed/badcase_examples.csv)\n- 真实任务子集扩充路线:[`results/v2/processed/real_task_subset_roadmap.csv`](results/v2/processed/real_task_subset_roadmap.csv)\n\n---\n\n## Methodology\n\nV2 相比 V1 的关键变化:\n\n1. 将单格重复数从 3 提高到 10,使 `context_length × depth_pct` 的统计更稳。\n2. 引入三类更难的中文 NIAH 变体:\n - `style_aligned`:needle 与上下文文风更接近。\n - `numeric_confusable`:存在多个相近数字或近义指标,不能靠关键词秒取。\n - `multi_key`:同时插入 target 和 distractor,需要做更精细的定位。\n3. 增加 V2 效率指标:`response_chars`、`completion_tokens`、`row_cost_cny`、`cost_per_contains_hit_cny`、`contains_per_1k_output_tokens`。\n4. 所有 V2 数据、结果和 notebook 都与 V1 隔离,避免覆盖既有结论。\n\n本轮完整 V2 NIAH 规模为:\n\n- 3 个模型:DeepSeek / Kimi / Qwen\n- 5 个长度:2K / 4K / 8K / 16K / 32K\n- 7 个深度点:0 / 10 / 25 / 50 / 75 / 90 / 100\n- 10 次重复\n- 合计 350 条样本 / 模型,1050 条评测结果\n\n---\n\n## Repository Layout\n\n```text\nllm-long-context-eval-zh-V2/\n├── configs/\n│ ├── eval_config.yaml\n│ └── eval_config_v2.yaml\n├── data/\n│ ├── needles/\n│ │ ├── multihop_qa.json\n│ │ ├── multihop_qa_v2.json\n│ │ └── v2_needle_bank.json\n│ ├── processed/\n│ └── processed/v2/\n├── docs/\n│ ├── eval_design.md\n│ └── eval_design_v2.md\n├── notebooks/\n│ ├── 01_data_preparation.ipynb\n│ ├── 02_eval_runner.ipynb\n│ ├── 03_analysis_visualization.ipynb\n│ ├── 04_report.ipynb\n│ └── v2/\n├── results/\n│ ├── figures/\n│ ├── processed/\n│ ├── raw/\n│ └── v2/\n│ ├── figures/\n│ ├── processed/\n│ └── raw/\n└── src/\n ├── data_prep.py\n ├── data_prep_v2.py\n ├── eval_runner.py\n ├── eval_runner_v2.py\n ├── metrics.py\n ├── metrics_v2.py\n └── visualize.py\n```\n\n---\n\n## Reproduce V2\n\n### 1. Install\n\n```bash\npip install -r requirements.txt\n```\n\n### 2. Configure API keys\n\n```bash\ncp .env.example .env\n# fill in DEEPSEEK_API_KEY / MOONSHOT_API_KEY / DASHSCOPE_API_KEY\n```\n\n### 3. Generate V2 datasets\n\n```bash\npython src/data_prep_v2.py\n```\n\n或直接运行:\n\n```text\nnotebooks/v2/01_data_preparation_v2.ipynb\n```\n\n### 4. Run V2 evaluation\n\n```text\nnotebooks/v2/02_eval_runner_v2.ipynb\n```\n\n### 5. Run V2 analysis and report\n\n```text\nnotebooks/v2/03_analysis_visualization_v2.ipynb\nnotebooks/v2/04_report_v2.ipynb\n```\n\nV2 关键产物路径:\n\n- `results/v2/raw/raw_results.csv`\n- `results/v2/processed/scored_results.csv`\n- `results/v2/processed/summary_by_model.csv`\n- `results/v2/processed/summary_by_model_variant.csv`\n- `results/v2/processed/summary_by_model_length.csv`\n- `results/v2/processed/summary_by_model_task.csv`\n- `results/v2/processed/summary_by_model_badcase_taxonomy.csv`\n- `results/v2/processed/summary_by_badcase_taxonomy.csv`\n- `results/v2/processed/badcase_examples.csv`\n- `results/v2/processed/real_task_subset_roadmap.csv`\n- `results/v2/figures/*.png`\n\n---\n\n## Current Limits\n\n- `multi_hop` 已正式进入统一报告,但当前只有 12 条结果(4 条 / 模型),更适合作为 real-task pilot,而不是最终泛化排序依据。\n- Kimi 在 32K 上的极差结果,在当前配置下更像稳定失效信号;但如果要追到根因,仍需要单独排查模型接口、提示词与上下文策略。\n- badcase taxonomy 已经能指导下一轮数据策略,但规则仍是启发式首版,后续值得补更细的抽错值 / 单位混淆 / 时间推理子类。\n\n---\n\n## References\n\n- [Lost in the Middle (Liu et al., 2023)](https://arxiv.org/abs/2307.03172)\n- [RULER: What's the Real Context Window of Your LLM? (Hsieh et al., 2024)](https://arxiv.org/abs/2404.06654)\n- [Needle in a Haystack (Kamradt, 2023)](https://github.com/gkamradt/LLMTest_NeedleInAHaystack)\n"}, "b572b71131b189bdc57ffe9b894455c0336c3a76": {"t": 1785772159.4898732, "n": 5607, "h": "f8b3597a9868ec62", "c": "# LLM 长上下文能力评测框架 V2\n\n[![Lint](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/actions/workflows/lint.yml/badge.svg)](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/actions/workflows/lint.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![V2 Samples](https://img.shields.io/badge/v2_samples-1050-blue)](#v2-results)\n[![Models](https://img.shields.io/badge/models-3-green)](#v2-results)\n[![Repeats](https://img.shields.io/badge/repeats-10-orange)](#methodology)\n[![Status](https://img.shields.io/badge/status-v2_published-success)](#v2-results)\n\n> 面向中文长上下文场景的 **V2 基准仓库**。这一版把单格重复数从 3 提高到 10,并引入 `style_aligned`、`numeric_confusable`、`multi_key` 三类更难的中文 NIAH 变体。\n>\n> 当前仓库已经包含 **完整 V2 结果**:3 个模型、5 个上下文长度、7 个深度点、10 次重复,共 **1050 条有效 NIAH 评测结果**,附带 `results/v2/` 下的汇总表与图表。\n\nV1 基线仓库见:[llm-long-context-eval-zh](https://github.com/melody-ling-L/llm-long-context-eval-zh)\n\n---\n\n## GitHub 直接查看\n\n- GitHub 渲染报告:[`results/v2/report/04_report_v2.executed.ipynb`](results/v2/report/04_report_v2.executed.ipynb)\n- 源 notebook:[`notebooks/v2/04_report_v2.ipynb`](notebooks/v2/04_report_v2.ipynb)\n- HTML 下载版:[`v2.0.0 HTML 报告`](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/releases/download/v2.0.0/llm-long-context-eval-zh-V2-report.html)\n\n---\n\n## V2 Results\n\n| DeepSeek | Kimi | Qwen |\n|---|---|---|\n| ![DeepSeek V2 Heatmap](results/v2/figures/niah_heatmap_deepseek.png) | ![Kimi V2 Heatmap](results/v2/figures/niah_heatmap_kimi.png) | ![Qwen V2 Heatmap](results/v2/figures/niah_heatmap_qwen.png) |\n\n| Accuracy by Length with 95% CI | Efficiency Tradeoff |\n|---|---|\n| ![Accuracy by Length with 95% CI](results/v2/figures/accuracy_by_length_with_ci.png) | ![Efficiency Tradeoff](results/v2/figures/efficiency_tradeoff.png) |\n\n### Headline Metrics\n\n| 模型 | N | EM | Contains | 95% CI | 平均延迟 | 平均输出 tokens | 单位命中成本 |\n|---|---:|---:|---:|---:|---:|---:|---:|\n| DeepSeek | 350 | 61.1% | **90.6%** | 87.1% - 93.2% | **0.73s** | 4.8 | **¥0.0057 / hit** |\n| Kimi | 350 | 58.9% | 63.1% | 58.0% - 68.0% | 1.06s | **4.5** | ¥0.3919 / hit |\n| Qwen | 350 | **80.0%** | 81.4% | 77.0% - 85.2% | 7.14s | 5.5 | ¥0.0397 / hit |\n\n### Variant Breakdown\n\n| 模型 | style_aligned | numeric_confusable | multi_key |\n|---|---:|---:|---:|\n| DeepSeek | **94.0%** | 86.0% | 91.7% |\n| Kimi | 69.8% | 53.5% | 65.8% |\n| Qwen | 89.7% | 62.3% | **91.7%** |\n\n### Key Findings\n\n- **DeepSeek 在 V2 中拿到了最高的 Contains 和最低的单位命中成本。** 90.6% 的 Contains 配合 ¥0.0057 / hit,使它成为当前这版 V2 中最强的综合效率模型。\n- **`numeric_confusable` 是平均最难的变体。** 这说明相近数字 / 字符串干扰比 style 对齐或多 key 干扰更稳定地击穿检索表现,应该被视为 V2 的 headline insight。\n- **Kimi 在 32K 上不是轻微波动,而是接近稳定失效。** 当前 32K 汇总为 0.0%,Wilson 95% CI 上界也只有 5.2%,更像真实塌陷而不是偶然抽样结果。\n- **16K / 32K 在 V2 中不再表现为“所有模型统一退化”。** DeepSeek 在 32K 出现强反弹,Qwen 在 16K 和 32K 基本持平,Kimi 则在 32K 崩塌。这说明更高重复数确实把“模型差异”放大了出来。\n\n---\n\n## Methodology\n\nV2 相比 V1 的关键变化:\n\n1. 将单格重复数从 3 提高到 10,使 `context_length × depth_pct` 的统计更稳。\n2. 引入三类更难的中文 NIAH 变体:\n - `style_aligned`:needle 与上下文文风更接近。\n - `numeric_confusable`:存在多个相近数字或近义指标,不能靠关键词秒取。\n - `multi_key`:同时插入 target 和 distractor,需要做更精细的定位。\n3. 增加 V2 效率指标:`response_chars`、`completion_tokens`、`row_cost_cny`、`cost_per_contains_hit_cny`、`contains_per_1k_output_tokens`。\n4. 所有 V2 数据、结果和 notebook 都与 V1 隔离,避免覆盖既有结论。\n\n本轮完整 V2 NIAH 规模为:\n\n- 3 个模型:DeepSeek / Kimi / Qwen\n- 5 个长度:2K / 4K / 8K / 16K / 32K\n- 7 个深度点:0 / 10 / 25 / 50 / 75 / 90 / 100\n- 10 次重复\n- 合计 350 条样本 / 模型,1050 条评测结果\n\n---\n\n## Repository Layout\n\n```text\nllm-long-context-eval-zh-V2/\n├── configs/\n│ ├── eval_config.yaml\n│ └── eval_config_v2.yaml\n├── data/\n│ ├── needles/\n│ │ ├── multihop_qa.json\n│ │ ├── multihop_qa_v2.json\n│ │ └── v2_needle_bank.json\n│ ├── processed/\n│ └── processed/v2/\n├── docs/\n│ ├── eval_design.md\n│ └── eval_design_v2.md\n├── notebooks/\n│ ├── 01_data_preparation.ipynb\n│ ├── 02_eval_runner.ipynb\n│ ├── 03_analysis_visualization.ipynb\n│ ├── 04_report.ipynb\n│ └── v2/\n├── results/\n│ ├── figures/\n│ ├── processed/\n│ ├── raw/\n│ └── v2/\n│ ├── figures/\n│ ├── processed/\n│ └── raw/\n└── src/\n ├── data_prep.py\n ├── data_prep_v2.py\n ├── eval_runner.py\n ├── eval_runner_v2.py\n ├── metrics.py\n ├── metrics_v2.py\n └── visualize.py\n```\n\n---\n\n## Reproduce V2\n\n### 1. Install\n\n```bash\npip install -r requirements.txt\n```\n\n### 2. Configure API keys\n\n```bash\ncp .env.example .env\n# fill in DEEPSEEK_API_KEY / MOONSHOT_API_KEY / DASHSCOPE_API_KEY\n```\n\n### 3. Generate V2 datasets\n\n```bash\npython src/data_prep_v2.py\n```\n\n或直接运行:\n\n```text\nnotebooks/v2/01_data_preparation_v2.ipynb\n```\n\n### 4. Run V2 evaluation\n\n```text\nnotebooks/v2/02_eval_runner_v2.ipynb\n```\n\n### 5. Run V2 analysis and report\n\n```text\nnotebooks/v2/03_analysis_visualization_v2.ipynb\nnotebooks/v2/04_report_v2.ipynb\n```\n\nV2 关键产物路径:\n\n- `results/v2/raw/raw_results.csv`\n- `results/v2/processed/scored_results.csv`\n- `results/v2/processed/summary_by_model.csv`\n- `results/v2/processed/summary_by_model_variant.csv`\n- `results/v2/processed/summary_by_model_length.csv`\n- `results/v2/figures/*.png`\n\n---\n\n## Current Limits\n\n- `multi_hop` 数据集已经生成到 `data/processed/v2/multihop_dataset.jsonl`,但当前对外主结论仍以 NIAH 为主。\n- Kimi 在 32K 上的极差结果,在当前配置下更像稳定失效信号;但如果要追到根因,仍需要单独排查模型接口、提示词与上下文策略。\n- 这版已经比 V1 稳很多,但仍是单轮公开快照;更完整的下一步应该是补齐 multi-hop 结果,并把跨任务摘要纳入同一份报告。\n\n---\n\n## References\n\n- [Lost in the Middle (Liu et al., 2023)](https://arxiv.org/abs/2307.03172)\n- [RULER: What's the Real Context Window of Your LLM? (Hsieh et al., 2024)](https://arxiv.org/abs/2404.06654)\n- [Needle in a Haystack (Kamradt, 2023)](https://github.com/gkamradt/LLMTest_NeedleInAHaystack)\n"}, "c1905b90fcf7d7f9af3962c5b0b50610fca529e1": {"t": 1785772164.2672207, "n": 5235, "h": "51318c784858e8a5", "c": "# LLM 长上下文能力评测框架 V2\n\n[![Lint](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/actions/workflows/lint.yml/badge.svg)](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/actions/workflows/lint.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![V2 Samples](https://img.shields.io/badge/v2_samples-1050-blue)](#v2-results)\n[![Models](https://img.shields.io/badge/models-3-green)](#v2-results)\n[![Repeats](https://img.shields.io/badge/repeats-10-orange)](#methodology)\n[![Status](https://img.shields.io/badge/status-v2_published-success)](#v2-results)\n\n> 面向中文长上下文场景的 **V2 基准仓库**。这一版把单格重复数从 3 提高到 10,并引入 `style_aligned`、`numeric_confusable`、`multi_key` 三类更难的中文 NIAH 变体。\n>\n> 当前仓库已经包含 **完整 V2 结果**:3 个模型、5 个上下文长度、7 个深度点、10 次重复,共 **1050 条有效 NIAH 评测结果**,附带 `results/v2/` 下的汇总表与图表。\n\nV1 基线仓库见:[llm-long-context-eval-zh](https://github.com/melody-ling-L/llm-long-context-eval-zh)\n\n---\n\n## V2 Results\n\n| DeepSeek | Kimi | Qwen |\n|---|---|---|\n| ![DeepSeek V2 Heatmap](results/v2/figures/niah_heatmap_deepseek.png) | ![Kimi V2 Heatmap](results/v2/figures/niah_heatmap_kimi.png) | ![Qwen V2 Heatmap](results/v2/figures/niah_heatmap_qwen.png) |\n\n| Accuracy by Length with 95% CI | Efficiency Tradeoff |\n|---|---|\n| ![Accuracy by Length with 95% CI](results/v2/figures/accuracy_by_length_with_ci.png) | ![Efficiency Tradeoff](results/v2/figures/efficiency_tradeoff.png) |\n\n### Headline Metrics\n\n| 模型 | N | EM | Contains | 95% CI | 平均延迟 | 平均输出 tokens | 单位命中成本 |\n|---|---:|---:|---:|---:|---:|---:|---:|\n| DeepSeek | 350 | 61.1% | **90.6%** | 87.1% - 93.2% | **0.73s** | 4.8 | **¥0.0057 / hit** |\n| Kimi | 350 | 58.9% | 63.1% | 58.0% - 68.0% | 1.06s | **4.5** | ¥0.3919 / hit |\n| Qwen | 350 | **80.0%** | 81.4% | 77.0% - 85.2% | 7.14s | 5.5 | ¥0.0397 / hit |\n\n### Variant Breakdown\n\n| 模型 | style_aligned | numeric_confusable | multi_key |\n|---|---:|---:|---:|\n| DeepSeek | **94.0%** | 86.0% | 91.7% |\n| Kimi | 69.8% | 53.5% | 65.8% |\n| Qwen | 89.7% | 62.3% | **91.7%** |\n\n### Key Findings\n\n- **DeepSeek 在 V2 中拿到了最高的 Contains 和最低的单位命中成本。** 90.6% 的 Contains 配合 ¥0.0057 / hit,使它成为当前这版 V2 中最强的综合效率模型。\n- **`numeric_confusable` 是平均最难的变体。** 这说明相近数字 / 字符串干扰比 style 对齐或多 key 干扰更稳定地击穿检索表现,应该被视为 V2 的 headline insight。\n- **Kimi 在 32K 上不是轻微波动,而是接近稳定失效。** 当前 32K 汇总为 0.0%,Wilson 95% CI 上界也只有 5.2%,更像真实塌陷而不是偶然抽样结果。\n- **16K / 32K 在 V2 中不再表现为“所有模型统一退化”。** DeepSeek 在 32K 出现强反弹,Qwen 在 16K 和 32K 基本持平,Kimi 则在 32K 崩塌。这说明更高重复数确实把“模型差异”放大了出来。\n\n---\n\n## Methodology\n\nV2 相比 V1 的关键变化:\n\n1. 将单格重复数从 3 提高到 10,使 `context_length × depth_pct` 的统计更稳。\n2. 引入三类更难的中文 NIAH 变体:\n - `style_aligned`:needle 与上下文文风更接近。\n - `numeric_confusable`:存在多个相近数字或近义指标,不能靠关键词秒取。\n - `multi_key`:同时插入 target 和 distractor,需要做更精细的定位。\n3. 增加 V2 效率指标:`response_chars`、`completion_tokens`、`row_cost_cny`、`cost_per_contains_hit_cny`、`contains_per_1k_output_tokens`。\n4. 所有 V2 数据、结果和 notebook 都与 V1 隔离,避免覆盖既有结论。\n\n本轮完整 V2 NIAH 规模为:\n\n- 3 个模型:DeepSeek / Kimi / Qwen\n- 5 个长度:2K / 4K / 8K / 16K / 32K\n- 7 个深度点:0 / 10 / 25 / 50 / 75 / 90 / 100\n- 10 次重复\n- 合计 350 条样本 / 模型,1050 条评测结果\n\n---\n\n## Repository Layout\n\n```text\nllm-long-context-eval-zh-V2/\n├── configs/\n│ ├── eval_config.yaml\n│ └── eval_config_v2.yaml\n├── data/\n│ ├── needles/\n│ │ ├── multihop_qa.json\n│ │ ├── multihop_qa_v2.json\n│ │ └── v2_needle_bank.json\n│ ├── processed/\n│ └── processed/v2/\n├── docs/\n│ ├── eval_design.md\n│ └── eval_design_v2.md\n├── notebooks/\n│ ├── 01_data_preparation.ipynb\n│ ├── 02_eval_runner.ipynb\n│ ├── 03_analysis_visualization.ipynb\n│ ├── 04_report.ipynb\n│ └── v2/\n├── results/\n│ ├── figures/\n│ ├── processed/\n│ ├── raw/\n│ └── v2/\n│ ├── figures/\n│ ├── processed/\n│ └── raw/\n└── src/\n ├── data_prep.py\n ├── data_prep_v2.py\n ├── eval_runner.py\n ├── eval_runner_v2.py\n ├── metrics.py\n ├── metrics_v2.py\n └── visualize.py\n```\n\n---\n\n## Reproduce V2\n\n### 1. Install\n\n```bash\npip install -r requirements.txt\n```\n\n### 2. Configure API keys\n\n```bash\ncp .env.example .env\n# fill in DEEPSEEK_API_KEY / MOONSHOT_API_KEY / DASHSCOPE_API_KEY\n```\n\n### 3. Generate V2 datasets\n\n```bash\npython src/data_prep_v2.py\n```\n\n或直接运行:\n\n```text\nnotebooks/v2/01_data_preparation_v2.ipynb\n```\n\n### 4. Run V2 evaluation\n\n```text\nnotebooks/v2/02_eval_runner_v2.ipynb\n```\n\n### 5. Run V2 analysis and report\n\n```text\nnotebooks/v2/03_analysis_visualization_v2.ipynb\nnotebooks/v2/04_report_v2.ipynb\n```\n\nV2 关键产物路径:\n\n- `results/v2/raw/raw_results.csv`\n- `results/v2/processed/scored_results.csv`\n- `results/v2/processed/summary_by_model.csv`\n- `results/v2/processed/summary_by_model_variant.csv`\n- `results/v2/processed/summary_by_model_length.csv`\n- `results/v2/figures/*.png`\n\n---\n\n## Current Limits\n\n- `multi_hop` 数据集已经生成到 `data/processed/v2/multihop_dataset.jsonl`,但当前对外主结论仍以 NIAH 为主。\n- Kimi 在 32K 上的极差结果,在当前配置下更像稳定失效信号;但如果要追到根因,仍需要单独排查模型接口、提示词与上下文策略。\n- 这版已经比 V1 稳很多,但仍是单轮公开快照;更完整的下一步应该是补齐 multi-hop 结果,并把跨任务摘要纳入同一份报告。\n\n---\n\n## References\n\n- [Lost in the Middle (Liu et al., 2023)](https://arxiv.org/abs/2307.03172)\n- [RULER: What's the Real Context Window of Your LLM? (Hsieh et al., 2024)](https://arxiv.org/abs/2404.06654)\n- [Needle in a Haystack (Kamradt, 2023)](https://github.com/gkamradt/LLMTest_NeedleInAHaystack)\n"}, "06cba914a50f065bcc50450cfb826e649e9559ca": {"t": 1785772166.0554368, "n": 10688, "h": "203579ecd6170c56", "c": "# LLM 长上下文能力评测框架 V2\n\n[![Lint](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/actions/workflows/lint.yml/badge.svg)](https://github.com/melody-ling-L/llm-long-context-eval-zh-V2/actions/workflows/lint.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![V2 Samples](https://img.shields.io/badge/v2_samples-1050-blue)](#v2-results)\n[![Models](https://img.shields.io/badge/models-3-green)](#v2-results)\n[![Repeats](https://img.shields.io/badge/repeats-10-orange)](#methodology)\n[![Status](https://img.shields.io/badge/status-v2_published-success)](#v2-results)\n\n> 面向中文长上下文场景的 **V2 基准仓库**,在 V1 的基础上把重复数从 3 提升到 10,并引入 `style_aligned`、`numeric_confusable`、`multi_key` 三类更难的 NIAH 变体。\n>\n> 当前仓库已经包含 **完整 V2 结果**:3 个模型、5 个上下文长度、7 个深度点、10 次重复,共 **1050 条有效 NIAH 评测结果**,并附带 `results/v2/` 下的汇总表和图表。\n\nV1 基线仓库见:[llm-long-context-eval-zh](https://github.com/melody-ling-L/llm-long-context-eval-zh)\n\n---\n\n## V2 Results\n\n| DeepSeek | Kimi | Qwen |\n|---|---|---|\n| ![DeepSeek V2 Heatmap](results/v2/figures/niah_heatmap_deepseek.png) | ![Kimi V2 Heatmap](results/v2/figures/niah_heatmap_kimi.png) | ![Qwen V2 Heatmap](results/v2/figures/niah_heatmap_qwen.png) |\n\n| Accuracy by Length | Efficiency Tradeoff |\n|---|---|\n| ![Accuracy by Length](results/v2/figures/accuracy_by_length.png) | ![Efficiency Tradeoff](results/v2/figures/efficiency_tradeoff.png) |\n\n### Headline Metrics\n\n| 模型 | N | EM | Contains | 95% CI | 平均延迟 | 平均输出 tokens | 单位命中成本 |\n|---|---:|---:|---:|---:|---:|---:|---:|\n| DeepSeek | 350 | 61.1% | **90.6%** | 87.1% - 93.2% | **0.73s** | 4.8 | **¥0.0057 / hit** |\n| Kimi | 350 | 58.9% | 63.1% | 58.0% - 68.0% | 1.06s | **4.5** | ¥0.3919 / hit |\n| Qwen | 350 | **80.0%** | 81.4% | 77.0% - 85.2% | 7.14s | 5.5 | ¥0.0397 / hit |\n\n### Variant Breakdown\n\n| 模型 | style_aligned | numeric_confusable | multi_key |\n|---|---:|---:|---:|\n| DeepSeek | **94.0%** | 86.0% | 91.7% |\n| Kimi | 69.8% | 53.5% | 65.8% |\n| Qwen | 89.7% | 62.3% | **91.7%** |\n\n### Key Findings\n\n- **DeepSeek 在 V2 中拿到了最高的 Contains 和最低的单位命中成本。** 90.6% 的 Contains 配合 ¥0.0057 / hit,使它成为当前这版 V2 中最强的综合效率模型。\n- **Qwen 的严格精度仍然最高,但效率明显弱于 DeepSeek。** 它的 EM 达到 80.0%,说明答案更短、更贴近标准字符串;但平均延迟和单位成本都更高。\n- **Kimi 对更难变体和更长长度更脆弱。** `numeric_confusable` 是三类变体里最难的,而 Kimi 在 32K 上已经出现明显塌陷,当前 32K 汇总为 0.0%。\n- **16K / 32K 在 V2 中不再表现为“所有模型统一退化”。** DeepSeek 在 32K 出现强反弹,Qwen 在 16K 和 32K 持平,Kimi 则在 32K 崩塌。这说明更高重复数确实把“模型差异”放大了出来。\n\n---\n\n## Methodology\n\nV2 相比 V1 的关键变化:\n\n1. 将单格重复数从 3 提高到 10,使 `context_length × depth_pct` 的统计更稳。\n2. 引入三类更难的中文 NIAH 变体:\n - `style_aligned`:needle 与上下文文风更接近。\n - `numeric_confusable`:存在多个相近数字或近义指标,不能靠关键词秒取。\n - `multi_key`:同时插入 target 和 distractor,需要做更精细的定位。\n3. 增加 V2 效率指标:`response_chars`、`completion_tokens`、`row_cost_cny`、`cost_per_contains_hit_cny`、`contains_per_1k_output_tokens`。\n4. 所有 V2 数据、结果和 notebook 都与 V1 隔离,避免覆盖既有结论。\n\n本轮完整 V2 NIAH 规模为:\n\n- 3 个模型:DeepSeek / Kimi / Qwen\n- 5 个长度:2K / 4K / 8K / 16K / 32K\n- 7 个深度点:0 / 10 / 25 / 50 / 75 / 90 / 100\n- 10 次重复\n- 合计 350 条样本 / 模型,1050 条评测结果\n\n---\n\n## Repository Layout\n\n```text\nllm-long-context-eval-zh-V2/\n├── configs/\n│ ├── eval_config.yaml\n│ └── eval_config_v2.yaml\n├── data/\n│ ├── needles/\n│ │ ├── multihop_qa.json\n│ │ ├── multihop_qa_v2.json\n│ │ └── v2_needle_bank.json\n│ ├── processed/\n│ └── processed/v2/\n├── docs/\n│ ├── eval_design.md\n│ └── eval_design_v2.md\n├── notebooks/\n│ ├── 01_data_preparation.ipynb\n│ ├── 02_eval_runner.ipynb\n│ ├── 03_analysis_visualization.ipynb\n│ ├── 04_report.ipynb\n│ └── v2/\n├── results/\n│ ├── figures/\n│ ├── processed/\n│ ├── raw/\n│ └── v2/\n│ ├── figures/\n│ ├── processed/\n│ └── raw/\n└── src/\n\t├── data_prep.py\n\t├── data_prep_v2.py\n\t├── eval_runner.py\n\t├── eval_runner_v2.py\n\t├── metrics.py\n\t├── metrics_v2.py\n\t└── visualize.py\n```\n\n---\n\n## Reproduce V2\n\n### 1. Install\n\n```bash\npip install -r requirements.txt\n```\n\n### 2. Configure API keys\n\n```bash\ncp .env.example .env\n# fill in DEEPSEEK_API_KEY / MOONSHOT_API_KEY / DASHSCOPE_API_KEY\n```\n\n### 3. Generate V2 datasets\n\n```bash\npython src/data_prep_v2.py\n```\n\n或直接运行:\n\n```text\nnotebooks/v2/01_data_preparation_v2.ipynb\n```\n\n### 4. Run V2 evaluation\n\n```text\nnotebooks/v2/02_eval_runner_v2.ipynb\n```\n\n### 5. Run V2 analysis and report\n\n```text\nnotebooks/v2/03_analysis_visualization_v2.ipynb\nnotebooks/v2/04_report_v2.ipynb\n```\n\nV2 关键产物路径:\n\n- `results/v2/raw/raw_results.csv`\n- `results/v2/processed/scored_results.csv`\n- `results/v2/processed/summary_by_model.csv`\n- `results/v2/processed/summary_by_model_variant.csv`\n- `results/v2/processed/summary_by_model_length.csv`\n- `results/v2/figures/*.png`\n\n---\n\n## Current Limits\n\n- `multi_hop` 数据集已经生成到 `data/processed/v2/multihop_dataset.jsonl`,但当前对外主结论仍以 NIAH 为主。\n- Kimi 在 32K 的结果当前极差,这很可能是真实退化,也可能意味着该模型需要进一步单独排查接口或上下文策略。\n- 这版已经比 V1 稳很多,但仍是单轮公开快照;更完整的下一步应该是补齐 multi-hop 结果,并把跨任务摘要纳入同一份报告。\n\n---\n\n## References\n\n- [Lost in the Middle (Liu et al., 2023)](https://arxiv.org/abs/2307.03172)\n- [RULER: What's the Real Context Window of Your LLM? (Hsieh et al., 2024)](https://arxiv.org/abs/2404.06654)\n- [Needle in a Haystack (Kamradt, 2023)](https://github.com/gkamradt/LLMTest_NeedleInAHaystack)\n# LLM 长上下文能力评测框架\n\n[![Lint](https://github.com/melody-ling-L/llm-long-context-eval-zh/actions/workflows/lint.yml/badge.svg)](https://github.com/melody-ling-L/llm-long-context-eval-zh/actions/workflows/lint.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![Samples](https://img.shields.io/badge/samples-315-blue)](#最终结果--final-v1)\n[![Models](https://img.shields.io/badge/models-3-green)](#最终结果--final-v1)\n[![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen)](#最终结果--final-v1)\n[![Budget](https://img.shields.io/badge/budget-¥5~15%2Fmodel-orange)](#预算估算)\n[![Status](https://img.shields.io/badge/status-final_v1-success)](#最终结果--final-v1)\n\n> 面向中文长上下文场景的 NIAH / 位置偏差评测框架,用于验证 **\"Lost in the Middle\"** 是否稳定出现,以及不同模型是否真的能把长上下文用起来。\n>\n> 当前 README 展示的是 **final v1** 结果:已完成 **315 / 315** 条有效样本,覆盖率 **100%**。这版结论可以作为项目定稿发布;下一步优化重点不再是“补齐数据”,而是提升统计置信度和评测难度。\n\n---\n\n## 最终结果 / Final v1\n\n| DeepSeek-V3 | Kimi | Qwen-Long |\n|---|---|---|\n| ![DeepSeek Heatmap](results/figures/niah_heatmap_deepseek.png) | ![Kimi Heatmap](results/figures/niah_heatmap_kimi.png) | ![Qwen Heatmap](results/figures/niah_heatmap_qwen.png) |\n\n本轮完整评测共 **315 条有效样本**:3 个模型 × 5 个上下文长度 × 7 个深度点 × 3 次重复。每个模型在每个 `context_length × depth_pct` 格子中都恰好有 **3 次重复**,数据已经齐平。\n\n| 模型 | N | EM | Contains | Gap (Contains - EM) | 平均延迟 |\n|------|:--:|:--:|:--------:|:-------------------:|:-------:|\n| Qwen-Long | 105 | **80.0%** | **82.9%** | **2.9pp** | 1.10s |\n| DeepSeek-V3 | 105 | 64.8% | **82.9%** | 18.1pp | **1.01s** |\n| Kimi (Moonshot) | 105 | 65.7% | 76.2% | 10.5pp | 1.70s |\n\n### Key Findings\n\n- **位置偏差被完整复现,但形状更接近 W 型而不是标准 U 型。** 整体准确率在 depth=0% / 10% 时最高(91.1% / 86.7%),在 50% 处降到最低点(73.3%),75% 仍处低位(75.6%),随后在 90%-100% 回升到 80.0%。\n- **Qwen 的严格精度最高,DeepSeek 的综合效率最佳。** Qwen 的 EM 达到 80.0%,而 DeepSeek 用 1.01s 的平均延迟拿到了与 Qwen 持平的 Contains(82.9%);如果业务更看重“答对且答得短”,Qwen 更稳,如果更看重吞吐与成本,DeepSeek 更实用。\n- **Kimi 在长上下文下退化最明显。** Kimi 的 Contains 只有 76.2%,且在 8K 与 32K 场景都掉到 66.7%,同时平均延迟 1.70s,是三者中最慢的一档。\n- **16K 是这一轮中文 NIAH 的共同峰值。** DeepSeek 与 Qwen 在 16K 都达到 95.2%,Kimi 也达到 90.5%;当窗口扩到 32K 后,三个模型都出现回落,说明“支持更长 context window”不等于“对更长上下文的稳定利用”。\n\n## 实验局限 / Limitations\n\n- 这版数据已经完整,但**每个格子仍只有 3 次重复**。它足以支撑 v1 的方向性结论,却不足以对局部异常点做强统计推断;下一版应把重复数提升到 `N >= 10`。\n- 当前结果呈现 **W 型 / 双低谷结构**,而不是英文文献中的标准 U 型。这可能反映中文长文本的注意力分布差异,也可能仍受小样本波动影响,需要更高重复数才能做稳健判断。\n- 这版 NIAH 的 needle 与 haystack 风格差异较大,模型可能部分依赖关键词检索,而不是真正的长程语义整合。下一版需要引入**风格对齐的 needle**和 **multi-key NIAH**,降低模式匹配带来的虚高准确率。\n- EM 与 Contains 的差值不只是“评分松紧差异”,它也在测量模型的**答案简洁度**。后续版本应把答案长度、输出 token 成本与两类准确率一起纳入分析,而不只盯着正确率本身。\n\n## V2 Roadmap\n\n1. 把单格重复数从 3 提升到 10,收窄置信区间,验证 16K / 32K 段是否真的存在反弹或塌陷。\n2. 引入风格对齐的 needle、真假难辨的数值 needle,以及 multi-key NIAH,降低关键词检索偏置。\n3. 增加答案长度、输出 token、单位正确率成本等指标,把“答对”与“答得省”分开看。\n4. 扩展多跳推理和跨领域文档,验证结论能否从 NIAH 泛化到更贴近真实业务的中文长文档场景。\n\n---\n\n## 项目简介\n\n本项目评测主流 LLM(DeepSeek-V3、Kimi、Qwen-Long)在长上下文场景下的真实能力:\n- 官宣支持 128K,但模型真的能**用**这 128K 吗?\n- 信息藏在文档**中间**时,模型是否会\"失忆\"?\n\n---\n\n## 评测维度\n\n| 维度 | 说明 | 关键指标 |\n|---|---|---|\n| **NIAH** | Needle in a Haystack,在不同位置插入关键信息 | Accuracy @depth × length |\n| **多跳推理** | 信息分散在文档多处,需综合推理 | Multi-hop Accuracy |\n| **位置偏差** | 信息在开头/中间/结尾的准确率差异 | Position Bias Score |\n| **跨模型对比** | DeepSeek-V3 vs Kimi vs Qwen-Long | Δ Accuracy |\n\n---\n\n## 项目结构\n\n```\nEval/\n├── configs/\n│ └── eval_config.yaml # 模型配置、评测参数\n├── data/\n│ ├── raw/ # 放入原始长文档 (.txt / .md)\n│ ├── needles/ # 多跳推理 QA 标注文件\n│ └── processed/ # 生成的数据集 .jsonl\n├── src/\n│ ├── data_prep.py # 构造 NIAH / 多跳数据集\n│ ├── eval_runner.py # 调用模型 API,存储结果\n│ ├── metrics.py # EM / Contains 评分\n│ └── visualize.py # 热力图、折线图、位置偏差图\n├── notebooks/\n│ ├── 01_data_preparation.ipynb\n│ ├── 02_eval_runner.ipynb\n│ ├── 03_analysis_visualization.ipynb\n│ └── 04_report.ipynb\n├── results/\n│ ├── raw/ # 原始 API 结果 .csv\n│ ├── processed/ # 评分后结果 .csv\n│ └── figures/ # 可视化图表\n├── docs/\n│ └── eval_design.md # 评测方案设计文档\n├── .env.example # API Key 配置模板\n└── requirements.txt\n```\n\n---\n\n## 快速开始\n\n### 1. 安装依赖\n```bash\npip install -r requirements.txt\n```\n\n### 2. 配置 API Key\n```bash\ncp .env.example .env\n# 编辑 .env,填入各模型 API Key\n```\n\n### 3. 准备数据\n在 `data/raw/` 放入中文长文档(财报 PDF 转文本、论文、小说等),然后:\n```bash\npython src/data_prep.py\n```\n\n### 4. 运行评测(推荐在 Notebook 中逐步执行)\n```\nnotebooks/01_data_preparation.ipynb → 构造数据集\nnotebooks/02_eval_runner.ipynb → 调用模型 API\nnotebooks/03_analysis_visualization.ipynb → 分析 + 可视化\n```\n\n<details>\n<summary>如何复现当前 final v1 结果</summary>\n\n1. 运行 `notebooks/01_data_preparation.ipynb`,生成 `data/processed/niah_dataset.jsonl`。\n2. 运行 `notebooks/02_eval_runner.ipynb`,保持 `RESUME=True`,直到 `results/raw/raw_results.csv` 达到 315 条目标样本。\n3. 运行 `notebooks/03_analysis_visualization.ipynb`,确认 Step 1 输出 coverage = 100%,并生成 `results/figures/` 下的全部图表。\n4. 最后运行 `notebooks/04_report.ipynb`,导出最终报告 HTML。\n\n</details>\n\n---\n\n## 预算估算\n\n| 模型 | 约 200 样本 × 平均 32K tokens |\n|---|---|\n| DeepSeek-V3 | ~¥5 |\n| Kimi (moonshot-v1-128k) | ~¥15 |\n| Qwen-Long | ~¥5 |\n\n---\n\n## 参考论文\n\n- [Lost in the Middle (Liu et al., 2023)](https://arxiv.org/abs/2307.03172)\n- [RULER: What's the Real Context Window of Your LLM? (Hsieh et al., 2024)](https://arxiv.org/abs/2404.06654)\n- [Needle in a Haystack (Kamradt, 2023)](https://github.com/gkamradt/LLMTest_NeedleInAHaystack)\n\n---\n\n## 简历描述模板\n\n> **LLM 长上下文能力评测项目** | 个人项目\n> - 设计 4 维度评测框架(NIAH、多跳推理、位置偏差、跨模型对比),覆盖 200+ 测试样本\n> - 在 DeepSeek-V3、Kimi、Qwen-Long 上定量验证 \"Lost in the Middle\" 在中文场景的表现\n> - 输出位置-准确率热力图等可视化分析报告,[GitHub 链接]\n"}, "f2ada1255bd5c75eabccc605bf9d46e909f481b9": {"t": 1785772169.2650871, "n": 5535, "h": "654e1e9f23377661", "c": "# LLM 长上下文能力评测框架\n\n[![Lint](https://github.com/melody-ling-L/llm-long-context-eval-zh/actions/workflows/lint.yml/badge.svg)](https://github.com/melody-ling-L/llm-long-context-eval-zh/actions/workflows/lint.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![Samples](https://img.shields.io/badge/samples-315-blue)](#最终结果--final-v1)\n[![Models](https://img.shields.io/badge/models-3-green)](#最终结果--final-v1)\n[![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen)](#最终结果--final-v1)\n[![Budget](https://img.shields.io/badge/budget-¥5~15%2Fmodel-orange)](#预算估算)\n[![Status](https://img.shields.io/badge/status-final_v1-success)](#最终结果--final-v1)\n\n> 面向中文长上下文场景的 NIAH / 位置偏差评测框架,用于验证 **\"Lost in the Middle\"** 是否稳定出现,以及不同模型是否真的能把长上下文用起来。\n>\n> 当前 README 展示的是 **final v1** 结果:已完成 **315 / 315** 条有效样本,覆盖率 **100%**。这版结论可以作为项目定稿发布;下一步优化重点不再是“补齐数据”,而是提升统计置信度和评测难度。\n\n---\n\n## 最终结果 / Final v1\n\n| DeepSeek-V3 | Kimi | Qwen-Long |\n|---|---|---|\n| ![DeepSeek Heatmap](results/figures/niah_heatmap_deepseek.png) | ![Kimi Heatmap](results/figures/niah_heatmap_kimi.png) | ![Qwen Heatmap](results/figures/niah_heatmap_qwen.png) |\n\n本轮完整评测共 **315 条有效样本**:3 个模型 × 5 个上下文长度 × 7 个深度点 × 3 次重复。每个模型在每个 `context_length × depth_pct` 格子中都恰好有 **3 次重复**,数据已经齐平。\n\n| 模型 | N | EM | Contains | Gap (Contains - EM) | 平均延迟 |\n|------|:--:|:--:|:--------:|:-------------------:|:-------:|\n| Qwen-Long | 105 | **80.0%** | **82.9%** | **2.9pp** | 1.10s |\n| DeepSeek-V3 | 105 | 64.8% | **82.9%** | 18.1pp | **1.01s** |\n| Kimi (Moonshot) | 105 | 65.7% | 76.2% | 10.5pp | 1.70s |\n\n### Key Findings\n\n- **位置偏差被完整复现,但形状更接近 W 型而不是标准 U 型。** 整体准确率在 depth=0% / 10% 时最高(91.1% / 86.7%),在 50% 处降到最低点(73.3%),75% 仍处低位(75.6%),随后在 90%-100% 回升到 80.0%。\n- **Qwen 的严格精度最高,DeepSeek 的综合效率最佳。** Qwen 的 EM 达到 80.0%,而 DeepSeek 用 1.01s 的平均延迟拿到了与 Qwen 持平的 Contains(82.9%);如果业务更看重“答对且答得短”,Qwen 更稳,如果更看重吞吐与成本,DeepSeek 更实用。\n- **Kimi 在长上下文下退化最明显。** Kimi 的 Contains 只有 76.2%,且在 8K 与 32K 场景都掉到 66.7%,同时平均延迟 1.70s,是三者中最慢的一档。\n- **16K 是这一轮中文 NIAH 的共同峰值。** DeepSeek 与 Qwen 在 16K 都达到 95.2%,Kimi 也达到 90.5%;当窗口扩到 32K 后,三个模型都出现回落,说明“支持更长 context window”不等于“对更长上下文的稳定利用”。\n\n## 实验局限 / Limitations\n\n- 这版数据已经完整,但**每个格子仍只有 3 次重复**。它足以支撑 v1 的方向性结论,却不足以对局部异常点做强统计推断;下一版应把重复数提升到 `N >= 10`。\n- 当前结果呈现 **W 型 / 双低谷结构**,而不是英文文献中的标准 U 型。这可能反映中文长文本的注意力分布差异,也可能仍受小样本波动影响,需要更高重复数才能做稳健判断。\n- 这版 NIAH 的 needle 与 haystack 风格差异较大,模型可能部分依赖关键词检索,而不是真正的长程语义整合。下一版需要引入**风格对齐的 needle**和 **multi-key NIAH**,降低模式匹配带来的虚高准确率。\n- EM 与 Contains 的差值不只是“评分松紧差异”,它也在测量模型的**答案简洁度**。后续版本应把答案长度、输出 token 成本与两类准确率一起纳入分析,而不只盯着正确率本身。\n\n## V2 Roadmap\n\n1. 把单格重复数从 3 提升到 10,收窄置信区间,验证 16K / 32K 段是否真的存在反弹或塌陷。\n2. 引入风格对齐的 needle、真假难辨的数值 needle,以及 multi-key NIAH,降低关键词检索偏置。\n3. 增加答案长度、输出 token、单位正确率成本等指标,把“答对”与“答得省”分开看。\n4. 扩展多跳推理和跨领域文档,验证结论能否从 NIAH 泛化到更贴近真实业务的中文长文档场景。\n\n---\n\n## 项目简介\n\n本项目评测主流 LLM(DeepSeek-V3、Kimi、Qwen-Long)在长上下文场景下的真实能力:\n- 官宣支持 128K,但模型真的能**用**这 128K 吗?\n- 信息藏在文档**中间**时,模型是否会\"失忆\"?\n\n---\n\n## 评测维度\n\n| 维度 | 说明 | 关键指标 |\n|---|---|---|\n| **NIAH** | Needle in a Haystack,在不同位置插入关键信息 | Accuracy @depth × length |\n| **多跳推理** | 信息分散在文档多处,需综合推理 | Multi-hop Accuracy |\n| **位置偏差** | 信息在开头/中间/结尾的准确率差异 | Position Bias Score |\n| **跨模型对比** | DeepSeek-V3 vs Kimi vs Qwen-Long | Δ Accuracy |\n\n---\n\n## 项目结构\n\n```\nEval/\n├── configs/\n│ └── eval_config.yaml # 模型配置、评测参数\n├── data/\n│ ├── raw/ # 放入原始长文档 (.txt / .md)\n│ ├── needles/ # 多跳推理 QA 标注文件\n│ └── processed/ # 生成的数据集 .jsonl\n├── src/\n│ ├── data_prep.py # 构造 NIAH / 多跳数据集\n│ ├── eval_runner.py # 调用模型 API,存储结果\n│ ├── metrics.py # EM / Contains 评分\n│ └── visualize.py # 热力图、折线图、位置偏差图\n├── notebooks/\n│ ├── 01_data_preparation.ipynb\n│ ├── 02_eval_runner.ipynb\n│ ├── 03_analysis_visualization.ipynb\n│ └── 04_report.ipynb\n├── results/\n│ ├── raw/ # 原始 API 结果 .csv\n│ ├── processed/ # 评分后结果 .csv\n│ └── figures/ # 可视化图表\n├── docs/\n│ └── eval_design.md # 评测方案设计文档\n├── .env.example # API Key 配置模板\n└── requirements.txt\n```\n\n---\n\n## 快速开始\n\n### 1. 安装依赖\n```bash\npip install -r requirements.txt\n```\n\n### 2. 配置 API Key\n```bash\ncp .env.example .env\n# 编辑 .env,填入各模型 API Key\n```\n\n### 3. 准备数据\n在 `data/raw/` 放入中文长文档(财报 PDF 转文本、论文、小说等),然后:\n```bash\npython src/data_prep.py\n```\n\n### 4. 运行评测(推荐在 Notebook 中逐步执行)\n```\nnotebooks/01_data_preparation.ipynb → 构造数据集\nnotebooks/02_eval_runner.ipynb → 调用模型 API\nnotebooks/03_analysis_visualization.ipynb → 分析 + 可视化\n```\n\n<details>\n<summary>如何复现当前 final v1 结果</summary>\n\n1. 运行 `notebooks/01_data_preparation.ipynb`,生成 `data/processed/niah_dataset.jsonl`。\n2. 运行 `notebooks/02_eval_runner.ipynb`,保持 `RESUME=True`,直到 `results/raw/raw_results.csv` 达到 315 条目标样本。\n3. 运行 `notebooks/03_analysis_visualization.ipynb`,确认 Step 1 输出 coverage = 100%,并生成 `results/figures/` 下的全部图表。\n4. 最后运行 `notebooks/04_report.ipynb`,导出最终报告 HTML。\n\n</details>\n\n---\n\n## 预算估算\n\n| 模型 | 约 200 样本 × 平均 32K tokens |\n|---|---|\n| DeepSeek-V3 | ~¥5 |\n| Kimi (moonshot-v1-128k) | ~¥15 |\n| Qwen-Long | ~¥5 |\n\n---\n\n## 参考论文\n\n- [Lost in the Middle (Liu et al., 2023)](https://arxiv.org/abs/2307.03172)\n- [RULER: What's the Real Context Window of Your LLM? (Hsieh et al., 2024)](https://arxiv.org/abs/2404.06654)\n- [Needle in a Haystack (Kamradt, 2023)](https://github.com/gkamradt/LLMTest_NeedleInAHaystack)\n\n---\n\n## 简历描述模板\n\n> **LLM 长上下文能力评测项目** | 个人项目\n> - 设计 4 维度评测框架(NIAH、多跳推理、位置偏差、跨模型对比),覆盖 200+ 测试样本\n> - 在 DeepSeek-V3、Kimi、Qwen-Long 上定量验证 \"Lost in the Middle\" 在中文场景的表现\n> - 输出位置-准确率热力图等可视化分析报告,[GitHub 链接]\n"}}}}