GENAI-RON🧠生成AI論🥦

生成AIのしくみ 詳解版 04

コンテキストウィンドウと検索

context window、conversation state、retrieval、RAG、embeddings、vector search。AIにとっての現在を、作業空間として整理する。

コンテキストとは、モデルがその時点で読める現在の作業空間である。

ページ作成日時:2026-06-25 22:40 JST
最終更新日時:2026-06-30 00:01 JST

はじめに

平易版では、コンテキストを「生成AIにとっての現在」として説明した。人間にとっての現在は、身体のある場所、目の前の人、作業の流れ、過去の記憶、気分、環境音などを含んでいる。一方、生成AIにとっての現在は、応答生成時に入力として渡された文脈の束である。

詳解版では、この「現在」を、コンテキストウィンドウ(context window)会話状態(conversation state)検索(retrieval)検索拡張生成(RAG)埋め込み(embeddings)、そして注意機構/アテンション(attention)という観点から整理する。

中心にある問いは、単純である。AIは、いま何を読めているのか。何を読めていないのか。読めているはずの情報が、なぜ使われないことがあるのか。そして、必要な情報をどうやって現在の文脈へ再投入できるのか。

1. コンテキストとは、現在の作業空間である

コンテキスト(context)とは、モデルが応答を作るときに参照できる入力のまとまりである。ユーザーの最新発言だけでなく、会話履歴、システム側の指示、開発者指示、保存メモリ、ツール結果、ファイル内容、検索結果などが、応答生成時の文脈に含まれうる。

コンテキストは「記憶」と同じではない。モデルの重みに刻まれた反応傾向は、学習によって形成された長期的な地形である。一方、コンテキストは、いま作業台の上に置かれている資料に近い。作業台に置かれていれば読める。置かれていなければ読めない。置かれていても、量が多すぎれば埋もれる。

2. コンテキストウィンドウとは何か

コンテキストウィンドウ(context window)とは、一回のリクエストでモデルが扱えるトークンの上限である。長い入力を入れれば入れるほど、応答や推論に使える余白は減っていく。

コンテキストウィンドウは、単なる文字数制限ではない。どの情報が現在の判断材料として残るかを決める枠である。枠の中に入らなかった情報は、少なくともその応答では使えない。枠の中に入っていても、モデルが強く参照するとは限らない。ここに、技術的な制約と文脈上の目立ち方が重なる。

さらに、文脈に入っている情報がすべて同じ強さで効くわけでもない。Transformer型のモデルでは、文脈中のどのトークン同士をどの程度結びつけるかを計算する注意機構/アテンションが働く。このため、長い入力では、どこに情報を置くか、直近で何を強調するか、重要情報をどう再提示するかが実務上の設計課題になる。

3. 会話状態は、自動で残る場合と手動で渡す場合がある

AIとの会話では、前の発言が次の応答に反映される。このため、人間には「AIが会話を覚えている」と見える。しかし、実装上は、会話状態の管理にはいくつかの方式がある。

APIでは、前の会話を毎回 messagesinput に含めて手動で渡す方法がある。また、Responses API では、会話状態を自動的に扱う仕組みや、previous_response_id を使って前の応答とつなげる方法が用意されている。さらに Conversations API のように、長く続く会話オブジェクトとして状態を保持する仕組みもある。

つまり、「前の会話を覚えているように見える」ことの背後には、前の情報がどのように現在のリクエストへ戻されているかという実装の問題がある。

4. 長い会話では、圧縮と要約が起きる

会話が長くなると、すべての過去発言をそのまま現在のコンテキストに入れ続けることは難しくなる。そこで、過去の会話を要約したり、重要な状態だけを残したり、古い部分を圧縮したりする処理が必要になることがある。

これを広い意味で圧縮(compaction)と呼べる。圧縮は便利である。長い会話の要点を残し、コンテキストウィンドウの消費を抑えられる。しかし、圧縮には危険もある。何を重要とみなすかによって、後の応答が変わるからである。

圧縮とは、単に短くすることではない。現在へ持ち越す前提を選び直すことである。

5. 検索は、外部から現在を補う仕組みである

モデル本体の知識と、現在のコンテキストだけでは足りない場合、外部から情報を取りに行く必要がある。ここで使われるのが検索(retrieval)である。

検索は、AIの記憶そのものではない。検索は、必要な情報を現在のコンテキストへ持ち込むための入口である。モデル本体が知らない情報、最新の情報、個別組織の情報、ユーザー固有の資料を扱うには、検索によって外部情報を取得し、それを応答生成時の材料として再投入する必要がある。

6. 検索拡張生成とは何か

検索拡張生成(RAG)とは、外部文書を検索し、関連する部分をコンテキストに加えたうえで、モデルに応答を生成させる方法である。

RAGでは、モデルが自分の重みに含まれる一般的な知識だけで答えるのではなく、外部の資料を参照しながら答える。社内規程、契約書、研究ノート、Notionページ、GitHubのIssue、過去の議事録などを検索し、関連箇所を応答の材料にする。

