AIエージェント活用実践編 / 状態管理とメモリ設計
短期メモリと長期メモリ
無料公開レッスン / 読了目安 5 分
学習のねらい
LLM(Large Language Model、大規模言語モデル)との会話をスムーズに進めるためには、過去の情報を適切に覚えておく必要があります。この「記憶」は、人間と同じように短期的なものと長期的なものに分けられ、それぞれ異なる特性と用途があります。 本レッスンでは、LLMにおける短期メモリと長期メモリの違いを理解し、業務ユースケースに応じて適切なメモリの種類を選べるようになることを目指します。
LLMにおける「メモリ」とは
LLMは、基本的に一度のやり取り(プロンプトと応答)で完結するように設計されています。しかし、会話エージェントや複雑なタスクを扱う場合、過去のやり取りや外部の知識を参照しながら振る舞う必要があります。このとき、LLMに過去の情報を「思い出させる」ために使うのが「メモリ」という概念です。
短期メモリ — 会話セッション内の記憶
短期メモリとは、主に 現在の会話セッション内 で必要な情報を指します。これは、LLMが一度に処理できる入力の長さ、いわゆる コンテキストウィンドウ(Context Window) の範囲内で扱われることが多いです。
特徴
- 揮発性: 会話セッションが終わると、通常は失われます。
- 高速性: コンテキストウィンドウ内にあるため、追加の検索なしに直接参照できます。
- 容量制限: LLMのモデルによってコンテキストウィンドウの最大長が決まっており、それを超えると古い情報から順に忘れられていきます。
種類 (人間の場合の比喩)
- Episodic Memory (エピソード記憶): 特定の出来事や経験に関する記憶です。LLMの文脈では、会話の具体的な流れやユーザーの発言内容そのものがこれに該当します。例えば、「先ほどあなたが言った『〇〇』についてですが…」といったやり取りで使われます。
- Procedural Memory (手続き記憶): 特定のスキルや手順に関する記憶です。LLMでは、エージェントがタスクを解決するために実行する一連のステップや、ツール利用のルールなどがこれに当たります。
長期メモリ — セッションを跨ぐ記憶と知識
長期メモリとは、複数の会話セッションにまたがって保持したい情報 や、LLMが直接学習していない 外部の知識 を指します。
特徴
- 永続性: 会話セッションが終わっても保持され、必要に応じていつでも参照できます。
- 検索性: 必要な情報を効率的に見つけ出すための検索メカニズム(例: ベクトル検索)が伴います。
- 大容量: 外部ストレージに保存されるため、短期メモリよりもはるかに多くの情報を保持できます。
種類 (人間の場合の比喩)
- Semantic Memory (意味記憶): 一般的な事実や概念に関する記憶です。LLMの文脈では、企業のFAQ、製品マニュアル、ドキュメント、データベースなどの構造化・非構造化データがこれに該当します。これは通常、知識ベース(Knowledge Base、KB) と呼ばれ、LLMが参照できるように埋め込み(Embedding)などの形で保存されます。
保存先の選び方
長期メモリを保存する方法はいくつかあります。
- ファイルシステム: テキストファイルやJSONファイルとして保存します。実装がシンプルですが、大規模な検索には向いていません。
- リレーショナルデータベース(RDB): SQLiteやPostgreSQLなどのデータベースに構造化された形で保存します。特定の条件での検索や管理がしやすいです。
- ベクトルデータベース(Vector Database): 情報を数値のベクトル(Embedding)に変換して保存し、意味的に近い情報を高速に検索するのに特化したデータベースです。RAG(Retrieval Augmented Generation、検索拡張生成)システムでよく利用されます。
まとめ
LLMにおけるメモリは、会話セッション内で一時的に保持される「短期メモリ」と、セッションを跨いで永続的に保持される「長期メモリ」に大別されます。短期メモリはコンテキストウィンドウ内でエピソード記憶や手続き記憶を担い、長期メモリは外部の知識ベースとして意味記憶を担います。 これらの違いを理解し、次のレッスンからは具体的な実装方法を見ていきましょう。