AI News HubLIVE
サイト内リライト3 分で読了

エージェントメモリ:会話履歴から持続的知識へ

本記事では、AIエージェントにおけるメモリの概念を掘り下げ、会話メモリ、セマンティックメモリ、エピソードメモリ、手続きメモリ、エンティティメモリ、ワーキングメモリ、サマリーメモリといった様々な種類を解説します。効果的なメモリシステム構築の課題と、OracleのAI Agent Memory Package(OAMP)がAIデータベースを活用して統一的なメモリソリューションを提供する方法についても紹介します。

ソースO'Reilly AI & ML Radar著者: Angie Jones

エージェントメモリは、AI分野で非常に魅力的な概念です。大規模言語モデル(LLM)は本質的にステートレスであり、過去のやり取りを記憶しません。しかし、AIエージェントと継続的にチャットすると、過去のメッセージを覚えているように感じられます。実際にはインターフェースが擬似的に記憶しているだけであり、裏側では会話履歴全体を巨大なプロンプトとしてLLMに再送信しています。

企業、研究者、そして独立した開発者たちは皆、エージェントメモリの解明に取り組んでいます。なぜなら、エージェントが記憶できるようになると、インタラクション全体が変わるからです。学んだことに基づいて構築し、ユーザーに適応し、再起動後も作業を再開し、継続性を生み出すことができます。

最近、筆者はOracleでエージェントメモリに取り組んでいるRichmond Alakeと話す機会を得ました。私たちはさまざまな種類のメモリ、メモリが困難である理由、そして本番環境で有用なメモリシステムを構築するために必要なことについて議論しました。

7種類のメモリ

会話メモリは最も一般的で、ユーザーとアシスタント間のメッセージ交換を保存します。しかし、多くのメモリシステムはここで誤ります。最も一般的な試みは、以前のメッセージをプロンプトに追加し続けることですが、会話が長くなるとモデルは巨大なコンテキストを受け取り、重要な詳細、古い情報、無関係な情報が混在します。真のメモリエンジニアリングには、何を保存するか、どこに保存するか、どのように検索するか、そしていつ要約、忘却、圧縮するかを決定する必要があります。

セマンティックメモリは持続的な事実を保存します。これらは、学習された正確な会話を超えて存続すべきものです。ベクトル検索が有用で、メモリを埋め込み、意味的類似性によって検索します。これにより、エージェントは完全な会話を再生する必要なく、現在のリクエストに関連する持続的な事実を取得できます。

エピソードメモリはイベントを保存します。「何が起こったか」の層であり、デバッグ、監査、長期実行ワークフローに特に有用です。このタイプのメモリは構造化ストレージから恩恵を受けることが多く、例えば「過去24時間の住宅ローン承認ワークフローからの失敗したツールコールをすべて検索」のようなデータベースクエリ問題です。

手続きメモリは「どうやって行うか」に関するメモリです。エージェントがプロセスを改善するのに役立ち、実世界の環境で実証済みのアプローチを再利用できます。

エンティティメモリは特定の人、アカウント、プロジェクト、システム、チケット、オブジェクトに関する事実を保存します。エージェントが間違ってユーザー間でメモリを混在させないように、厳格なスコーピングが必要です。

ワーキングメモリは現在のタスクのための短期的なスクラッチパッドです。永続的なメモリには通常適さず、すべてを長期記憶に保存するとノイズが多くなり危険です。

サマリーメモリはコンテキストウィンドウの制限に対処します。長いスレッドを圧縮して、プロンプトにはより小さな表現を送信します。

メモリの課題

記憶は簡単そうに聞こえますが、難しいのは判断であり、ストレージではありません。何を記憶すべきか? ユーザーが「普段はPythonが好き」と言ったら記憶する価値があるかもしれませんが、「今回の実験ではPythonを使ってみよう」程度なら不要かもしれません。メモリの更新タイミング、検索量のバランス、メモリリークの防止も重要です。メモリはエージェントの行動を改善すべきであり、単に複雑さを追加するだけでは意味がありません。

Oracleのアプローチ

OracleはOracle AI Agent Memory Package(OAMP)でこの課題に取り組んでいます。これはOracle AI Database 26ai上に構築されています。AIデータベースは、エンベッディング、JSONドキュメント、テキスト検索、通常のSQLなど、AIアプリケーションが必要とするデータを保存およびクエリできるデータベースです。これらがデータベース内で共存するため、エージェントはコンテキストを収集するために別々のシステム間を行き来する必要がありません。

OAMPは以下の機能を提供します:

  • ユーザーとエージェント:メモリ所有権のスコーピング
  • メモリ:持続的な事実と抽出された知識
  • スレッド:会話履歴と継続性
  • コンテキストカード:コンパクトでプロンプト対応のメモリ検索
  • サマリー:長期会話
  • ベクトル検索:意味的想起
  • データベース永続化:再起動後もメモリが持続

以下はコード例です:

from oracleagentmemory.core import OracleAgentMemory
from oracleagentmemory.core.llms import Llm

client = OracleAgentMemory(
    connection=connection,
    embedder="text-embedding-3-small",
    llm=Llm("gpt-5.5"),
    extract_memories=True,
    schema_policy="create_if_necessary",
)

client.add_user("angie", "Developer exploring agent memory patterns.")
client.add_agent("memory-demo-agent", "Assistant that demonstrates Oracle AI Agent Memory.")
client.add_memory("Angie is fascinated by agent memory and prefers practical examples over abstract explanations.", user_id="angie", agent_id="memory-demo-agent")

このスニペットには重要なアイデアが詰まっています。OracleAgentMemoryクライアントはアプリケーションとデータベースの橋渡しをします。ユーザーとエージェントの登録はメモリモデルの一部であり、所有権をスコープします。add_memory()は持続的な事実を保存します。

まとめると、エージェントメモリは課題が多いが大きな可能性を秘めた分野です。OracleのOAMPは、ベクトル検索だけでなく、SQLやドキュメントストレージもサポートするデータベースベースのメモリシステムを提供し、本番環境での実用的な解決策を目指しています。