{"notes":[{"id":"model-evaluation/nolima","category":"model-evaluation","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"NoLiMa","subtitle":"言葉の外にある意味","author":"Z. Yuan","paperDate":"2025-02-07","publishedOn":"2026-07-30","paperTitle":"NoLiMa: Long-Context Evaluation Beyond Literal Matching","paperUrl":"https://arxiv.org/abs/2502.05167","bibliography":{"title":"NoLiMa: Long-Context Evaluation Beyond Literal Matching","authors":["Ali Modarressi","Hanieh Deilamsalehy","Franck Dernoncourt","Trung Bui","Ryan Rossi","Seunghyun Yoon","Hinrich Schütze"],"url":"https://arxiv.org/abs/2502.05167","pdfUrl":"https://arxiv.org/pdf/2502.05167v3","codeUrl":"https://github.com/adobe-research/NoLiMa","preprint":{"id":"2502.05167","submittedOn":"2025-02-07","url":"https://arxiv.org/abs/2502.05167"},"publication":{"venue":"ICML","year":2025,"kind":"conference","url":"https://proceedings.mlr.press/v267/modarressi25a.html"},"citation":"@misc{modelevaluationnolima2025,\n  title = {{NoLiMa: Long-Context Evaluation Beyond Literal Matching}},\n  author = {Ali Modarressi and Hanieh Deilamsalehy and Franck Dernoncourt and Trung Bui and Ryan Rossi and Seunghyun Yoon and Hinrich Schütze},\n  year = {2025},\n  eprint = {2502.05167},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2502.05167}\n}\n","citationPath":"/content/papers/citations/model-evaluation/nolima.264a4512e69f.bib"},"thumbnail":{"src":"/content/papers/assets/d3917196027c3729a255d140f88c8ddc4cf99d5ea087de73ead2f387a8befb47.png","width":1440,"height":919},"locale":"ja","path":"/content/papers/ja/model-evaluation/nolima.1519dbfc193d.md","headings":[{"id":"問題の定義","text":"問題の定義","depth":2},{"id":"問題の解決","text":"問題の解決","depth":2},{"id":"同じ語では見つからない針","text":"同じ語では見つからない針","depth":3},{"id":"干し草をきれいにする","text":"干し草をきれいにする","depth":3},{"id":"採点方法","text":"採点方法","depth":3},{"id":"考察","text":"考察","depth":2},{"id":"主な結果","text":"主な結果","depth":3},{"id":"2ホップは1ホップより難しく倒置形は通常形より難しい","text":"2ホップは1ホップより難しく、倒置形は通常形より難しい","depth":3},{"id":"位置が問題か長さが問題か","text":"位置が問題か、長さが問題か","depth":3},{"id":"考えさせると役立つか","text":"考えさせると役立つか","depth":3},{"id":"文字通りの手がかりを戻す","text":"文字通りの手がかりを戻す","depth":3},{"id":"新しいモデルでは","text":"新しいモデルでは？","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"model-evaluation/lost-in-the-middle","relation":"referenced","topic":""}]},{"id":"model-evaluation/lost-in-the-middle","category":"model-evaluation","legacyPath":"","legacySlug":"","legacyPaths":[],"title":"Lost in the Middle","subtitle":"U字の呪い","author":"Z. Yuan","paperDate":"2023-07-06","publishedOn":"2026-06-09","world":"external/lost-in-the-middle","paperTitle":"Lost in the Middle: How Language Models Use Long Contexts","paperUrl":"https://arxiv.org/abs/2307.03172","bibliography":{"title":"Lost in the Middle: How Language Models Use Long Contexts","authors":["Nelson F. Liu","Kevin Lin","John Hewitt","Ashwin Paranjape","Michele Bevilacqua","Fabio Petroni","Percy Liang"],"url":"https://arxiv.org/abs/2307.03172","pdfUrl":"https://arxiv.org/pdf/2307.03172v3","codeUrl":null,"preprint":{"id":"2307.03172","submittedOn":"2023-07-06","url":"https://arxiv.org/abs/2307.03172"},"publication":{"venue":"Transactions of the Association for Computational Linguistics","year":2024,"kind":"journal","url":"https://aclanthology.org/2024.tacl-1.9/"},"citation":"@misc{modelevaluationlostinthemiddle2023,\n  title = {{Lost in the Middle: How Language Models Use Long Contexts}},\n  author = {Nelson F. Liu and Kevin Lin and John Hewitt and Ashwin Paranjape and Michele Bevilacqua and Fabio Petroni and Percy Liang},\n  year = {2023},\n  eprint = {2307.03172},\n  archivePrefix = {arXiv},\n  url = {https://arxiv.org/abs/2307.03172}\n}\n","citationPath":"/content/papers/citations/model-evaluation/lost-in-the-middle.77681ac150c1.bib"},"thumbnail":{"src":"/content/papers/assets/14c392ed0cd20cff36405d2cccc1e1d2e317e1c84de40c4eae37cde79f4a31e3.png","width":1278,"height":425},"locale":"ja","path":"/content/papers/ja/model-evaluation/lost-in-the-middle.d37a07c26237.md","headings":[{"id":"問題の定義","text":"問題の定義","depth":2},{"id":"問題の解決","text":"問題の解決","depth":2},{"id":"複数文書の質問応答","text":"複数文書の質問応答","depth":3},{"id":"キーと値の検索","text":"キーと値の検索","depth":3},{"id":"評価したモデル","text":"評価したモデル","depth":3},{"id":"考察","text":"考察","depth":2},{"id":"u字の曲線","text":"U字の曲線","depth":3},{"id":"長い版は長いコンテキストを使うのも得意か","text":"長い版は、長いコンテキストを使うのも得意か","depth":3},{"id":"文字列を写すだけでも失敗する","text":"文字列を写すだけでも失敗する","depth":3},{"id":"なぜこうなるのか","text":"なぜこうなるのか","depth":3},{"id":"文書をもっと増やすとどうなるか","text":"文書をもっと増やすとどうなるか","depth":3},{"id":"その後の話","text":"その後の話","depth":3},{"id":"結論","text":"結論","depth":2}],"anchorAliases":{},"guide":null,"relatedReading":[{"id":"model-evaluation/nolima","relation":"citing","topic":""}]}],"text":"2024年以降、モデル発表で示されるコンテキスト長は、128K、1M、さらには2M tokenへと伸び続けました。\n\n本当にその長さを読めるか示す際によく使われるのが、**干し草の山から針を探す**（needle-in-a-haystack、NIAH）テストです。大量の無関係な文章に一文を隠し、その内容を尋ねます。\n\n2023年にGreg Kamradtが広めた版では、次の文を隠しました。\n\n> The best thing to do in San Francisco is eat a sandwich and sit in Dolores Park on a sunny day.\n\n質問は、次です。\n\n> What is the most fun thing to do in San Francisco?\n\n気になる点が見えますか。\n\n質問の「San Francisco」が、針にもそのままあります。何も理解せず、同じ語を見つければ、その隣に答えがあります。\n\nミュンヘン大学（LMU Munich）とAdobe Researchによるこの論文は、ICML 2025で発表されました。問いは、**文字通りの手がかりを消しても、モデルは針を見つけられるか**です。\n\n## 問題の定義\n\nまず、既存の長文評価で、質問と答えのある段落がどれほど同じ語を使うか測ります。\n\nROUGE precisionで、質問の語が関連段落にどれだけ現れるかを計算します。高いほど、共有する語が多くなります。\n\n| 評価 | ROUGE-1 | ROUGE-2 | ROUGE-L |\n| --- | ---: | ---: | ---: |\n| Vanilla NIAH | 0.905 | 0.789 | 0.855 |\n| RULER S-NIAH | 0.571 | 0.461 | 0.500 |\n| RULER QA | 0.809 | 0.437 | 0.693 |\n| ∞Bench QA | 0.966 | 0.545 | 0.960 |\n| **NoLiMa** | **0.069** | **0.002** | **0.067** |\n\n*原論文Table 1をもとに整理。*\n\n元のNIAHはROUGE-1が0.905です。質問の語の約9割を針の中で見つけられます。複数文書や長文の質問応答も、低い値ではありません。\n\n注意機構は、繰り返し現れるパターンを思い出すのが得意です。著者らは、語の重複が長文内の情報探索を大幅に簡単にしている可能性を指摘します。宣伝された長さのうち、どれほどが「同じ語を探す」ことで支えられているのでしょう。\n\nそこで、**タスク自体は簡単なのに、文字列照合は役に立たない**評価を目指します。\n\n## 問題の解決\n\n### 同じ語では見つからない針\n\n骨格はNIAHと同じで、一つの針と大量の干し草です。違いは、針と質問の書き方にあります。\n\n例えば針は、\n\n> Actually, Yuki lives next to the Semper Opera House.\n\n質問は、\n\n> Which character has been to Dresden?\n\n質問にはYukiもSemper Opera Houseもなく、針にはDresdenがありません。接点は、**ゼンパー・オーパー（Semper Opera House）はドレスデン（Dresden）にある**という世界知識です。\n\nその関係を思い出して初めて、針と質問がつながり、「Yuki」と答えられます。\n\n質問側のキーワードを$W_q$（ここではDresden）、針側を$W_n$（Semper Opera House）とします。\n\nさらに一段増やすと、**2ホップ**になります。\n\n> Which character has been to the state of Saxony?\n\n今度は、ゼンパー・オーパーはドレスデンにあり、ドレスデンはザクセン州にある、という二段階が必要です。\n\n世界知識のほかに常識を使う針もあります。「Then Yuki mentioned that he has been vegan for years.」に対し、魚料理を食べられない人物を尋ねる例などです。\n\n\n> [!TIP]\n> \n> **針と質問の設計原則**\n> \n> - **関係は簡単にする**。干し草がなければ容易に正解できるようにします。\n> - **人名はランダムに選ぶ**。多様な名前の集合から選び、token化の問題と集団バイアスを減らします。干し草に出た名前は使いません。\n> - **短い導入を付ける**。「Actually,」などで、それまでの文と自然に区切ります。\n> \n> 語順も二種類あります。**通常形**は「Yukiはゼンパー・オーパーの隣に住む」のように名前が先、**倒置形**は「ゼンパー・オーパーの隣にYukiが住む」のようにキーワードが先です。計5組、58の質問・針ペアを用意しました。\n\n\n### 干し草をきれいにする\n\n干し草はオープンライセンスの書籍10冊から作ります。公開本を暗記している可能性を避けるため、丸ごと使わず、ランダムな本から250 token未満の断片をランダムに切り出してつなぎます。\n\n次に重要な清掃があります。二種類の内容を除きます。\n\n1. **質問のキーワードに近すぎる語**。Contrieverで干し草の各語をベクトル化し、各$W_q$に近い上位20語を人手で確認します。それらを含む文を削除します。\n2. **答えとして扱えそうな内容**。約250 tokenの断片と質問をLlama 3.3 70Bへ渡し、答えがあるか探させます。指摘された段落を人が確認して削除し、追加削除が不要になるまで繰り返します。\n\n別の登場人物が偶然ドレスデンへ行っていたら、採点が混乱するためです。\n\n### 採点方法\n\n各長さで針を等間隔の26位置へ置きます。5種類のランダムな干し草、58ペアを組み合わせ、長さごとに7,540試行です。250、500、1Kから32K tokenまで測ります。\n\n答えはすべて人名なので、正しい名前が出力にあれば正解です。\n\n二つの指標を確認しておきます。\n\n**基準スコア（base score）**は、短い三条件250、500、1Kを使います。各ペアについて5種類の干し草を平均し、三つの長さのうち最高値を取り、最後に全質問で平均します。ほとんど妨害がないとき、どれほど答えられるかを表します。\n\n**有効長（effective length）**は、基準スコアの85%以上を維持できる最大の評価長です。\n\nGPT-4oで計算すると、基準は99.3なので閾値は、\n\n$$\n99.3\\times 0.85\\approx 84.4\n$$\n\n各長さの結果は次です。\n\n| 長さ | 1K | 2K | 4K | 8K | 16K | 32K |\n| --- | ---: | ---: | ---: | ---: | ---: | ---: |\n| GPT-4o | 98.1 | 98.0 | 95.7 | 89.2 | 81.6 | 69.7 |\n\n*原論文Table 3から抜粋。*\n\n8Kの89.2は閾値以上、16Kの81.6は下です。したがって有効長は**8K**で、公称128Kと大きく離れます。\n\nモデル自身の基準を使うと、タスク自体の難しさと長さによる劣化を分けられます。短くても苦手なモデルは、基準も閾値も低くなります。\n\n## 考察\n\n### 主な結果\n\n少なくとも128Kへ対応するとする13モデルを測りました。\n\n| モデル | 公称長 | 有効長 | 基準スコア | 32K |\n| --- | ---: | ---: | ---: | ---: |\n| GPT-4o | 128K | 8K | 99.3 | 69.7 |\n| Llama 3.3 70B | 128K | 2K | 97.3 | 42.7 |\n| Llama 3.1 405B | 128K | 2K | 94.7 | 38.0 |\n| Llama 3.1 70B | 128K | 2K | 94.5 | 43.2 |\n| Gemini 1.5 Pro | 2M | 2K | 92.6 | 48.2 |\n| Jamba 1.5 Mini | 256K | <1K | 92.4 | 43.6 |\n| Command R+ | 128K | <1K | 90.9 | 7.4 |\n| Gemini 2.0 Flash | 1M | 4K | 89.4 | 41.0 |\n| Mistral Large 2 | 128K | 2K | 87.9 | 18.8 |\n| Claude 3.5 Sonnet | 200K | 4K | 87.5 | 29.8 |\n| Gemini 1.5 Flash | 1M | <1K | 84.7 | 28.6 |\n| GPT-4o mini | 128K | <1K | 84.8 | 13.7 |\n| Llama 3.1 8B | 128K | 1K | 76.7 | 14.2 |\n\n*原論文Table 3をもとに整理。完全な表には1K～16Kの点数もあります。*\n\n基準スコアを見ると、多くが80～90点台です。針自体は難しくありません。\n\n有効長は、GPT-4oの8Kを除くとすべて4K以下で、2Kや1K未満も多くあります。\n\n公称長と有効長を同じ対数軸へ描くと、差が分かりやすくなります。\n\n[![13モデルの公称コンテキスト長とNoLiMa有効長の比較。多くは128K以上を掲げるが、有効長は2K以下が中心](/content/papers/assets/301381056308491866bcb65df73aa813772991ce8440658451e083053037ac30.png)](/content/papers/assets/301381056308491866bcb65df73aa813772991ce8440658451e083053037ac30.png)\n\n*原論文Table 3の数値から本稿で作図しました。原論文の画像は使っていません。青が有効長、灰色が公称長、白抜きは1K未満です。クリックで拡大できます。*\n\n最後に32Kを見ると、13モデル中11モデルが自分の基準スコアの半分未満へ落ちます。半分を保ったのはGPT-4oとGemini 1.5 Proだけです。\n\n同一モデルを別評価でも比べています。Llama 3.1 70Bの有効長はBABILongで16K、RULERで32Kですが、NoLiMaでは2Kです。\n\n基準が高くても長持ちするとは限りません。Claude 3.5 SonnetとGemini 2.0 FlashはLlama 3.3 70Bより基準が低いのに、有効長は2Kに対して4Kです。4Kの生の点数でも、基準が高い一部モデルを上回ります。\n\n### 2ホップは1ホップより難しく、倒置形は通常形より難しい\n\nGPT-4oとLlama 3.3 70Bで二つの要因を詳しく見ます。\n\n**ホップ数**：同じ長さなら2ホップの方が難しく、長くなるほど差が開きます。GPT-4oは4K以内なら両方に対応できます。\n\n**語順**：「ゼンパー・オーパーの隣にYukiが住む」という倒置形は、「Yukiはゼンパー・オーパーの隣に住む」より難しくなります。\n\n著者らはdecoderの因果的注意と結び付けます。通常形では名前が先に出るので、オペラ座を読んだ位置にYukiの情報も含まれます。質問のDresdenがオペラ座につながれば、Yukiへたどれます。倒置形ではその時点でYukiがまだ出ておらず、名前側の弱い信号へ頼る必要があります。詳しい機構分析は論文の範囲外としています。\n\n### 位置が問題か、長さが問題か\n\n[**Lost in the Middle**](https://arxiv.org/abs/2307.03172)を読んだ人なら、針が中央に来たから悪化したのでは、と考えるかもしれません。\n\n著者らはLlama 3.3 70Bで二種類の位置走査を行いました。\n\n一つは**全範囲の走査**です。0～100%へ針を動かすと、1ホップでは中央が悪い、おなじみの傾向が現れます。2ホップでは、長くなると曲線全体が沈み、冒頭と末尾も悪くなります。\n\nもう一つは**最後の2Kへそろえる**方法です。全文が4Kでも32Kでも、末尾から2K token以内の固定位置へ針を置きます。\n\nこれで針と質問の距離は同じになります。Llama 3.xのRoPEはtoken間の相対距離を見る位置符号化です。位置符号化が原因なら、同じ距離での成績は近くなるはずです。\n\n結果は、最後の2K内での2ホップ曲線は平坦で、位置による差は小さい一方、全文が長くなると曲線全体が下がりました。\n\n距離を固定しても下がるため、主な制約は長さ自体にあると著者らは考えます。注意すべきtokenが増え、文字通りの手がかりがないと、関連事実を探しにくくなるのです。\n\n### 考えさせると役立つか\n\n連想が必要なら、Chain-of-Thought（CoT）で先に推論を書かせてはどうでしょう。\n\nLlama 3.3 70Bで、直接回答と、3文以内の推論を書いてからの回答を比較しました。\n\n| 長さ | 4K | 8K | 16K | 32K |\n| --- | ---: | ---: | ---: | ---: |\n| 1ホップ、直接 | 90.3 | 84.1 | 73.2 | 56.2 |\n| 1ホップ、CoT | 95.6 | 91.1 | 82.6 | 60.6 |\n| 2ホップ、直接 | 70.7 | 57.4 | 42.7 | 25.9 |\n| 2ホップ、CoT | 82.4 | 70.1 | 56.7 | 34.3 |\n\n*原論文Table 4をもとに整理。*\n\nCoTは役立ち、2ホップの改善も大きくなります。ただし2ホップのCoTで、ようやく1ホップの直接回答に近づく程度です。16K以上では依然として成績が低いままです。\n\n質問には一つの手がかりしかなく、さらに簡単なステップへ分けにくいと著者らは説明します。難しいのはドレスデンとオペラ座の関係を思い出すところで、その部分が長文内で詰まります。\n\n最難の10ペアをNoLiMa-Hardとして、推論モデルも測りました。GPT-o1、GPT-o3 Mini、DeepSeek R1-Distill-Llama-70Bは基準がほぼ満点ですが、32Kではすべて50%未満です。GPT-o1は31.1、o3 Miniは18.9、R1蒸留版は20.7でした。\n\n### 文字通りの手がかりを戻す\n\n中心仮説の確認として、手がかりを戻すアブレーションを行います。手がかりを加えると、得点はどう変わるのでしょうか。\n\n著者は、2つの対照条件を設けました。\n\n- **Direct**：元のNIAHのように、針のキーワードを質問にも書く。\n- **Multiple Choice**：質問は変えず、人名の四択を付ける。一つは針、三つは干し草の名前です。これで人名という文字列の接点ができます。\n\n| 設定 | 8K | 16K | 32K |\n| --- | ---: | ---: | ---: |\n| Direct | 98.3 | 98.5 | 98.5 |\n| 1ホップ | 84.1 | 73.2 | 56.2 |\n| 1ホップ＋選択肢 | 98.7 | 97.4 | 93.1 |\n| 2ホップ | 57.4 | 42.7 | 25.9 |\n| 2ホップ＋選択肢 | 96.3 | 94.6 | 87.2 |\n\n*原論文Table 6をもとに整理。モデルはLlama 3.3 70B。*\n\n結果は明確です。Directは32Kでも98.5です。2ホップに選択肢を付けるだけで、32Kが25.9から87.2へ上がります。\n\n同じ手がかりが逆に邪魔もします。$W_q$、例えばDresdenを含むものの、針にも質問にも関係しない文を干し草へ挿入すると、文字列上はこちらの方が答えらしく見えます。この妨害でGPT-4oの有効長は8Kから1Kへ縮み、Llama 3.3 70Bはさらに悪化しました。\n\n### 新しいモデルでは？\n\nv3の付録は新しいモデルを追加し、一部を64K、128Kまで延ばしています。API費用を抑えるため、各長さの位置数は26から11へ減らしました。\n\nGPT-4.1は公称1M、有効長16Kで、128Kでも64.7です。GPT-4oは128Kで56.0、Gemini 2.0 Flashは16.4でした。Llama 4 Scoutは10M対応を掲げますが、有効長は1Kです。\n\n冒頭の脚注では、新モデルで改善はあっても、主な結論は残ると明記しています。公称値よりかなり短い段階から、成績が急速に下がります。\n\n\n> [!NOTE]\n> \n> **自分で評価するときの小さな注意**\n> \n> [**コード**](https://github.com/adobe-research/NoLiMa)とデータは公開済みです。GitHubには、Azure OpenAIで一部の質問を実行すると、既定のフィルターが暴力的内容と判断して中断するという報告がありました。共著者Franck Dernoncourtは、評価ではフィルターを無効にしていたと回答しています。\n> \n> 再現時には、安全機構で止まった問題も誤答として数えられます。失点がモデル自身に由来するか、確認が必要です。\n\n\n## 結論\n\nNoLiMaは、干し草の山から針を探すテストで見落とされがちな近道を取り除きました。質問と針に同じ語はなく、簡単な連想だけで結び付きます。\n\nこの設定では、\n\n1. **公称長と有効長は大きく違う**。13モデル中、有効長8Kに達するのはGPT-4oだけで、32Kでは11モデルが自身の基準の半分未満になります。\n2. **難しいのは連想と長さの組み合わせ**。2ホップは冒頭と末尾も含めて下がり、距離をそろえた実験は位置だけでなく全文の長さを原因として示唆します。\n3. **CoTや推論モデルでも補い切れない**。NoLiMa-Hardの32Kで、三つの推論モデルはすべて50%未満です。\n4. **文字通りの手がかりは大きく効く**。選択肢で2ホップの32Kは25.9から87.2へ上がり、同じ語の妨害ではGPT-4oの有効長が1Kへ縮みます。\n\n著者らは検索とRAGへの含意も述べます。答えを持つ文書は質問とまったく違う表現を使うことがあり、質問に似た語を持つ無関係な文書が、モデルを誤った方向へ導くこともあります。\n\n128Kを入れられるモデルはたくさんあります。質問を言い換えても答えを見つけられるモデルは、ずっと少ないのです。\n","imageSizes":{"/content/papers/assets/301381056308491866bcb65df73aa813772991ce8440658451e083053037ac30.png":{"width":1440,"height":919}}}
