ChatGPTのメモリと記録
(プリプロンプトとRAG)

ChatGPTの設定画面を眺めていると、「メモリ」「記録(Record)」という項目があります。説明文を読むと、どちらも「過去の情報を参照する」ようなことが書かれていますが、正直なところ最初は違いがよく分かりませんでした。

文書検索と何が違うのか。そもそも、これらはどこで使われているのか。実際に設定をオン・オフし、挙動を確かめながら整理していくうちに、コンテクストウィンドウとRAGという二つの仕組みを区別しないと理解できないことに気づきました。

関連記事

1. コンテクストウィンドウとは何か

最初に押さえるべきなのが「コンテクストウィンドウ」です。
これは、ChatGPTが一度に読める文章量の上限だと理解すると分かりやすいです。

今やり取りしている会話、直前の質問、システムから与えられた指示などは、このウィンドウの中にそのまま入ります。
モデルは、ここに入っている文字を最初から最後まで読み、回答を作ります。

重要なのは、検索や取捨選択がない点です。
入っていれば必ず参照され、入らなければ完全に忘れられます。
会話が長くなると、古い発言が消えていくのはこのためです。

1.1. RAGという共通基盤

次に出てくるのがRAGです。
RAGは Retrieval-Augmented Generation の略で、「検索してから答えを作る」仕組みです。

文書検索では、PDFやメモをあらかじめ保存しておき、質問に応じて必要そうな部分を探し出し、それをコンテクストウィンドウに入れてから回答を生成します。

この時点で気づいたのは、「検索して入れる」という構造そのものが重要だという点でした。

2. 記録(Record)は会話ログのRAG

記録モードをオンにした状態で過去の話題を振ると、以前のやり取りを踏まえた回答が返ってきます。
ただし、その内容は必ずしも直前の会話には含まれていません。

この挙動を見て、記録は「会話ログを対象にしたRAG」だと理解しました。
過去の会話全体をデータベースのように持ち、質問に関係ありそうな部分を探して、コンテクストに追加しているのです。

文書検索との違いは対象だけです。
PDFの代わりに、自分の発言履歴が検索されている。
そう考えると、動きが一気に分かりやすくなりました。

2.1. メモリは要約されたRAG

メモリは、さらに一段階抽象化されています。
ここでは会話そのものではなく、「この人について安定して使えそうな前提」が短い形で保存されます。

実際に使ってみると、文体の好みや作業スタイルなどが、別のチャットでも自然に反映されます。
一方で、細かい経緯までは再現されません。

これは、RAGで取り出した情報をそのまま使うのではなく、一度要約・整理して固定化しているからだと考えました。
検索結果を毎回使うのではなく、前提条件として常にコンテクストに入れる設計です。

3. プリプロンプトとの違い

ここで気になったのが、プリプロンプトとの違いです。

プリプロンプトは、最初からコンテクストウィンドウに入れられる固定の指示です。

違いは明確です。
プリプロンプトは常に同じ内容が入り、検索や更新はありません。
一方、メモリや記録は、RAGを使って内容が選ばれます。

つまり、

  • プリプロンプト:固定で確実
  • RAG(記録・メモリ):動的で長期的

という役割分担になります。

3.1. なぜ両方が必要なのか

検証を進めるうちに、どちらか一方では足りない理由が見えてきました。

コンテクストウィンドウだけでは、長期的な前提を保持できません。
一方、RAGだけに頼ると、直前の微妙な言い回しやニュアンスが抜け落ちます。

この二つを組み合わせることで、「今の会話」と「これまでの積み重ね」を同時に扱えるようになります。
実際に使ってみて、ここが一番実用上の価値を感じた点でした。

4. 整理して初めて使い分けられる

メモリや記録は、設定画面だけを見ても分かりにくい機能です。しかし、コンテクストウィンドウとRAGという観点で整理すると、役割がはっきりします。

ChatGPTが賢くなったというより、「どの情報を、いつ、どう入れるか」を細かく分けた結果だと感じました。この視点を持つと、挙動に違和感を覚えたときも理由を考えやすくなります。