Lost in the Middle
「Lost in the middle」とは、2023年のスタンフォード大学/Samaya AIの論文でLiuらが実証した経験的な発見で、LLMは重要な情報が長いコンテキストの先頭または末尾にあるときに最も高い性能を発揮し、同じ情報が中間に位置すると明らかに性能が低下するというものです。10万トークン以上のウィンドウを持つモデルでも、依然としてこのU字型のアテンション曲線が見られます。
「Lost in the middle」とは、2023年のスタンフォード大学/Samaya AIの論文でLiuらが実証した経験的な発見で、LLMは重要な情報が長いコンテキストの先頭または末尾にあるときに最も高い性能を発揮し、同じ情報が中間に位置すると明らかに性能が低下するというものです。10万トークン以上のウィンドウを持つモデルでも、依然としてこのU字型のアテンション曲線が見られます。
なぜ重要なのか
「大きなコンテキストウィンドウ」は「すべてを等しく読む」ことと同じではありません。20万トークンのコンテキストを持つモデルは技術的には本一冊分を取り込めますが、500ページのPDFの300ページ目に答えがある質問に対する実際の精度は、5ページ目や495ページ目で答えられる同じ質問よりもはるかに低くなります。開発者にとって、これは具体的な影響があります。プロンプト内でコンテキストをどのように順序付けするかによって回答の品質が劇的に変わり、それはコンテキストをどれだけ多く提供するかよりも大きく影響することがよくあります。本番環境のRAGで「モデルが取得した文章を無視した」ことによる失敗のほとんどは、実際にはlost-in-the-middleによる失敗が形を変えたものです。
元となった発見
Liuらの2023年の論文「Lost in the Middle: How Language Models Use Long Contexts」は、GPT-3.5、GPT-4、Claude、いくつかのオープンモデルを、複数文書にまたがる質問応答でテストしました。各質問について、関連する文書を全20文書のうち1番目、5番目、10番目、15番目、20番目の位置にシャッフルしました。結果は次のとおりです。
- 関連文書が最初(コンテキストの先頭)にあるとき、精度が最も高くなりました。
- 関連文書が最後(末尾)にあるときも、ほぼ同じくらい高い精度でした。
- 関連文書が中間の位置にあるとき、精度は20〜30ポイント低下しました。
形状はU字に見えます。両端で強く、中間で弱いのです。その後の研究により、このパターンはコンテキストウィンドウが拡大したClaude、Gemini、Llamaモデルでも成り立つことが示されています。
なぜ起こるのか
いくつかの仮説があり、おそらくすべてが部分的に正しいと考えられます。
学習データの分布: 学習データは重要な情報を先頭(見出し、トピックセンテンス)と末尾(結論、要約)に置く傾向があります。モデルはそうした位置的な傾向を学習します。
アテンションの減衰: RoPEやALiBiのような技術を用いても、セルフアテンションの実効的な到達範囲は非常に長いシーケンスでは劣化します。遠く離れた中間トークンは、近くにある末尾よりも得られるアテンションの量が少なくなります。
位置エンコーディングの限界: 拡張コンテキストモデルは、より短いシーケンス向けに調整された位置エンコーディングを引き継いでいるため、中間の位置は相対的に学習が不十分になります。
直近性バイアス: モデルは直近のトークンをより重視するため、末尾の強さは増幅されますが、中間の助けにはなりません。
これを踏まえた設計方法
1. 最も重要なコンテキストを先頭か末尾に置く: RAGでは、最上位にランクされた取得文章をコンテキストブロックの最初か最後に配置します。
2. 取得後のリランキング: リランカーを使って取得したチャンクを関連性順に並べ替え、最上位のものを端に配置します。
3. 取得順ではなく関連性順に並べ替える: ベクトル検索は多くの場合、距離順に結果を返します。最も関連性の高いものが高アテンションの位置に来るよう並べ替えましょう。
4. 中間を要約する: 生の中間コンテキストをそのまま投入する代わりに、それを要約して先頭に配置します。圧縮された中間は、生のままよりもよく残ります。
5. コンテキストを短くする: 長くなるほどU字曲線は悪化します。少数のより関連性の高いチャンクは、多数の限界的なものに勝ります。
6. 重要な事実を繰り返す: 同じ重要な事実を先頭と末尾の両方に置くことで、U字曲線と戦うのではなく、それを利用します。
7. タスクの指示を両端に置く: 一部のプロンプトでは、質問をコンテキストの先頭と末尾の両方で繰り返し、その間に根拠を挟むことで効果が高まります。
これは2026年でも当てはまるのか
より新しい長コンテキストモデル(Gemini 1.5 / 2.0、Claude 3.5以降/4.x、GPT-4 Turboおよびo系列)は、コンテキスト中間部分の想起力を大幅に改善しました。Gemini 2.0でのneedle-in-a-haystackテストでは、ウィンドウ全体でほぼ完璧な検索が示されています。しかし、複雑な推論を伴う実世界の多事実タスクでは、U字型は依然として現れます。ただし、その程度は以前ほど劇的ではありません。実践的なアドバイスはあまり変わっていません。短く、適切に順序付けされたコンテキストは、長く、ランダムに順序付けされたコンテキストに依然として勝ります。
よくある間違い
コンテキストが大きいほど回答が良くなると思い込む: ある程度までは正しいですが、中間部分の劣化が始まります。
取得した文章をベクトル検索の順序のまま投入する: ベクトル距離は位置的な重要性とは一致しません。
リランキングを省略する: 取得+リランクは、単純な取得で長いコンテキストを使うよりも効果的です。
現実的な位置にneedleを置いてテストしない: お遊びの「needle in haystack」テストは、多くの場合needleを一様にランダムな位置に置くため、U字曲線を隠してしまいます。現実的なユースケースでテストしましょう。
マーケティングを鵜呑みにする: 「100万トークンのコンテキスト」は、モデルが100万トークンすべてを等しく扱うことを意味しません。
Sources: