コンテキストウィンドウとは何か
コンテキストウィンドウとは、LLMが一度の処理で参照できるテキストの最大量(トークン数)だ。人間の「短期記憶」に似た概念で、ウィンドウの外にある情報はモデルが参照できない。
初期のGPT-3は4,096トークン(約3,000語)が上限だった。それが今では、Claude 3シリーズは20万トークン(約15万語)、Gemini 1.5 Proは100万トークン以上を扱える。この増加は単なる数値の変化ではなく、できることが根本的に変わる進化だ。
なぜ長くできるようになったか
Attentionの計算量問題
TransformerのSelf-Attentionは、入力トークン数の2乗に比例して計算量が増える(O(n²))。トークン数が2倍になると計算量は4倍になる。これが長いコンテキストの実現を妨げる根本的な制約だった。
4,096トークンで動いていたシステムを200,000トークンに拡張しようとすると、単純計算で約2,400倍の計算量が必要になる。これでは現実的なレイテンシとコストでは処理できない。
Flash Attention
Flash Attentionは2022年にスタンフォード大学のチームが発表した手法で、Attentionの計算をGPUメモリの特性に合わせて最適化した。数学的な結果は変えないまま、メモリアクセスパターンを改善することで、従来の実装と比べてはるかに高速かつメモリ効率よくAttentionを計算できる。
Flash Attentionの登場で、長いコンテキストの処理が現実的なコストで可能になった。現在のほぼすべての主要LLMがFlash Attentionを採用している。
Sparse AttentionとLinear Attention
Sparse Attentionは、全トークン間の関係を計算するのではなく、関係が深いと思われるトークンの組み合わせだけを選んで計算する手法だ。計算量をO(n²)からO(n√n)やO(n log n)に削減できる。
Linear Attentionはさらに進んで、計算量をO(n)に近づける近似手法だ。精度とのトレードオフはあるが、非常に長いコンテキストに対して使われるケースもある。
RoPE(Rotary Position Embedding)
Positional Encoding(位置情報の埋め込み)を相対的な位置関係で表現するRoPEは、訓練時よりも長いコンテキストへの外挿(generalization)に優れている。従来の絶対位置エンコーディングでは、訓練時の最大長を超えると性能が急落していたが、RoPEによりある程度の長さまで性能を維持できるようになった。
長いコンテキストで何が変わるか
丸ごと渡せるコンテンツが増える
20万トークンは、文庫本1冊分(約20万字)に相当する。書籍一冊、100ページ超の技術仕様書、数時間の会議録、数百のソースファイル——これらをRAGで切り貼りせずにそのまま渡すことができる。
コードレビューでは、関連する全ファイルをコンテキストに渡してから「このPRの問題点を洗い出して」と指示できる。従来は重要ファイルを選んで渡す必要があったが、選定のミスによる見落としがなくなる。
RAGの必要性が変わる
長いコンテキストが使えると「全文書をそのまま渡す」という選択肢が生まれ、RAGが不要になるケースもある。ただし、APIコストはトークン数に比例して増えるため、数十万トークンの文書を毎回のリクエストに含めると費用が急増する。RAGのコスト効率という優位性は依然として存在する。
長文処理の実際の限界
Lost in the Middleの問題
コンテキストが長くなるほど、その中間部分への注意が低下する「Lost in the Middle」という現象が報告されている。モデルは冒頭と末尾に書かれた情報により注意を払う傾向があり、重要な情報が中央に埋もれると見落とされやすくなる。
実務への対応としては、重要な指示や情報をプロンプトの冒頭か末尾に配置すること、また特に重要な部分はシステムプロンプトに入れることが有効だ。
レイテンシとコストの増加
長いコンテキストは処理時間とコストを増加させる。Claude 3.5 Sonnetで20万トークンの入力処理には数秒〜十数秒かかり、料金も相応に高くなる。インタラクティブなアプリケーションでは、ユーザー体験とのトレードオフを設計に織り込む必要がある。
精度の評価が難しい
長いドキュメント処理では「ニードル・イン・ア・ヘイスタック」と呼ばれる評価手法が使われる。長文の中に特定の情報を埋め込み、モデルがそれを正しく取り出せるかをテストする。全体的な精度は高くても、特定の位置や条件では精度が落ちることがあり、本番導入前のテストが重要だ。
実務での活用アドバイス
長いコンテキストは「できる」と「やるべき」は別の話だ。全文書をそのまま渡せるからといって、常にそれが最適ではない。コストとレイテンシを考慮したうえで、RAGとの組み合わせを設計するのが実務では現実的だ。重要情報は冒頭か末尾に配置し、長文処理後の回答の根拠確認も怠らないことが精度維持のポイントになる。
まとめ
コンテキストウィンドウの長大化は、Flash AttentionやSparse Attention、RoPEといった技術革新によって実現した。書籍一冊や大規模コードベース全体をそのまま渡せる時代になったことで、できることの幅が広がった一方、Lost in the Middleの問題やコスト・レイテンシの増加といった実際の限界もある。長いコンテキストを使いこなすには、その特性を理解したうえでRAGとの組み合わせや情報配置を工夫することが重要だ。