RAGを使うとは、単に「外部文書を読ませる」ことではない。何を検索対象にするか、どの検索結果を何件入れるか、古い情報をどう扱うか、検索結果をどのように引用させるかを設計することである。

7. 埋め込みとベクトル検索

検索拡張生成の背後には、埋め込み(embeddings)ベクトル検索(vector search)が使われることが多い。埋め込みとは、テキストを数値ベクトルに変換する技術である。意味が近いテキストは、ベクトル空間上でも近い位置に置かれやすい。

ただし、ベクトル検索は万能ではない。意味的に近いが、実務上は違う文書を拾うことがある。似た言葉だが、文脈が違うものを混ぜることもある。そのため、検索範囲、メタデータ、更新日、文書種別、信頼度、引用箇所を管理する必要がある。

8. ファイル検索とベクトルストア

OpenAIのFile searchでは、あらかじめアップロードしたファイルをベクトルストアに登録し、モデルが必要に応じて関連情報を検索できるようにする。これは、モデルの内部知識を増やすというより、外部に置いた知識ベースへアクセスする道を与える仕組みである。

検索結果を多く入れれば情報は増えるが、トークン消費も増える。少なくすれば文脈は軽くなるが、必要な根拠が落ちる可能性がある。文脈負荷と回答品質は、しばしばトレードオフになる。

9. 「参照されなかった」場合と「文脈に入っていなかった」場合

平易版05で述べたように、AIの忘却とは、消失ではなく、参照されなさであることが多い。詳解版04では、これをコンテキストウィンドウと検索の観点から言い換えられる。

AIがある情報を使わなかったとき、原因はいくつもありうる。その情報が現在のコンテキストに入っていなかった。入っていたが、コンテキストウィンドウの中で弱かった。会話が長くなり、古い部分が省略や圧縮の対象になった。別チャットに移ったため、前の細部が現在の入力に入っていなかった。検索対象に含まれていなかった。検索されたが、上位結果に出なかった。検索結果として入ったが、他の指示や文脈に押された。

これらはすべて、ユーザーからは「忘れた」に見える。しかし、技術的には別の問題である。現在の文脈から本当に外れているのか。文脈には入っているが弱いのか。検索されていないのか。検索されたが参照されていないのか。参照されたが優先されなかったのか。この区別が重要である。

AIを安定して使うには、「覚えさせる」だけでは足りない。必要な情報が必要なタイミングで現在の文脈へ入るように設計する必要がある。

10. コンテキスト設計とは何か

コンテキスト設計とは、モデルが応答時に何を読める状態にするかを設計することである。これは、プロンプトを書くことより広い。

長期プロジェクトでは、すべての会話をそのまま持ち続けるのではなく、現在の目的、決定済み事項、未決事項、参照すべきページ、使ってよいツール、使ってはいけないツールを整理しておく必要がある。検索を使う場合には、検索対象の範囲、最新性、信頼度、引用の必要性を指定する必要がある。

コンテキスト設計とは、AIが「いま何を読むべきか」を整える作業である。これは、生成AIを使う技術のかなり中心にある。

11. 平易版の結論を詳解版として言い換える

平易版では、こう言った。生成AIにとっての現在とは、いま入力された文脈の束である。

詳解版では、これを次のように言い換えたい。コンテキストとは、モデルがその時点で読める現在の作業空間であり、コンテキストウィンドウ、会話状態、検索、外部資料、保存メモリ、ツール結果によって構成される。

この見方を持つと、AIの忘却、混線、参照漏れを構造として見られるようになる。AIは、世界全体を読んでいるのではない。AIは、その時点で渡された現在を読んでいる。そして、その現在は設計できる。

中心フレーズ

コンテキストとは、モデルがその時点で読める現在の作業空間である。

用語メモ

コンテキスト(context)

モデルが応答を作るときに参照できる入力のまとまり。

コンテキストウィンドウ(context window)

一回のリクエストでモデルが扱えるトークンの上限。

注意機構/アテンション(attention)

文脈中のどのトークン同士をどの程度結びつけるかを計算する仕組み。

会話状態(conversation state)

会話の履歴や応答の連鎖を、次の応答に利用できる形で保持する仕組み。

圧縮(compaction)

長い文脈を要約・短縮し、重要な情報だけを現在の文脈へ持ち越すこと。

検索(retrieval)

外部データから関連情報を探し出し、応答生成の材料にすること。

検索拡張生成(RAG)

外部文書を検索し、関連部分を文脈に加えたうえで、モデルに応答を生成させる方法。

埋め込み(embeddings)

テキストを数値ベクトルとして表す技術。

ベクトル検索(vector search)

数値ベクトル間の近さを使って、意味的に近い文書を探す方法。

ベクトルストア(vector store)

埋め込み化された文書を保存し、検索できるようにするデータベース。

参考リンク

シリーズ内ナビ

一般向け版との対応

この詳解版04は、一般向け版04「コンテキストとは何か」に対応しています。