コンテキストウィンドウ
何の上限なのか
AIが回答を作るときに参照できる文章の量の上限です。Anthropicの用語集は「言語モデルが新しい文章を生成するときに、さかのぼって参照できる文章の量」と説明しています。
単位はトークンです。文字数でも単語数でもありません。
学習した知識とは別物です
ここが最初につまずく点です。Anthropicの用語集は、コンテキストウィンドウについて「これは、その言語モデルが学習した大量のデータとは別のものである」と明記し、**その場の作業領域(working memory)**にあたると説明しています。
つまり、2つの別の話があります。
| | 中身 | 変わるか | | --- | --- | --- | | 学習した知識 | モデルを作るときに読み込んだ大量の文章 | その場では変わらない | | コンテキストウィンドウ | いま渡されている文章 | やりとりごとに変わる |
長い会話をしたからといって、AIが何かを覚えたわけではありません。渡された文章を毎回見ているだけで、上限を超えた分は参照できなくなります。
入力と出力の合計です
ここは読者が必ず混同する点なので、正確に書きます。
- OpenAIの公式ドキュメント … 「入力トークンと出力トークンの両方に使える合計のトークン数」
- Googleの公式ドキュメント … 「入力トークンと出力トークンの合計の上限を定める」
- Anthropicの公式ドキュメント … 「そのやりとりでClaudeが生成する出力も、同じく数に入る」
3社とも合算です。つまり、長い資料を渡すほど、AIが書ける量が減ります。
ここで混ざりやすいのが料金の話です。料金は入力と出力が別建て、コンテキストウィンドウの上限は入力と出力の合算。 数え方の話が2つあり、別物です。
上限を超えると何が起きるか
ここは提供元によって挙動が違います。 ひとまとめに覚えないほうが安全です。
- 入力だけで既に上限を超えている場合、Anthropicの公式ドキュメントは「APIは 400 のエラーを返す」と書いています
- 生成の途中で上限に達した場合は、そこで打ち切られます
- OpenAIの公式ドキュメントは「上限を超えて生成されたトークンは、APIの応答で切り詰められることがある」と書いています(「必ず」ではなく「ことがある」です)
ひとつ、よく言われているのに裏が取れなかったことがあります。「古い発言から順に捨てられる」という説明は、調べた範囲では公式ドキュメントに見つかりませんでした。 製品の画面上の挙動として語られることが多い通説ですが、ここでは根拠のある記述に留めます。
なお、上の3点はいずれもAPIの仕様についての記述です。ChatGPTやClaudeのような製品の画面で、上限に達したときにどう見えるかは、ここでは確認していません。
上限いっぱいまで渡せば良いわけではありません
これは実務で効く話です。文脈が長くなると、精度が落ちることが査読付きの研究で報告されています。
関連する情報が入力の冒頭または末尾にあるときに性能が最も高くなることが多く、長い文脈の中ほどにある情報を参照しなければならないときには性能が大きく低下する
— Liu et al.「Lost in the Middle: How Language Models Use Long Contexts」TACL 2024 より和訳
Googleの公式ドキュメントも「性能は、文脈によって大きく変わりうる」と書いています。
したがって、「上限が大きいモデルに資料を全部投げ込む」は最適な使い方ではありません。 必要な部分を選んで渡すほうが、精度も料金も有利になります。RAGが使われる理由のひとつがこれです。
こう言えば一度で済む
こう言うと伝わらない 「長い資料を読ませたら答えが雑になりました」
こう言えば一度で済む 「60ページのPDFを丸ごと渡すと、中ほどに書いてある条件を無視した答えが返ります。関係する節だけ渡す形にできますか」
後者なら、相手は渡す範囲を絞る話だと判断できます。