【ITニュース解説】Context engineering is mostly deciding what to leave out
2026年09月12日に「Dev.to」が公開したITニュース「Context engineering is mostly deciding what to leave out」について初心者にもわかりやすく解説しています。
ITニュース概要
AIモデルに与える情報(コンテキスト)は、多ければ良いわけではない。無関係な情報が多いと、モデルの回答精度が下がり、処理コストも増大する。本当に必要な情報だけを厳選し、冗長な部分を削ることで、回答の質が向上し費用も抑えられる。特に重要な情報はコンテキストの最初か最後に配置すると効果的だ。
ITニュース解説
大規模言語モデル(LLM)を活用したシステム開発において、モデルに与える情報、つまり「コンテキスト」の扱い方は非常に重要となる。このコンテキストを最適化する技術は「コンテキストエンジニアリング」と呼ばれ、その本質は「何をコンテキストから排除するか」という点に集約される。
多くの開発者は、モデルに与える情報量が多いほど、より良い回答が得られると考えがちである。そのため、より広いコンテキストウィンドウを持つモデルを使用したり、より多くの関連文書を検索して全てモデルに投入したりする傾向がある。しかし、実際には、余計な情報や無関係な情報をコンテキストから取り除くことが、モデルの回答品質を最も改善する効果的な手段であることが示されている。
モデルは、私たちが情報を検索する際のように、キーワードに一致する部分だけを重み付けして読み取るわけではない。モデルは与えられたコンテキスト内の全ての情報に「注意(Attention)」を払い、その全体から関連性を学習しようとする。そのため、もしコンテキスト内に無関係な情報やノイズが多いと、モデルの注意が分散され、本当に重要な情報から外れたり、誤った情報に引きずられたりする可能性が高まる。例えば、一つの関連性の高い情報があるにも関わらず、他に四つの無関係な情報を与えてしまうと、モデルは「四つのデータポイントを追加された」とは認識せず、「四つの間違いのきっかけと、一つの重要な情報からの四つの注意散漫の要因」として認識してしまうのである。結果として、いくら重要な情報がコンテキスト内に含まれていても、情報が多すぎたり、ノイズが多かったりすると、モデルはそれをうまく活用できないことが多い。
また、モデルがコンテキストを処理する際、情報の位置も回答に影響を与えることが知られている。特に、コンテキストの冒頭部分と末尾部分に記述された情報は、途中に挟まれた情報よりも重視される傾向がある。これは、コンテキストが長くなるほど、中央部分の情報が見落とされやすくなる「中間部分の性能低下(Lost in the Middle)」と呼ばれる現象とも関連する。そのため、重要な指示やタスクに関連する核となる事実は、質問文の近く、つまりコンテキストの末尾に配置することが、モデルの回答品質を高める上で有効な手段となる。もし複数の情報源からプロンプトを構築する場合、それらを検索された順序ではなく、タスクとの関連性の高さに基づいて並べ替えるべきだ。
では、どのような情報をコンテキストに含め、どのような情報を排除すべきだろうか。コンテキストに含めるべき情報は主に三つのカテゴリに分けられる。第一に、モデルに実行させたい「タスクそのもの」を明確かつ簡潔に記述する。第二に、そのタスクの遂行に「実際に必要な少数の事実」を厳選して含める。そして第三に、モデルに生成してほしい「出力の形式」を具体的に指定する。これら以外の情報は、ほとんどの場合、コンテキストから削減することを検討すべき対象となる。
具体的に、よく排除されるべき情報の例としては、以下のものが挙げられる。ある機能に関する情報が必要な場合でも、関連する部分が数十行しかないにも関わらず、ファイル全体をコンテキストに含めてしまうケース。あるいは、過去の会話履歴において、直近の二、三回のやり取りだけが現在のタスクに影響するにも関わらず、全会話履歴をそのまま送ってしまうケース。さらに、情報検索システムが取得したコードスニペットなどに付随する、定型的なヘッダーやライセンス情報といったボイラープレートも、多くの場合、タスクの邪魔になる。また、情報検索システムが「関連性が近い」と判断したドキュメントでも、人間が見て「これは今回のタスクとは無関係だ」と判断できるものは、積極的に排除すべきである。情報検索は候補を提供するものであり、それをタスクに合わせて厳選することが、最終的な回答品質を左右する。
このようなコンテキストの最適化、特に不要な情報の削減は、回答品質の向上だけでなく、コスト削減にも直結する。LLMを利用する際、通常、入力する情報(トークン)の量に応じて費用が発生する。コンテキストウィンドウに不要なトークンを詰め込むことは、その分余計な費用を支払うことになる。さらに、チャットボットのようなマルチターン(複数回のやり取り)を前提とするエージェントの場合、一度投入したコンテキスト(特に会話履歴)は後続の全ての呼び出しで繰り返し送信され、その都度費用が発生し続ける。つまり、無駄なコンテキストは、回答の品質を低下させるだけでなく、費用も高騰させるという二重のコストを生む。そのため、コンテキストの削減は、回答品質を向上させながら費用を削減できる、数少ない非常に効果的な改善策と言える。
実践的なアプローチとしては、まず情報検索によって広範囲に情報を取得し、その後、本当にタスクに必要不可欠な少数の情報に絞り込むプロセスを取り入れると良い。長い会話履歴は、生データをそのまま送るのではなく、要点をまとめた要約をコンテキストとして利用する。プロンプトを構築する前には、定型的なヘッダーやライセンス情報などのボイラープレートを事前に取り除く処理を組み込む。そして、もしモデルの回答が期待通りでなかった場合、すぐに「もっと大きなモデルを使おう」「もっとたくさんの情報を与えよう」と考えるのではなく、まず「与えたコンテキストの内容が適切だったか、余計なものが含まれていなかったか」を点検することが重要だ。多くの場合、問題の解決策は「より多くのコンテキスト」ではなく、「より少ない、そしてより適切なコンテキスト」にあることが多い。