コンテキストウィンドウの説明:AIが忘れる理由
LLMは長期記憶を持たず、最近のトークンのスライディングウィンドウのみを「見て」おり、このウィンドウの外のすべてが忘れられるか圧縮されます。 この記事は、それがプロンプトにとって何を意味するのか、そしてこれらの制限の内側(および外側)でどのように機能するかを説明しています。
コンテキストウィンドウとは何ですか?
コンテキストウィンドウは、LLMが次の出力を生成するときに考慮に入れることができるテキストの最大量(トークンで測定)です。
これをモデルの「見えるテキスト」をいつでも思い描いてください。GPT-4oに128kトークンのコンテキストウィンドウがある場合、モデルは会話の最後の128,000トークン(約96,000語)を「見る」ことができます。それより前のすべてはモデルに見えず、応答に影響しません。
トークンと単語:トークンは単語ではありません。平均して、1トークン≈4文字または約0.75単語です。4,000トークンのコンテキストウィンドウ≈プレーンな英語テキスト3,000語です。密なコードまたは日本語などの言語の場合、比率は異なります。日本語テキストは文字エンコーディングのため、単語あたり約2トークンを必要とします。
**コンテキストウィンドウのサイズはモデル間で大きく異なります:
| モデル | コンテキストウィンドウ |
|---|---|
| GPT-4o mini | 4k tokens (≈ 3,000語) |
| GPT-4o | 128k tokens (≈ 96,000語) |
| Claude Opus 4.8 | 200k tokens (≈ 150,000語) |
| Gemini 3.1 Pro | 2,000,000 tokens (≈ 1,500,000語 — 2026年利用可能な最大コンテキスト) |
| ローカルモデル (Ollama, LM Studio) | 設定可能な4k~128k+、利用可能なVRAMで制限 |
すべてのモデルで原則は同じです。ウィンドウの外のすべては見えません。
AIが「忘れる」理由
会話内のトークンの合計数(システムプロンプト+チャット履歴+ユーザー入力+ツール+予想出力)がコンテキストウィンドウを超える場合、古い部分は切り詰められ、要約されるか、完全に削除されます。
これは人間の忘却のような記憶喪失ではありません。モデルは「考えてから忘れる」わけではありません。文字通り切り詰められたテキストを見ません。モデルの入力空間に存在しなくなります。
**コンテキスト限界に達した場合の一般的な症状:
- AIが30メッセージ前に与えた指示を無視または矛盾する
- 長い創作ストーリーでは、モデルはあなたが以前確立したキャラクター名、詳細、または制約を忘れます
- 多くのターンにわたる研究チャットでは、事実が混同されるか、モデルが情報を再発明します
- AIが突然トーンを変更したり、説明なしに元の制約に違反する
実際に何が起こっているのか
ほとんどのチャットインターフェースは次のいずれかの戦略を使用します:
- 1最も古いメッセージを削除 — 最新のNメッセージがウィンドウに適合します。古いメッセージは完全に破棄されます
- 2以前の会話を要約 — システムは早期のメッセージを簡潔な要約(「以前、あなたはX、Y、Z…について議論しました」)に圧縮してコンテキストを保持します
- 3システム/開発者プロンプトをピン止め — システムメッセージは固定されたままで、ユーザーメッセージはローテーションします
これらすべては「要点」を保持しますが、具体的な詳細は失われます。モデルが元の指示を見なくなったとき、それに従うことはできません。
コンテキストウィンドウとハルシネーション
コンテキスト過負荷はハルシネーションを増加させます。元の情報が見えなくなったとき、モデルはもっともらしい推測でギャップを埋めるためです。
パターンは次のようになります。50メッセージ前に言及した何かをAIに参照するよう求めます。しかしそのメッセージはコンテキストウィンドウから回転しました。モデルは実際の事実にアクセスできないため、現在のコンテキストから推測することに基づいて、もっともらしく聞こえる答えを生成します。結果:捏造。
これが高コンテキストの長いチャットが、集中した短い交換よりも多くのハルシネーションを生成する理由です。モデルは推論能力を失っていません。不完全な情報で機能しています。
相互作用は直接的です: コンテキストが少ない → グラウンディングが不足している → ハルシネーションリスクが増加します。
この効果は、すでに確率性を高める高い温度とtop-pの設定で強化されます。Temperature and Top-P: Control AI Creativityを参照してください。パラメータチューニングがハルシネーションとどのように相互作用するかを理解するために。
プロンプト設計がウィンドウ内にとどまるのをどのように支援するか
プロンプトを戦略的に構造化することにより、固定コンテキスト予算内でより多くを達成できます。
重要な指示を前に配置します。 最も重要な制約、ルール、定義をシステムプロンプトまたはすべての最初のユーザーメッセージに配置します。これらは、20ターン後に埋め込まれた指示よりもコンテキストから削除される可能性が低いです。
繰り返しを避ける。 何かを一度説明したら、もう一度貼り付けないでください。代わりに、それを参照してください。「上記のサマリーで説明したように…」これはトークンを節約します。
明確に要約してください。 モデルに、これまでの主要な決定、制約、または事実を要約するように求めます。その後、分散された以前のコンテキストに依存するのではなく、その要約から次の応答を構築します。
ターンに焦点を当てておきます。 単一の複数トピックのモノローグはコンテキストを効率的に使用しません。分離された、狭いスコープの交換に分割します。
コンテキストウィンドウサイズ (2026)
長いドキュメントの操作
本全体または数百ページのPDFを単一のコンテキストウィンドウに貼り付けることは、Gemini 3.1 Proの2Mトークンウィンドウでも、モデルは複数の異なるセクションに効果的に焦点を当てることができないため、非効率です。
1,000ページの本≈250,000トークン。Gemini 3.1 Proの2Mトークンウィンドウでは技術的に収容できます。実際には、モデルの推論は、大きく異なるセクション全体で質問に答えるよう求められたときに低下します。まるで人が一度に本全体を読んでから、50ページ、200ページ、400ページから特定の詳細を思い出すよう求められるようなものです。想起はかすかになります。
**長いドキュメントの方が良い方法:
- 1セクションを順序付けて処理します。 チャプターまたはセクションを一度に抽出および分析します。セクションあたり焦点を当てた質問をします。「セクション3の主な結論は何ですか?」次に次のセクションに移動します。
- 2階層的要約。 ページ1–10から主要なポイントを抽出してから、ページ11–20から、これらの要約をチャプターレベルの要約に結合します。次に、チャプターをドキュメントレベルの要約に結合します。これにより、ドキュメントは本質的な事実に削減され、関係を保持します。
- 3構造化された抽出。 高いレベルの質問をする前に、ドキュメントを表、JSON、または箇条書きリストに変換します。これは情報を圧縮します。50ページの製品仕様を貼り付ける代わりに、仕様を構造化テーブルに抽出してから、テーブルについて質問します。
- 4RAG(検索拡張生成)を使用します。 本当に大きなドキュメントセット(100+ページ)の場合、検索ベースのシステムがより効果的です。RAG Explained: How to Ground AI Answers in Real Dataを参照してください。すべてを一度に読み込む代わりに、関連するセクションを取得する方法については。
PromptQuorumがコンテキスト管理を支援する方法
コンテキスト制限の近くで作業することは難しいです。各モデルには異なる制限、切り詰め動作、価格設定、および(ローカルLLMの場合)VRAMの要件があります。PromptQuorumはこれらの制限を透明にします:送信前に各モデルのコンテキスト消費量と溢れリスクを確認できます。
ローカルLLMのコンテキストウィンドウ調整
LM StudioまたはOllamaでモデルを実行すると、コンテキストウィンドウサイズを構成できます。デフォルトでは、ツールはそれをモデルの最大値に設定することが多い(たとえば、7Bモデルの場合は32k)。しかし、それはあなたが必要とするものはめったにありません。
PromptQuorumはLM Studioと統合されており、タスクごとにコンテキストウィンドウを調整できます。軽くて高速なQ&Aの場合は4kを選択します。深いドキュメント分析の場合は32kを選択します。長い会話の場合は64kを選択します。これにより、トレードオフが構成ファイルに隠されるのではなく、明示的になります。
自動コンテキストオーバーフローチェック
PromptQuorumは*を送信する前に確認します:システムプロンプト+現在の会話履歴+新しい入力+予想される出力の長さが与えられている場合、それは各モデルに設定されたコンテキストウィンドウに適合しますか?
オーバーフロー可能性がある場合、PromptQuorumはあなたを警告するか、送信する前に会話をトリム/要約するよう求めます。サプライズの切り詰めはもうありません。AIが「忘れた」理由について推測していません。
コンテキストウィンドウ ↔ VRAM Trade-off
ローカルモデルでは、コンテキストウィンドウが大きくなるとVRAM消費も増加します。7B (Q4_K_M) モデルは4kコンテキストで~5 GB、32kコンテキストで~8–10 GB、128kコンテキストで~12–14 GB VRAMが必要です。VRAMが不足するとGPUはクラッシュするか、CPU推論に切り替わります(10–100倍遅い)。
PromptQuorumはこの関係を表示します:「このコンテキストウィンドウサイズはハードウェア上で約12–14 GB VRAMを使用します。利用可能な8 GBがあります。」タスクとハードウェアに合わせてコンテキストウィンドウを適切に調整できます。
ローカルデプロイメントで利用可能な最大コンテキストウィンドウを持つモデル(ハードウェア要件含む)については、ロングコンテキストローカルLLMをご覧ください。
マルチモデル認識
GPT-4o(128kウィンドウ)、Claude(200kウィンドウ)、ローカル7Bモデル(選択した32kウィンドウ)にプロンプトをディスパッチすると、PromptQuorumは自動的にプロンプトを3つの境界内に保ちます。1つのプロンプト、複数のモデル、手動の書き換えなし。
コンテキスト管理のための実用的なレシピ
レシピ1:1つのプロジェクトについての長いチャット — 以前の決定を失わずに、単一のプロジェクトに関するマルチターン会話を維持します。
- 1システムプロンプトに、プロジェクトの主要な制約(スコープ、オーディエンス、トーン、技術的制限)を一度埋め込みます。繰り返さないでください。
- 210~15の交換ごとに、モデルに現在の状態を要約するよう求めます。「これまでのところ、最も重要な5つの決定は何ですか?」
- 3その要約を次のターンのコンテキストとして使用してください。分散された以前のメッセージに依存するのではなく。
- 4PromptQuorumで、32k–64kのコンテキストウィンドウを設定し、オーバーフロー警告を有効にして、いつ要約するかを知ることができます。
レシピ2:長いレポートの分析 — 50~100ページのドキュメントから洞察を抽出します。
- 1ドキュメントを3~5セクション(チャプター、パーツ)に分割します。
- 2各セクションについて、焦点を当てたプロンプトを作成します。「このセクションからの主要な発見を5つの箇条書きにまとめてください。」
- 3各セクションから5つのサマリーを収集します。
- 4最後のターンで、「これらのセクションサマリーが与えられている場合、全体的な結論は何ですか?」と聞きます。
- 5コンテキスト制限内でうまく留まり、「本に迷った」問題を回避しました。
レシピ3:コンテキストウィンドウの端でのプロンプト作成 — ほぼ完全なコンテキストウィンドウをオーバーフローなしで使用します。
- 1予算を計算します:コンテキストウィンドウサイズ−システムプロンプトトークン−予想出力トークン=入力+履歴に利用可能なトークン。
- 2例:128kウィンドウ、200トークンシステムプロンプト、1k出力バッファ=126.8k利用可能なトークン。
- 3送信前に、PromptQuorumで確認してください。「この入力は何個のトークンがかかりますか?」
- 4制限に近い場合、最も古いターンをトリムするか、続行する前にそれをまとめてください。
- 5これにより、制限をランダムに打つのではなく、意図的に限界の近くで動作させます。
レシピ4:VRAMが限られたローカルLLM — クラッシュなしでローカルモデルを効果的に実行します。
- 1モデルのVRAMに対して保守的なコンテキストウィンドウ(8k–16k)から始めます。
- 2PromptQuorumの設定で、そのウィンドウサイズでのVRAM要件をメモします。
- 3タスクを実行します。オーバーフロー時は、会話をまとめてサマリーから再開します。
- 4制限に近づくことがない場合は、コンテキストウィンドウをゆっくり増やして再テストしてください。
- 5ハードウェアとタスク用にモデルの「適切にサイズ調整された」コンテキストウィンドウを見つけます。
コンテキストウィンドウでの一般的な間違い
- "モデルはすべての以前のチャットを覚えています。"いいえ。新しい会話はすべて、過去のチャットからゼロコンテキストで開始されます。1つのチャット内でも、交換がコンテキストウィンドウを超えると、それは終わります。
- "毎ターン同じ長いコンテキストを貼り付けます。"これはトークンを無駄にし、役に立たない — モデルはまだ300ページ上で効果的に推論できません。代わりに、サマリーをまとめて参照してください。
- "長いチャットで5つの異なるプロジェクトを混ぜます。"各プロジェクトはトークンのために競います。コンテキストが満杯になると、詳細がトリミングされます。プロジェクトごとに別のチャットを使用してください。
- "AIは推論が悪い — temperature または top-pである必要があります。"かもしれません。しかし最初にコンテキストウィンドウを確認してください。モデルが元の制約を見なくなった場合、それはパラメータの問題ではなく、情報の欠落です。
- "ローカルLLMのコンテキストウィンドウを最大化します。"その後、VRAMが不足します。プロセスがクラッシュし、推論は遅いCPUモードに戻ります。代わりにコンテキストをハードウェアに合わせて設定してください。
- "アプリはオーバーフローについて警告しました。"警告を信じてください。オーバーフローは静かな切り詰め、隠されたハルシネーション、および浪費されたトークンにつながります。まず要約してください。
FAQ
モデルは以前のチャットを記憶していますか?
いいえ。新しい会話セッションはすべてゼロ履歴で開始されます。モデルは現在のコンテキストウィンドウ内のトークンのみを見ます。以前のチャットを参照したい場合、関連部分を現在の会話にコピーする必要があります。
なぜAIは20メッセージ前に与えた指示を無視しましたか?
その指示はおそらくコンテキストウィンドウから外に落ちました。モデルはそれを見なくなったため、従うことはできません。解決策:システムプロンプトで重要な指示を繰り返すか、会話の途中でモデルに指示を再キャップして再埋め込みするよう求めます。
より大きなコンテキストウィンドウは常に良いですか?
いいえ。より大きなウィンドウを使用すると、より多くのコンテンツを含めることができますが、コストも増加します(処理するトークンが多い)。ローカルモデルの場合、VRAM使用量も増加します。タスクに適したコンテキストウィンドウを選択してください。単純なQ&Aの場合は4k、長い会話の場合は32k、ドキュメント分析の場合は128k+。大きいことは「良い」わけではありません — *適切*が良いです。
コンテキスト制限に達したことをどうやって知りますか?
モデルの応答はトーンを変更し、以前の指示に矛盾するか、以前に設定した詳細の追跡を失います。PromptQuorumのコンテキストオーバーフロー確認を送信する前に使用してください。制限に近づいていることを警告します。
コンテキストウィンドウサイズはローカルモデルのVRAM使用にどのように影響しますか?
7B (Q4_K_M) モデルは4kコンテキストで~5 GB、32kコンテキストで~8–10 GB、128kコンテキストで~12–14 GB VRAMが必要です。増加は厳密に線形ではありません。PromptQuorumのVRAM計算機でハードウェアの上限を確認してください。
PromptQuorumのようなツールはコンテキストオーバーフローを防止できますか?
はい。PromptQuorumはプロンプトのトークン数、構成されたコンテキストウィンドウ、モデルの実際の制限を確認してから、オーバーフローが可能性がある場合は送信前に警告します。その後、トリミングまたは要約してから続行できます。
異なるモデルは長いコンテキストを異なる方法で処理しますか?
はい。Claude Opus 4.8は200kトークンにわたって焦点を保ちます——Extended Thinkingモードでは最大1Mまで。GPT-4oは128kで堅牢です。より小さなモデル(たとえばLLaMA 3.1 7B)は、技術的にはコンテキストウィンドウが大きい場合でも、8k–16k以上の推論の一貫性を失うことがあります。最も安全なアプローチ:特定のモデルとタスクをテストしてください。
関連する読み物
- プロンプトに必要な5つの構成要素 — コンテキストが制約になる前にプロンプトを構造化する方法
- AIのハルシネーション:なぜAIは嘘をつくのか — 欠落しているコンテキストがハルシネーションリスクを増加させる理由
- RAG解説:AIの回答を実際のデータに基づかせる方法 — 生のコンテキストではなく検索を使用して、本当に大きなドキュメントセットを処理する方法
ソース
- OpenAI, 2026. "API reference: Models and context windows" — トークン制限と価格設定に関するモデルごとの公式ドキュメント
- Anthropic, 2026. "Claude model context windows and token costs" — Claudeのコンテキストウィンドウと最新モデル概要
- Raffel et al., 2020. "Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer" — トランスフォーマーのコンテキストウィンドウ効果に関する基礎研究