AIエージェントを作成する際のユニークな利点について話すとき、主に議論されるのは、タスクを完了するためにツールを呼び出す能力と、時間とともに改善する能力です。メモリは、自己改善型エージェントを作成し、ユーザーにより良い体験を提供するための基盤となります。
このレッスンでは、AIエージェントにおけるメモリとは何か、そしてそれをどのように管理し、アプリケーションの利益のために活用できるかを見ていきます。
このレッスンでは以下を学びます:
• AIエージェントのメモリを理解する: メモリとは何か、そしてなぜエージェントにとって重要なのか。
• メモリの実装と保存: 短期メモリと長期メモリに焦点を当て、AIエージェントにメモリ機能を追加する実践的な方法。
• AIエージェントを自己改善型にする: メモリがどのように過去のやり取りから学び、時間とともに改善を可能にするか。
このレッスンには、2つの包括的なノートブックチュートリアルが含まれています:
• 13-agent-memory.ipynb: Mem0とAzure AI SearchをSemantic Kernelフレームワークで使用してメモリを実装。
• 13-agent-memory-cognee.ipynb: Cogneeを使用して構造化メモリを実装し、埋め込みに基づいた知識グラフを自動的に構築、グラフを可視化し、インテリジェントな検索を実現。
このレッスンを完了すると、以下ができるようになります:
• AIエージェントのさまざまなメモリタイプを区別する: 作業メモリ、短期メモリ、長期メモリ、そしてペルソナやエピソードメモリのような特殊な形式を含む。
• Semantic Kernelフレームワークを使用してAIエージェントの短期メモリと長期メモリを実装および管理する: Mem0、Cognee、ホワイトボードメモリ、Azure AI Searchとの統合を活用。
• 自己改善型AIエージェントの原則を理解する: 強力なメモリ管理システムが継続的な学習と適応にどのように貢献するか。
本質的に、AIエージェントのメモリとは、情報を保持し、思い出すことを可能にする仕組みを指します。この情報には、会話の具体的な詳細、ユーザーの好み、過去の行動、さらには学習したパターンが含まれることがあります。
メモリがない場合、AIアプリケーションはしばしばステートレス(状態を持たない)であり、各やり取りがゼロから始まります。これにより、エージェントが以前のコンテキストや好みを「忘れる」ため、繰り返しやすく、ユーザーにとってフラストレーションの原因となります。
エージェントの知能は、過去の情報を思い出し活用する能力に深く結びついています。メモリはエージェントを以下のようにします:
• 反省的: 過去の行動や結果から学ぶ。
• 対話的: 継続的な会話のコンテキストを維持する。
• 先見的および反応的: 過去のデータに基づいてニーズを予測したり、適切に対応する。
• 自律的: 保存された知識を活用して、より独立して動作する。
メモリを実装する目的は、エージェントをより信頼性が高く有能にすることです。
これは、エージェントが単一のタスクや思考プロセス中に使用する「メモ帳」のようなものです。次のステップを計算するために必要な即時情報を保持します。
AIエージェントの場合、作業メモリは会話の中で最も関連性の高い情報をキャプチャします。たとえチャット履歴が長くても、重要な要素(要件、提案、決定、行動など)を抽出することに焦点を当てます。
作業メモリの例
旅行予約エージェントでは、作業メモリがユーザーの現在のリクエスト(例:「パリへの旅行を予約したい」)をキャプチャし、現在のやり取りを導くための即時コンテキストとして保持します。
このタイプのメモリは、単一の会話やセッションの間、情報を保持します。現在のチャットのコンテキストを維持し、対話の前のターンを参照できるようにします。
短期メモリの例
ユーザーが「パリへのフライトはいくらですか?」と尋ね、その後「そこでは宿泊施設はどうですか?」と続けた場合、短期メモリは「そこ」が同じ会話内で「パリ」を指していることを認識します。
これは、複数の会話やセッションにわたって情報を保持します。ユーザーの好み、過去のやり取り、または一般的な知識を長期間にわたって記憶することができます。これはパーソナライズにとって重要です。
長期メモリの例
長期メモリは、「ベンはスキーやアウトドア活動を楽しみ、山の景色を楽しめるコーヒーが好きで、過去の怪我のために上級スキーコースを避けたい」という情報を保存するかもしれません。この情報は、将来の旅行計画セッションでの推奨事項に影響を与え、非常にパーソナライズされたものにします。
この特殊なメモリタイプは、エージェントが一貫した「人格」や「ペルソナ」を発展させるのに役立ちます。エージェントが自分自身や意図された役割についての詳細を記憶し、やり取りをよりスムーズで焦点の定まったものにします。
ペルソナメモリの例
旅行エージェントが「スキープランニングの専門家」として設計されている場合、ペルソナメモリはこの役割を強化し、専門家のトーンや知識に沿った応答を促します。
このメモリは、エージェントが複雑なタスク中に取った一連のステップ(成功や失敗を含む)を保存します。過去の「エピソード」や経験を記憶し、それらから学ぶようなものです。
エピソードメモリの例
エージェントが特定のフライトを予約しようとしたが、空きがないため失敗した場合、エピソードメモリはこの失敗を記録し、次回の試みで代替フライトを試したり、ユーザーに問題をより詳しく説明することができます。
これは、会話から特定のエンティティ(人、場所、物など)やイベントを抽出して記憶することを指します。これにより、エージェントは議論された重要な要素を構造的に理解することができます。
エンティティメモリの例
過去の旅行についての会話から、エージェントは「パリ」、「エッフェル塔」、「ル・シャ・ノワールレストランでのディナー」といったエンティティを抽出するかもしれません。将来のやり取りで、エージェントは「ル・シャ・ノワール」を思い出し、そこで新しい予約を提案することができます。
RAGは広範な技術ですが、「構造化RAG」は強力なメモリ技術として注目されています。会話、メール、画像などのさまざまなソースから密な構造化情報を抽出し、精度、リコール、応答速度を向上させます。従来のRAGがセマンティック類似性にのみ依存するのに対し、構造化RAGは情報の固有の構造を活用します。
構造化RAGの例
キーワードの一致だけでなく、構造化RAGはメールからフライトの詳細(目的地、日付、時間、航空会社)を解析し、構造化された方法で保存します。これにより、「火曜日にパリ行きのフライトを予約したのはどれ?」のような正確なクエリが可能になります。
AIエージェントのメモリを実装するには、メモリ管理の体系的なプロセスが必要です。これには、情報の生成、保存、取得、統合、更新、さらには「忘却」(削除)も含まれます。特に取得は重要な側面です。
エージェントのメモリを保存・管理する1つの方法は、Mem0のような専門ツールを使用することです。Mem0は永続的なメモリ層として機能し、エージェントが関連するやり取りを思い出し、ユーザーの好みや事実のコンテキストを保存し、時間とともに成功や失敗から学ぶことを可能にします。このアイデアは、ステートレスなエージェントをステートフルなものに変えることです。
Mem0は2段階のメモリパイプライン:抽出と更新を通じて動作します。まず、エージェントのスレッドに追加されたメッセージがMem0サービスに送信され、Large Language Model (LLM) を使用して会話履歴を要約し、新しいメモリを抽出します。その後、LLM駆動の更新フェーズがこれらのメモリを追加、修正、または削除するかを決定し、ベクター、グラフ、キー値データベースを含むハイブリッドデータストアに保存します。このシステムはさまざまなメモリタイプをサポートし、エンティティ間の関係を管理するためのグラフメモリも組み込むことができます。
もう1つの強力なアプローチは、Cogneeを使用することです。Cogneeは、構造化および非構造化データを埋め込みに基づいたクエリ可能な知識グラフに変換するオープンソースのセマンティックメモリです。Cogneeは、ベクター類似性検索とグラフ関係を組み合わせたデュアルストアアーキテクチャを提供し、情報がどのように関連しているかを理解する能力をエージェントに与えます。
Cogneeは、ハイブリッド検索に優れており、ベクター類似性、グラフ構造、LLM推論を組み合わせます。システムは生きたメモリを維持し、成長し続けながらも1つの接続されたグラフとしてクエリ可能であり、短期セッションコンテキストと長期永続メモリの両方をサポートします。
Cogneeノートブックチュートリアル(13-agent-memory-cognee.ipynb)では、この統一メモリ層を構築する実践例が示されており、多様なデータソースの取り込み、知識グラフの可視化、特定のエージェントニーズに合わせた検索戦略を使用したクエリの例が含まれています。
Mem0のような専門的なメモリツールに加えて、Azure AI Searchのような強力な検索サービスをバックエンドとして使用し、メモリを保存および取得することもできます。特に構造化RAGに適しています。
これにより、エージェントの応答を独自のデータで裏付け、より関連性が高く正確な回答を保証します。Azure AI Searchは、ユーザー固有の旅行メモリ、製品カタログ、またはその他のドメイン固有の知識を保存するために使用できます。
Azure AI Searchは、会話履歴、メール、画像などの大規模データセットから密な構造化情報を抽出および取得するのに優れた構造化RAGの機能をサポートしています。これにより、従来のテキスト分割や埋め込みアプローチと比較して「超人的な精度とリコール」が提供されます。
自己改善型エージェントの一般的なパターンには、「知識エージェント」を導入することが含まれます。この別のエージェントは、ユーザーと主要エージェントの間の主な会話を観察します。その役割は次の通りです:
価値のある情報を特定する: 会話のどの部分が一般的な知識や特定のユーザーの好みとして保存する価値があるかを判断する。
抽出と要約: 会話から本質的な学びや好みを抽出する。
知識ベースに保存する: 抽出された情報を永続化し、通常はベクターデータベースに保存して後で取得できるようにする。
将来のクエリを強化する: ユーザーが新しいクエリを開始すると、知識エージェントが関連する保存情報を取得し、ユーザーのプロンプトに追加して主要エージェントに重要なコンテキストを提供する(RAGに似ています)。
• レイテンシ管理: ユーザーのやり取りを遅くしないように、最初は情報を保存または取得する価値があるかを迅速に確認するために、安価で高速なモデルを使用し、必要に応じてより複雑な抽出/取得プロセスを呼び出します。
• 知識ベースの維持: 成長する知識ベースに対して、使用頻度の低い情報を「コールドストレージ」に移動してコストを管理します。
Azure AI Foundry Discordに参加して、他の学習者と交流したり、オフィスアワーに参加したり、AIエージェントに関する質問に答えてもらいましょう。
免責事項:
この文書はAI翻訳サービスCo-op Translatorを使用して翻訳されています。正確性を追求しておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があります。元の言語で記載された文書を正式な情報源としてご参照ください。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤認について、当社は一切の責任を負いません。