2025年2月、AI研究者チームはNoLiMA 論文を発表しました。これは大規模言語モデルの長文脈処理能力を評価する新しいベンチマークを紹介するものです。

この論文は、従来の Needle-in-a-Haystack (NIAH) ベンチマークに重要な変更を加え、質問と干し草の山(無関係なテキスト)に隠された針(関連情報)との間のリテラルマッチを排除しています。
これは現在の LLM の重要な限界を浮き彫りにしています:表面的なパターンマッチングに大きく依存しており、深い連想推論を行う能力は文脈の長さが増すにつれて急速に低下します。
これらの知見に基づき、私たちは埋め込みモデル、特に jina-embeddings-v3 で同様のパフォーマンスパターンが発生するかどうかを調査することを目指しています。RAG システムの効果は検索モデルの品質に大きく依存するため、2 つの核心的な質問に取り組む制御実験を通じて NoLiMA の研究を拡張しようとしています:
- 埋め込みモデルは、リテラルなキーワードマッチを超えた意味的な飛躍を強制された場合、異なる文脈の長さにわたって needle-in-a-haystack 検索をどのように処理するのか?
- 意味的に類似したコンテンツによる戦略的なクエリ拡張で、このパフォーマンスギャップを緩和できるのか?
LLM で観察された顕著な対比—字句マッチングでは堅牢だが意味的なバリエーションでは脆弱—は、埋め込みベースの検索システムが表面的な用語マッチングを超えて移行する際に同様の課題に直面する可能性を示唆しており、現在の意味検索技術の根本的な限界を明らかにする可能性があります。
tag針と干し草の山の構築
tag針の構築
従来の needle-in-a-haystack テストでは、検索される質問の文言を反映した針を使用します。例えば:
- 質問:「どのキャラクターがドレスデンに行ったことがありますか?」
- 針:「ユキはドレスデンに住んでいます。」
しかし NoLiMA のように、単なるキーワードマッチングではなく意味的な理解をテストしたいので、文書に含まれていない単語を使用して 1 ホップのバリエーションを 2 つの異なる語順で作成します:
- 質問:「どのキャラクターがドレスデンに行ったことがありますか?」
- 針(デフォルト):「実は、ユキはゼンパー歌劇場の隣に住んでいます。」
- 針(反転):「ゼンパー歌劇場はユキが住んでいる場所の隣にあります。」
論文の方法論に従い、以下の例のようにいくつかのカテゴリーにわたって針-質問グループ(1 つの質問、1 つの 1 ホップ針、1 つの反転 1 ホップ針で構成)を生成します:
カテゴリー | 質問 | オリジナルの針(参考用) | 1 ホップ針 | 反転 1 ホップ針 |
---|---|---|---|---|
食事制限 | どのキャラクターが魚料理を食べられませんか? | Alice は魚料理を食べられません。 | その時、Alice は長年ヴィーガンだと述べました。 | ヴィーガンであることは Alice にとって長年重要でした。 |
医療状態 | どのキャラクターが牛乳を飲めませんか? | Bob は牛乳を飲めません。 | Bob は乳糖不耐症だと説明しました。 | 乳糖不耐症は Bob の日常生活に影響を与えていました。 |
言語能力 | どのキャラクターがフランス語を話しますか? | Charlie はフランス語を話します。 | 実は、Charlie はソルボンヌ大学で学びました。 | ソルボンヌ大学で、Charlie は学位を取得しました。 |
職業背景 | どのキャラクターが音楽家ですか? | Diane は音楽家です。 | 2013 年、Diane はシドニー・オペラハウスで指揮を行いました。 | シドニー・オペラハウスの公演は Diane が指揮しました。 |
オリジナルの針(リテラルなキーワードマッチ)は参考用に提供されており、実験では使用されません。
tag干し草の山の構築
10 冊のパブリックドメインの本(各 50,000 トークン以上)から始め、それらから短いスニペット(250 トークン未満)をランダムに連結して、128、256、512、1024、2048、4096、8192 トークンといった様々な長さの干し草の山を作成しました。その後、各干し草の山に 1 つの針を埋め込みました:

より具体的な例として、針「実は、ユキはゼンパー歌劇場の隣に住んでいます」を位置 50 の 128 トークンの干し草の山に入れてみましょう:

