コンテキストウィンドウは、AIが一度に受け取れる文章の量のことです。「20万トークン対応」といった表記で示されます。
大きいほど長い資料を渡せるので、数字が競われています。ただ、ここには落とし穴があります。入れられる量と、ちゃんと読んでくれる量は別です。
何が入っているのか
この枠に収まるのは、渡した資料だけではない点に注意が要ります。
システムからの指示、これまでの会話、渡した文書、そして今から書かせる答え。この全部が同じ枠を分け合います。
だから枠いっぱいまで資料を詰め込むと、答えを書く余地がなくなります。長い文書を渡したのに回答が途中で切れる場合、たいていこれが原因です。
枠を超えた場合の扱いはサービスによって違います。エラーで止まるものもあれば、古い会話から静かに切り捨てるものもある。後者は気づきにくい。会話の序盤で決めた前提を、途中から忘れたように振る舞い始めます。
真ん中に置いた情報は読み飛ばされる
2023年7月に公開された論文が、この現象を測っています。Nelson F. Liu氏らによる Lost in the Middle: How Language Models Use Long Contexts。
複数の文書から答えを探させる課題と、キーと値を引き当てる課題で調べたところ、答えが入力のどこにあるかで正答率が大きく変わりました。
最も成績がよかったのは、必要な情報が入力の冒頭か末尾にある場合。真ん中に置かれると、正答率がはっきり落ちる。
しかも論文は、長い文脈を扱うと明示されているモデルでも同じ傾向が出たとしています。枠が広いことと、その枠を隅々まで使えることは別だという話です。
渡し方を変えると結果が変わる
この性質が分かっていれば、対処はいくつかあります。
いちばん効くのは、大事な指示を末尾に置くことです。長い資料を渡したあと、最後にもう一度「この資料から◯◯を抜き出してください」と書く。冒頭に書いた指示だけでは、資料の量に埋もれます。
資料そのものを減らす手もあります。関係のありそうな部分だけを先に絞ってから渡せば、真ん中の量が減る。RAGの仕組みがやっているのは、この前処理そのものです。
それから、一度に全部やらせないこと。10個の資料を渡して総合的な判断をさせるより、1つずつ処理させて最後にまとめるほうが精度が出る場面は多い。
長くすると料金も時間も増える
精度以外にも代償があります。
入力が長いほどトークン数が増え、そのまま料金に跳ね返ります。応答が返ってくるまでの時間も伸びる。
「とりあえず全部渡しておけば安全」という発想は、料金と速度と精度の3つを同時に悪くします。
枠を使い切らない設計にする
業務で組むときは、枠の8割を上限と考えておくと安全です。
残りの2割は、答えを書くための余地と、想定より長い入力が来たときの逃げしろになります。ぎりぎりで設計すると、たまたま長い資料が来た日に静かに壊れます。
会話を続ける仕組みなら、どこかで区切る判断も要ります。方法は2つあります。一定の長さを超えたら、それまでのやりとりを要約して差し替える。あるいは、用件が変わった時点で会話をリセットする。
前者は文脈を保てますが、要約の過程で細部が落ちます。後者は確実ですが、前の話を持ち越せない。扱う仕事の性質で選ぶことになります。
枠が広がっても解決しない
対応できる量は年々増えています。それで問題が消えるかというと、そうはなっていません。
論文が示したのは、長い文脈を扱うと明示されたモデルでも位置による差が出るという事実でした。枠を広げることと、その全体を均等に使えるようにすることは、別の課題として残っています。
それに、枠が広がれば人は多く詰め込みます。100ページ渡せるようになれば100ページ渡す。真ん中の割合はむしろ増えます。
数字が伸びたぶんだけ楽になる、という話ではありません。渡すものを選ぶ手間は、当分なくならないと考えておいたほうがよさそうです。
どのくらいの量なら大丈夫か
明確な閾値があるわけではありませんが、実務的な目安は立てられます。
A4で数ページ程度なら、位置を気にせず渡して問題ありません。数十ページを超えたあたりから、真ん中の扱いが怪しくなってきます。
確かめる方法は簡単です。資料の真ん中あたりにしか書かれていない事実を選び、それを聞いてみる。答えられなければ、そのモデルはその長さを使いこなせていません。
カタログの数字を信じるより、自分の資料で1回試したほうが早いと思います。
出典
位置による正答率の変化についての記述は、下記の論文に基づきます。「長くするほど賢くなるわけではない」という趣旨は、Anthropicの公式ドキュメントでも同様に説明されています。

