コンテキストウィンドウとは?

コンテキストウィンドウとは、大規模言語モデルが1回のやり取りで処理できるテキストの最大量をトークン単位で表したものです。その仕組みと重要性について解説します。

コンテキストウィンドウとは、大規模言語モデル(LLM)が1回のやり取りで処理できるテキストの最大量をトークン単位で表したものです。これは、ユーザーのプロンプト、添付された文書、これまでの会話履歴、そしてモデル自身が生成した応答を含め、モデルが一度に注意を向けることができる情報の全体的な範囲を定義します。会話や文書がコンテキストウィンドウを超えると、それより前の内容は通常切り詰められるか削除され、ほんの数秒前に与えられた詳細をモデルが「忘れて」しまう原因となることがあります。

コンテキストウィンドウの仕組み

テキストがLLMに届く前に、それはトークン、つまりモデルが実際に読み取る小さな塊(おおよそ単語または単語の一部)に分割されます。コンテキストウィンドウは、モデルが作業メモリ内に一度に保持できる固定のトークン予算です。モデルが128,000トークンのコンテキストウィンドウを公表している場合、システム指示、取得した文書、チャット履歴全体、そして生成中の返信のすべてが、その128,000トークンという枠内に収まらなければなりません。

内部的には、モデルはアテンション(注意機構)と呼ばれるメカニズムを使用して、そのウィンドウ内のすべてのトークン間の関係に重み付けをします。すべてのトークンが他のすべてのトークンに注意を向けるため、計算量とメモリコストはウィンドウサイズのほぼ2乗で増加します。これが、コンテキストウィンドウの拡張が活発に研究されている分野である理由です。実用的な影響はすぐに現れます。特定の事実を長い文書に埋め込む200,000トークンの「干し草の中の針」テストでは、プロンプトの後半でその事実について尋ねられたとき、モデルがそれをまだ思い出せるかどうかが明らかになります。

なぜ重要なのか

コンテキストウィンドウは、特定のターンでLLMが行えることに対する最も重要な制約です。ウィンドウが小さいと、ユーザーは長い文書を分割したり、前の方のセクションを要約したり、最も関連性の高い箇所のみを取り込む検索拡張生成(RAG)を利用せざるを得ません。ウィンドウが大きければ、モデルはコードベース全体、長い法的契約書、完全な文字起こし、あるいは長時間の会話を、以前の詳細を見失うことなく取り込むことができます。

開発者にとって、ウィンドウサイズはアーキテクチャの決定に影響を与えます。検索パイプラインの構築方法、チャットメモリの管理方法、そして上限内に収まるプロンプトの設計方法です。エンドユーザーにとっては、チャットボットに1章を貼り付けるのと、本全体を貼り付けるのとの違いであり、50ページに到達した時点で3ページ目についての質問にモデルが答えられるかどうかの違いでもあります。

主な種類と現在のサイズ

  • 短いコンテキスト(2K〜8Kトークン):消費者向けLLMの初期世代で、長いメールや数ページの散文にほぼ相当します。
  • 標準的なコンテキスト(32K〜128Kトークン):現代のフロンティアモデルで一般的であり、小説全体、適度な規模のコードベース、あるいは長い会議の文字起こしを保持するのに十分です。
  • 長いコンテキスト(200K〜1M+トークン):本全体、複数ファイルのリポジトリ、あるいは複数時間の会話を一度に取り込める新しい「長コンテキスト」モデルです。
  • 実効コンテキストと公表コンテキスト:公表ウィンドウは最大入力サイズであるのに対し、実効ウィンドウはモデルが確実情報を取得して推論できる範囲を指します。独立したベンチマークでは、実効ウィンドウが公表値より小さいことがよく示されています。

コンテキストウィンドウは2023年以降劇的に拡大していますが、大きければ常に良いとは限りません。ウィンドウが長いほどメモリ消費が増え、速度も低下し、モデルの集中力が分散する可能性もあります。ほとんどのタスクにおいては、仕様シート上の最大値を追い求めるよりも、入力に余裕を持って収まるコンテキストウィンドウを持つモデルを選ぶ方が有用です。

こちらもおすすめ

関連記事