jina-embeddings-v3 を使用してテキストを埋め込むと、針のテキストと干し草の山のテキストの類似度スコアは:
Question-Haystack similarity = 0.2391
次に、このスコアを質問とデフォルトの針(干し草の山を作成せず、直接比較)の類似度スコアで割って正規化します:
Question-Needle similarity = 0.3598
Normalized Query-Haystack similarity = 0.2391 / 0.3598 = 0.6644
この正規化は、すべてのモデルが 2 つのテキスト間で同じ類似度スコアを生成するわけではなく、jina-embeddings-v3 は 2 つのテキスト間の類似度を過小評価する傾向があるため必要です。
それぞれの針(デフォルトと反転を含む)について、文脈の長さごとに 10 個の干し草の山を生成し、1 つの干し草の山に 1 つの針を異なる位置に埋め込みました。特定の針と文脈の長さに対して、干し草の山は以下のようになります:

対照実験として、各テスト条件について針のない干し草の山も 1 つ生成しました。合計で 3,234 個の干し草の山です。各干し草の山を jina-embeddings-v3(デフォルトのテキストマッチング LoRA を使用)でエンコードし、それぞれの干し草の山について、トークン数が 8,192(jina-embeddings-v3)その後対応する質問をエンコードしました。
tag評価指標
評価フレームワークでは、異なるコンテキスト長におけるエンベッディングモデルのパフォーマンスを評価するために複数の指標を使用しています:
tag主要指標
正規化類似度スコア
主要な指標は、質問と全体のコンテキスト(質問-干し草山の類似度)間の意味的類似度と、質問とそれに対応するデフォルトのニードル(質問-ニードルの類似度)間のベースライン類似度の両方を考慮した正規化類似度スコアです。この正規化により、モデルのパフォーマンスが絶対的な類似度スコアだけでなく、意味のある参照点に対して相対的に評価されることが保証されます。正規化プロセスでは、質問と対応するニードル間の直接的なコサイン類似度スコア(ベースライン)を計算し、質問-干し草山の類似度をこのベースラインスコアで割ります:
ランダムチャンスとの比較比率
どのエンベッディングモデルでも、異なるクエリ-文書ペア間のコサイン類似度スコアは、クエリが同じ場合にのみ直接比較可能です。そのため、正規化類似度スコアを使用するだけでなく、質問がニードルのない同じ長さのランダムな文章よりも全体の干し草山に対してより類似している頻度も測定します。
tag二次指標
分離分析
この指標は、モデルが関連コンテンツと無関連コンテンツをどの程度区別できるかを評価します。これには、正例(回答を含む文章)と負例(回答を含まない文章)の差を表す平均分離度と、ROC(Receiver Operating Characteristic)曲線下の面積に基づく識別能力を測定するAUC(Area Under the Curve)スコアが含まれます。
位置効果
ニードルの配置がパフォーマンスにどのように影響するかを、位置と類似度スコア間の相関係数、位置間のパフォーマンス変化を示す回帰傾斜、および位置ごとのパフォーマンス分析を通じて分析します。
tag調査結果
tag類似度スコアと正確性の低下
結果は、コンテキスト長が増加するにつれてパフォーマンスが低下することを明確に示しています。平均類似度スコアは 128 トークンで 0.37 から 8K トークンで 0.10 に低下し、128 から 1K トークンの間で急激な低下を示す非線形的な傾向に従っています。

以下の図では、ニードルを反転させても正規化類似度スコアにほとんど差がないことを示しています。デフォルトのニードル(例:「実際、ユキはゼンパー・オペラハウスの近くに住んでいます」)と反転ニードル(例:「ゼンパー・オペラハウスはユキが住んでいる場所の隣にあります」)は、ほぼ同じパフォーマンスを示しています:

データセットの異なる意味的つながりは様々なパフォーマンスを示し、場所-ランドマークのペアが最も強い結果を維持する一方、食事制限や医療条件のつながりはより急速に劣化します:

ランダムチャンスと結果を比較すると、干し草山が大きくなるほど結果がランダムに近づくことが裏付けられます。つまり、特定の質問に対して、ニードル(正解)のないランダムな文章を選ぶ確率が、干し草山を選ぶ確率とほぼ同じになります:

ここでも、異なる意味的つながりに基づいて様々なパフォーマンスが見られ、一部(食事制限など)は比較的短いコンテキストでもランダムチャンスを大きく下回る一方、他(場所やランドマークなど)はコンテキスト長に関係なくはるかに良いパフォーマンスを示します:

ニードルを反転させてもパフォーマンスにほとんど影響がありません。以下のグラフでは、配置されたニードルがデフォルト順序か反転順序かで分けて、正しい干し草山をランダムチャンスより好む比較比率を示しています:

