LLMにおける「長期記憶」と「短期記憶」

大規模言語モデル(LLM)は、人間の脳に例えられることが多いですが、実際には「記憶」の扱いがかなり特殊です。
開発者やエンジニアにとって 短期記憶(コンテキストウィンドウ)長期記憶(外部知識や永続データストア) を理解しておくことは、実用的なアプリケーションを設計する上で非常に重要です。


短期記憶(コンテキスト)の正体

LLMの「短期記憶」とは、モデルが一度の推論(inference)で参照できるテキスト領域、つまり コンテキストウィンドウ を指します。

  • GPT-4 や Llama 3 などでは、数千〜十数万トークンのテキストを一度に扱えます。
  • これはあくまで一時的な記憶であり、次回の会話やリクエスト時にはリセットされてしまいます。
  • 例えるなら、「その場の会話ログ」を覚えているだけで、電源を切れば全て消える揮発性メモリ のようなものです。

開発者にとっての課題は、コンテキストに入れられる情報量が有限である点です。そのため、長文を扱う場合やドメイン知識を参照する場合は、情報の取捨選択要約 が不可欠になります。


長期記憶(永続化された知識)

一方で「長期記憶」とは、LLMが直接保持していないものの、外部システムと組み合わせて実現する仕組みを指します。

  • 代表例は RAG(Retrieval Augmented Generation) です。
    ユーザーの質問に応じて、ベクトルDBから関連ドキュメントを検索し、コンテキストに取り込むことで「長期記憶」を模倣します。
  • さらに最近では、永続メモリ(Persistent Memory) の研究も進んでいます。これはユーザーごとの履歴や知識をデータベースに蓄積し、モデルが次回以降も参照できるようにする試みです。
  • 例えるなら、外付けのHDDやクラウドストレージ に記録しておき、必要に応じて読み込むスタイルです。

この「長期記憶」をどう設計するかで、LLMアプリの性能やユーザー体験が大きく変わります。


短期と長期の組み合わせ方

実際のシステム開発では、「短期」と「長期」を組み合わせるのが鉄則です。

  1. 短期記憶に直近の会話やユーザー入力を入れる
    → モデルがその場で文脈を理解できるようにする。
  2. 長期記憶から関連知識を呼び出して補強する
    → ベクトル検索や知識グラフを使って、コンテキストを強化。
  3. 必要に応じて要約・圧縮
    → コンテキストの容量制限を超えないよう調整する。

例えば、カスタマーサポート用のチャットボットでは「直近の会話履歴(短期)」と「製品マニュアル・FAQ(長期)」を同時に扱うことで、自然で的確な回答を生成できます。


エンジニアが押さえておくべきポイント

  • 短期記憶は有限でリセットされる → モデルの限界を理解することが重要。
  • 長期記憶は外部設計が鍵 → ベクトルDBやRAGの設計力がアプリ品質を決める。
  • ユーザー体験の差はメモリ設計で生まれる → 「覚えてくれるAI」と「忘れてしまうAI」の差は、裏側のアーキテクチャにある。

まとめ

LLMの「記憶」は、人間の脳のように自然に蓄積されるものではありません。
短期記憶(コンテキスト処理)長期記憶(外部知識・永続化) を正しく設計・使い分けることで、よりスマートで信頼できるAIアプリケーションを作ることができます。

これからのAIエンジニアリングは、「どんなモデルを使うか」だけでなく「どう記憶を設計するか」 が成功の分かれ目になるでしょう。