ロスト・イン・ザ・ミドル現象(ロストインザミドルゲンショウ)
LLMが長いコンテキストを処理する際、先頭や末尾の情報は高精度で参照できるが中央部に配置した情報を見落としやすい現象。Stanford大学の研究(2023年)で命名された。
ロスト・イン・ザ・ミドル現象とは
Lost in the Middle(ロスト・イン・ザ・ミドル)は、LLM(大規模言語モデル)が長いコンテキストを処理する際に生じる精度の位置依存バイアスです。2023年にStanford大学のNelson Liuらが論文「Lost in the Middle: How Language Models Use Long Contexts」で命名・定式化しました。
現象の特徴:Uの字型精度分布
コンテキスト内の情報位置と再現精度の関係はU字型を描きます。先頭(0〜20%)では精度0.90〜0.95以上、中央部(40〜60%)では0.50〜0.70程度に低下、末尾(80〜100%)では0.85〜0.95以上に回復します。
なぜ起きるのか
TransformerのAttentionはPrimacy Effect(先頭バイアス)とRecency Effect(末尾バイアス)の両方を持ちます。システムプロンプトや指示は先頭にある→先頭への注意が高い(Primacy Effect)、最後の発話ほど時間的に近い→末尾への注意が高い(Recency Effect)。中央はこれらの恩恵から外れて相対的にAttentionウェイトが下がります。
実験的証拠(2023年論文より)
20件のドキュメントをコンテキストに含め、1件だけ正解を含む構成でQAを実施した結果:
- 1番目(先頭): GPT-3.5精度68% / GPT-4精度81%
- 10番目(中央): GPT-3.5精度45% / GPT-4精度62%
- 20番目(末尾): GPT-3.5精度65% / GPT-4精度79%
中央配置で10〜20%の精度低下が全モデルで観測されました。
実用的な影響
RAGシステムへの影響
検索結果を上位N件コンテキストに渡す設計では、中位ランクの結果が見落とされやすいです。
# 悪い設計: 単純にスコア順で渡す
def rag_naive(query, top_k=20):
docs = search(query, k=top_k)
return llm.generate(context=docs, question=query)
# docs[9]〜docs[14]が見落とされやすい
# 改善: 高スコア文書を先頭・末尾に配置
def rag_position_aware(query, top_k=20):
docs = search(query, k=top_k)
# スコア上位を先頭・末尾に、下位を中央に
reordered = docs[:3] + docs[6:] + docs[3:6]
return llm.generate(context=reordered, question=query)
長いシステムプロンプトの設計
重要な指示を中央部に書くとモデルが従いにくくなります。重要な制約・指示は先頭に、重要でない前文・後文はその後に配置するのが推奨パターンです。
2025年時点での改善状況
GPT-3.5 Turbo(2023)では中央部精度低下が-20〜25%だったのに対し、GPT-4 Turbo(2024)で-10〜15%、Claude 3 Opus(2024)で-5〜10%、Gemini 1.5 Pro(2024)では-2〜5%と大幅に改善されています。Gemini 1.5 Proはposition-agnostic trainingを意識した学習により100万トークン全域での高精度を達成しました。
対策まとめ
- 重要情報は先頭か末尾に配置
- RAGのコンテキスト再順序化(高スコア文書を端に)
- Long Rerank: 初期検索後にLLMで再ランキングして上位数件に絞る
- Iterative Retrieval: 複数ラウンドで段階的に処理
- モデル選択: 長コンテキスト専用学習を施したモデルを優先
まとめ
Lost in the Middle現象はLLMのAttentionメカニズムに起因する構造的バイアスで、長コンテキスト利用時に必ず考慮すべき問題です。RAGや長文処理の設計では「重要情報を先頭か末尾に」という経験則が有効であり、2025年現在も最新モデルを使う場合でも完全には解消されていないため、認識と対策が求められます。