デフォルト順序と反転順序のニードルの結果が同じ傾向を示していることが分かるため、この基準に関する分析の分割は続けません。
tag正例と負例を分離できるか?
最も重要な発見の1つは、異なるコンテキスト長にわたってエンベッディングモデルが関連コンテンツと無関連コンテンツをどの程度区別できるかを分析することから得られました。この「分離分析」は、検索の正確性がコンテキスト長 128 から 1000 トークンの間で急速に低下し、その後もゆっくりとした速度で低下し続けることを示しています:

短いコンテキスト(128 トークン)では、モデルは 0.1 の平均差と明確な識別を示し、AUC 0.81(モデルが関連文章を無関連文章より高くランク付けする確率が 81% であることを意味する)を達成しています。これは、短いコンテキストでは、モデルが回答を含む文章と含まない文章を確実に区別できることを示しています。
しかし、コンテキストの長さが長くなるにつれて、この性能は急速に劣化します。1,000 トークンでは分離度が 60% 低下して 0.040 となり、AUC も 0.66 に減少し、性能の著しい低下を示しています。8,000 トークンでは、分離度は最小(0.001)となり、AUC もわずか 0.50 とほぼランダムな判別になっています。このパターンは重要な洞察を示しています:モデルが長いコンテキストで妥当な類似度スコアを計算できる場合でも、それらのスコアを使って関連情報と無関連情報をほとんど区別できないのです。8,000 トークンでは、モデルの関連コンテンツを識別する能力は事実上ランダムなチャンスと同等になります。
コンテキストが増加するにつれてのこの劣化の速さは顕著です。生の類似度スコアは 128 から 8,000 トークンにかけて約 75% 低下しますが、分離度メトリクスは同じ期間で約 99% 低下します。さらに懸念されるのは、効果量がさらに急激に低下し、98.6% も減少することです。これは、埋め込みモデルの長いコンテキストでの問題が、単なる類似度スコアの低下を超えて、これまで理解されていた以上に、関連情報を識別する基本的な能力が深刻に崩壊することを示唆しています。
tagニードルの位置はコアメトリクスにどのように影響するか?
コアパフォーマンスメトリクスは通常、ニードルが干し草の山の先頭にある場合が最も良好ですが、性能の低下は必ずしもコンテキストの中間への配置と相関しません:

また、ニードルが与えられたコンテキストの先頭にある場合に性能が最も良く、短いコンテキストではニードルが末尾に配置された場合に小さな性能向上が見られます。しかし、すべてのコンテキストを通じて、ニードルが中間位置にある場合に性能の低下が見られます:

tagクエリ拡張は結果にどのような影響を与えるか?
最近、検索システムの性能を向上させるためにクエリに関連用語を追加するテクニックであるクエリ拡張に関するブログ投稿をリリースしました。

この投稿では、LLM を使用して拡張用語を生成し、それらをクエリ埋め込みに追加して検索性能を向上させました。結果は大幅な改善を示しました。今回は、このテクニックが針刺し検索の結果をどのように(または改善するかどうか)を調べたいと思います。例えば、次のようなクエリが与えられた場合:
Which character has been to Dresden?
LLM(Gemini 2.0)を使用してこれを拡張し、次のような 100 個の追加用語を追加します:
Which character has been to Dresden? Character: fictional character literary character protagonist antagonist figure persona role dramatis personae\\n\\nDresden: Dresden Germany; bombing of Dresden World War II historical fiction Kurt Vonnegut Slaughterhouse-Five city in Saxony Elbe River cultural landmark\\n\\nHas been to: visited traveled to journeyed to presence in appears in features in set in takes place in location setting
tagクエリ拡張はニードルと干し草の山のマッチングにどの程度役立つか?
元の投稿で説明したように、100、150、250 用語の 3 セットの拡張クエリ用語を生成しました。その後、以前と同じ実験セットを、拡張クエリ用語の各セットを使用して 3 回繰り返し実行しました。
すべての拡張セットでの結果は、クエリ拡張を使用しない場合と同様に(図 4 および 7)、コンテキスト長が増加するにつれて明確な性能劣化を示しました:

拡張されていないクエリと比較して、すべてのクエリ拡張条件でコンテキストが長くなるにつれて同じパターンの性能劣化が見られました。劣化傾向も非線形で、128 から 1K トークンの間で急激な低下が見られます:

