ai-agents-for-beginners

AIエージェントのためのメモリ

Agent Memory

AIエージェントを作成する際の独自の利点として主に議論されるのは、ツールを呼び出してタスクを完了する能力と、時間とともに改善できる能力の2つです。メモリは、ユーザーにより良い体験を提供できる自己改善型エージェントを作成する基盤にあります。

このレッスンでは、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アプリケーションはしばしばステートレス(状態を持たない)であり、各対話がゼロから始まります。これにより、エージェントが前の文脈や好みを「忘れてしまう」ために、繰り返しでフラストレーションの溜まるユーザー体験になります。

なぜメモリが重要なのか?

エージェントの知性は過去の情報を呼び出し活用する能力と深く結びついています。メモリによりエージェントは:

反省的:過去の行動と結果から学ぶ。

対話的:継続する会話の文脈を維持する。

先見的かつ反応的:過去のデータに基づいてニーズを予測し、適切に応答する。

自律的:蓄積された知識に基づきより独立して動作する。

メモリを実装する目的は、エージェントをより信頼性が高く、有能にすることです。

メモリの種類

作業記憶(Working Memory)

これは、エージェントが単一の継続中のタスクや思考過程で使う「メモ用紙」のようなものです。次のステップを計算するために必要な即時の情報を保持します。

AIエージェントにおいては、作業記憶は会話の中から最も関連する情報を抽出し保持します。たとえチャット履歴が長かったり切り詰められていても、重要な要素(要件、提案、決定、行動)に焦点を当てます。

作業記憶の例

旅行予約エージェントの場合、「パリへの旅行を予約したい」という現在のユーザーの要望を作業記憶に保持し、現在の対話を導きます。

短期記憶(Short Term Memory)

このメモリは単一の会話またはセッションの間情報を保持します。同じ会話内の以前の発話を参照する文脈を提供します。

短期記憶の例

ユーザーが「パリへのフライト料金はいくらですか?」と尋ね、その後に「宿泊施設はどうですか?」と続けた場合、短期記憶により「そこ」が「パリ」を指していることをエージェントが理解します。

長期記憶(Long Term Memory)

これは複数の会話やセッションを超えて情報を保持します。ユーザーの好み、過去のやり取り、一般知識などを長期間記憶し、パーソナライズに重要です。

長期記憶の例

長期記憶は「ベンはスキーやアウトドアが好きで、山の見えるコーヒーを好み、過去の怪我のために上級スキーコースは避けたい」と保存します。この情報は将来の旅行プランニングでの推薦に影響し、非常に個別化された提案を可能にします。

人格メモリ(Persona Memory)

この特殊なメモリタイプはエージェントに一貫した「人格」や「ペルソナ」を持たせます。自身や役割に関する詳細を記憶し、対話をより流暢かつ焦点の定まったものにします。

人格メモリの例

旅行エージェントが「スキーの専門家プランナー」として設計されている場合、人格メモリはその役割を強化し、専門家らしい口調と知識で応答するよう影響します。

ワークフロー/エピソード記憶(Workflow/Episodic Memory)

複雑なタスクでのエージェントの行動手順、成功や失敗を記憶します。これは特定の「エピソード」や過去の経験を記憶し、それらから学ぶようなものです。

エピソード記憶の例

あるフライト予約を試みたが、空席なしで失敗した場合、その失敗を記録し、別のフライトを試みるか、次回の試みで問題をより詳しくユーザーに伝えられます。

エンティティメモリ(Entity Memory)

会話から特定のエンティティ(人物、場所、物など)やイベントを抽出し、それらを記憶します。エージェントが議論された重要要素の構造化された理解を構築可能にします。

エンティティメモリの例

過去の旅行の会話から「パリ」「エッフェル塔」「Le Chat Noirレストランでのディナー」といったエンティティを抽出し、将来の会話で「Le Chat Noir」に関する新しい予約を提案できるようになります。

構造化RAG(Retrieval Augmented Generation)

RAGはより広範な技術ですが、ここで強調されている「構造化RAG」は強力なメモリ技術です。会話、メール、画像など様々な情報源から高密度で構造化された情報を抽出し、それを用いて精度、再現性、応答速度を高めます。従来のRAGが意味的類似性だけに頼るのに対し、構造化RAGは情報の固有構造を扱います。

構造化RAGの例

キーワード一致に留まらず、メールからフライトの詳細(目的地、日時、時間、航空会社)を解析して構造化保存し、「火曜日にパリ行きのどのフライトを予約したか?」といった正確な問い合わせに答えられます。