ただし、比較比率を調べると、クエリ拡張には明確な利点があることがわかります:モデルはニードルを含む干し草の山を含まないものよりも選択する可能性が高くなります。対照的に、クエリ拡張なしでは、正しいパッセージを選択する確率が大幅に低下し、干し草の山のサイズが 8K トークンの場合、ランダムにパッセージを選択するのとほぼ同じになりました。
tagクエリ拡張を使用したニードルマッチングの結果をどのように説明するか?
これらの結果は NoLiMa 論文とクエリ拡張研究の両方の知見と一致しており、以下のように説明できます:
- 品質と量のトレードオフ:150 および 250 用語の拡張と比較して 100 用語の拡張の方が良好な性能を示すことは、追加の用語がシグナルよりもノイズを多く追加し始める最適なポイントが存在することを示唆しています。250 用語の拡張は、元のクエリとの意味的関係が弱い用語を導入する可能性が高く、長いコンテキストでは逆効果になります。
- コンテキスト長は依然として主要な課題:クエリ拡張の利点にもかかわらず、コンテキスト長が増加するにつれて性能は依然として大幅に低下します。これは、拡張を行っても、長いコンテキストにおけるアテンションベースのモデルの基本的なアーキテクチャの限界が依然として存在することを示唆しています。
- 実用的な閾値の特定:比較比率が 0.5 を上回ったままであることは、8K トークンでも拡張によってランダムチャンスを上回る性能が維持されることを示しており、埋め込みモデルの効果的なコンテキストウィンドウを拡張する実用的な方法を提供します。ランダムチャンスとの比較は、長いコンテキストドキュメントが提示された場合でも、クエリを拡張することで、不正解よりも正解(つまりニードル)を見つける可能性が高くなることを示しています。これは、コンテキスト長が増加するにつれて正解を見つける確率がランダムに近づく非拡張クエリと比較して改善です。
tag診断:埋め込みにおいて字句マッチングはどのような役割を果たすか?
上記の実験では、文字通りのマッチングの可能性をすべて排除することで、長いコンテキストのパッセージで意味的な「ワンホップ」推論を行う埋め込みモデルの効果を測定しました。クエリ拡張を使用しても、コンテキスト長が長くなるにつれて、関連パッセージを見つけるための埋め込みモデルの能力が低下することがわかりました。この効果は顕著で、この発見は注目に値します。なぜなら、通常、埋め込みモデルは追加のサポートなしで関連する推論を行うことができると期待されるからです。文字通りのマッチをワンホップのバリエーション(例:「Dresden」→「Semper Opera House」)に置き換える場合、私たちは単に 1 つの概念を近くの別の概念に置き換えているだけです。
ここで直接問題に取り組んでみましょう:字句マッチングは意味的マッチングにおいて本当に十分な役割を果たしているのか、それともコンテキスト長の効果がそれを圧倒してしまうのでしょうか?この質問に答えるため、文字通りのマッチを含むニードルでテストをやり直しました。例えば:
- 質問:「Which character has been to Dresden?」
- ニードル(デフォルト):「Actually, Yuki lives in Dresden.」
- ニードル(反転):「Dresden is where Yuki lives.」
ゼンパー歌劇場がドレスデンにあるため、その隣に住む人物がドレスデンを訪れたはずだという1ホップの推論の代わりに、これらのニードルは直接ドレスデンに住む人物名を述べていることに注目してください。
このように22の質問-ニードルのペアをすべて再構成し、同じ埋め込みモデル jina-embeddings-v3 を使用して、すべての文脈長とニードルの配置を含めて実験を再実行しました。



結果は衝撃的です。文脈内に文字通りの一致があっても、モデルが正解をランダムな回答から区別する能力は、文脈の長さが増すにつれて急速に低下します。ただし、文字通りの一致が全くない場合と比べると、わずかな優位性は維持しています。
これは最終的に、埋め込みモデルが干し草の山から針を見つける能力は、ニードルの意味的な構成よりも、干し草の山のサイズ(およびその中でのニードルの配置)によってはるかに大きく影響を受けることを証明しています。
tag結論
埋め込みモデルに関する我々の発見は、LLMに関するNoLiMAの論文と一致しています:文脈のサイズは正確なマッチングと検索を大きく決定づけます。文字通りの完全一致がある場合でもこれが当てはまることを示しました。
問題は埋め込みが意味的なマッチングを実行する能力ではありません。jina-embeddings-v3 のような埋め込みモデルは短い文脈をうまく処理しますが、文脈の長さが増すにつれてその効果は低下します。クエリ拡張はこの効果をある程度軽減できますが、検索品質は依然として長い文脈で劣化します。さらに、クエリ拡張には、意味的なノイズを追加することなく検索を改善する拡張語を特定することが極めて重要であるため、追加の問題が生じます。私たちは干し草の山から針を見つける検索に直接対処し、将来の jina-embeddings-v4
のパフォーマンスを改善する方法を調査・検討しています。