メモリの実装と保存

AIエージェントのメモリを実装するには、生成、保存、検索、統合、更新、さらには「忘却」(削除)を含むメモリ管理の体系的なプロセスが必要です。特に「検索」が重要な側面となります。

専用メモリツール

Mem0

エージェントのメモリを保存・管理する方法の一つにMem0のような専用ツールがあります。Mem0は永続的メモリ層として機能し、エージェントが関連するやり取りを呼び出し、ユーザーの好みや事実コンテキストを保存し、成功・失敗から学習します。これによりステートレスのエージェントがステートフルになります。

Mem0は二相メモリパイプライン:抽出と更新を通じて動作します。まず、エージェントのスレッドに追加されたメッセージがMem0サービスに送られ、LLMを用いて会話履歴を要約し新しいメモリを抽出します。続いてLLM駆動の更新フェーズで追加、変更、削除の判断を行い、ベクトル、グラフ、キー・バリュー型を含むハイブリッドデータストアにメモリを保存します。このシステムは様々なメモリタイプをサポートし、エンティティ間の関係管理のためにグラフメモリも組み込めます。

Cognee

もう一つの強力な方法はCogneeを使用することです。Cogneeはオープンソースのセマンティックメモリで、構造化データや非構造化データを埋め込みに基づく問い合わせ可能な知識グラフに変換します。Cogneeはデュアルストア構造を備え、ベクトル類似検索とグラフ関係を組み合わせ、情報の類似性だけでなく概念の関係性を理解できるようにします。

生データのチャンク検索からグラフ構造を考慮した質問応答まで、ベクトル類似性、グラフ構造、LLM推論を融合したハイブリッド検索に優れています。システムは連結されたグラフとして問合せ可能な生きたメモリを維持し、短期セッションコンテキストと長期持続メモリの両方をサポートします。

Cogneeノートブックチュートリアル(13-agent-memory-cognee.ipynb)は、多様なデータソースの取り込み、知識グラフの可視化、特定のエージェントニーズに合わせた異なる検索戦略でのクエリーの実例を示しています。

RAGによるメモリ保存

Mem0などの専用メモリツールに加え、Azure AI Searchのような高度な検索サービスをメモリ保存・検索のバックエンドに活用できます。特に構造化RAGに適しています。

これにより、自分のデータを活用してエージェントの応答を基盤化し、より関連性と正確性の高い回答が可能になります。Azure AI Searchはユーザー固有の旅行メモリや商品のカタログなど、ドメイン固有の知識保存に利用できます。

Azure AI Searchは構造化RAGをサポートし、会話履歴、メール、画像などの大規模データセットから高密度で構造化された情報を抽出し検索可にします。従来のテキストチャンク化や埋め込みよりも「超人的な精度と再現性」を実現します。

AIエージェントの自己改善化

自己改善型エージェントの一般的なパターンには「知識エージェント」の導入があります。この別のエージェントはユーザーと主要エージェント間の会話を観察します。その役割は:

  1. 有用な情報の特定:会話のどの部分が一般知識または特定ユーザーの好みとして保存に値するかを判断。

  2. 抽出と要約:会話から本質的な学習や好みを抽出・要約。

  3. 知識ベースへの保存:ベクトルデータベースなどにこの抽出情報を永続保存し、後で呼び出せるように。

  4. 将来の問い合わせの補強:ユーザーが新たな問いを発したときに知識エージェントが関連情報を取り出し、主要エージェントへのプロンプトに付加、重要な文脈を提供(RAGに類似)。

メモリの最適化

レイテンシ管理:ユーザー体験の遅延を避けるため、まず低コストかつ高速なモデルで価値ある情報かを素早くチェックし、必要に応じて高度な抽出・検索処理を呼び出す方法。

知識ベースの維持管理:知識ベースが大きくなる場合、使用頻度の低い情報は「コールドストレージ」へ移すことでコスト管理。

エージェントメモリについてさらに質問がありますか?

Azure AI Foundry Discordに参加して、他の学習者と交流したり、オフィスアワーに参加し、AIエージェントに関する質問を解決しましょう。


免責事項
本書類はAI翻訳サービスCo-op Translatorを用いて翻訳されています。正確さには努めておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知おきください。原文が作成された言語の文書が正式な情報源とみなされます。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用により生じるいかなる誤解や解釈の相違についても責任を負いかねます。