LLMに長期記憶を持たせる最新技術: Mem0/Mem0g と Sleep-Time Compute

LLMに長期記憶を持たせる最新技術: Mem0/Mem0g と Sleep-Time Compute

2025年5月13日
TAKUJI OGAWA

AIは記憶を得ることができるのか、エンジニア界を熱くしている話

どうもこんにちは。突然ですが、皆さんは「AIさん、あなた前の会話すっかり忘れてるじゃん……」ってツッコミたくなる瞬間、ありませんか? せっかく大規模言語モデル(LLM)と仲良くなってきたのに、次のセッションでは「えっ、あなた誰でしたっけ?」的な反応されると、なんとも悲しい気持ちになりますよね。 とはいえ、これまでのLLMは1回のやりとり(コンテキスト)を超える長期記憶が苦手。セッションをまたいだ知識を簡単に置き去りにしてしまう仕様でした。 ところが最近、この「忘れが激しいAI」に革命的なソリューションがガンガン登場しているのです。要するに「AIに長期記憶を与えよう!」という取り組みですね。今日はそんな最新技術、Mem0/Mem0gSleep-Time Computeを中心に、ITエンジニア視点で「これ役立つんじゃない?」と思える情報をざっくりまとめていきたいと思います。

なぜ「AIの長期記憶」が注目されているのか?

まず「長期記憶がないAI」って、何が問題なんでしょうか。 極端に言えば、チャットボットが「ベジタリアンです」と言っていたユーザに次の瞬間「焼肉行きません?」とか勧めちゃうわけです。いやいや、完全に忘れてるやん! と突っ込みたくなりますよね。 企業のチャットサポートなんかでは、これが致命傷になることも。前回の問い合わせ内容や、顧客の属性をすっぱり忘れて、またイチから説明を要求される……これはお互いに不幸です。 そこで「長期的な文脈の保持」ができるLLMがほしいよね、という話になります。 でも、ただ昔の履歴をどっさり全部読み込ませると、今度はトークン使いすぎでお財布が悲鳴を上げる。しかも会話が遅い。 じゃあどうすればいいの? という問いに答えるのが、このMem0/Mem0gSleep-Time Computeなんです。

Mem0(メモゼロ): LLMの長期記憶をスケーラブルに実装

Mem0は、2025年にChhikaraさんたちが提案した、大規模言語モデル向けの長期メモリアーキテクチャです。 やってることはシンプルに言えば「会話内容の要約」と「有用な事実の抽出・更新」をリアルタイムで実施する仕組み。 要点はこんな感じです。 - 抽出フェーズ 新しい発言(ユーザ&モデルのペア)から「これは大事だな」と思われる事実をガシガシ拾う。 - そのとき、会話の要約データや直近のメッセージを参照して、抜き出すべき情報を洗い出す。 - 更新フェーズ 抽出した事実を「既にあるメモリ」と照合して、重複や矛盾がないかチェック。 - 必要があれば、新しくADDしたりUPDATEしたり、あるいは不要ならDELETEしちゃう。 ポイントは、メモリをうまくスリムに保ちながら、必要な情報を蓄えていくこと。 昔の情報でも「これは後で使えそうだな」という知識はちゃんと残しておいて、アホみたいにトークンを使わずに過去の文脈を復元できるわけです。

Mem0g(Mem0 graph): グラフで知識を管理するともっと賢い

さて、Mem0でも十分すごいんですが、次のステップがMem0g。 ここではテキストベースでメモリを置いとくんじゃなくて、「グラフ」を使います。 「AさんはB社の社員で、B社は○○業界を対象に〜」みたいに人物や企業、イベントなどをノードとして、関係をエッジで繋ぐイメージですね。 これによって「この人とあの会社の関係は?」とか「この出来事はどのタイミングで起きたんだっけ?」といったリレーションを簡単にたどれる。 社内のドキュメント管理でも「顧客Aの担当は誰だっけ?」とか結構あるあるですよね? それがグラフDB(Neo4jなど)上にあるとめっちゃ検索しやすいんです。 ただグラフ化は「関係抽出」とか「エンティティ抽出」が必要で、そのぶん負荷や構築コストは多少上がります。 でもイベントを時系列で分析したり、どういうツリー構造で繋がってるかをたどる場面では、Mem0gの威力が爆上がりするというわけですね。

Sleep-Time Compute:AIに「寝てる間にこっそり復習」させよう

次はSleep-Time Compute。 これ面白いコンセプトで、「AIがアイドル状態のときに裏で計算を回し、記憶の整理や予測しておく」って発想です。 ちょっと人間ぽいですよね。私たちも寝ている間に一日の出来事を頭の中でまとめて、次の日に備える、みたいな。 具体的にはこういうメリットがあります。 - 日中(ユーザが問い合わせしている最中)はパパッと応答したいじゃないですか。 - でも難しい予測や大きめの計算が必要だと時間がかかる……。 - だったら夜中とかユーザがやり取りしていない間に先に考えておけばいい。 - そうすれば、実際の問い合わせが来たときには「あ、もう答え出来てますよ」ってサクッと返せる。 要はリアルタイムの負荷を減らしつつ、高度な計算や知識整理をやっておくことで、処理スピードと精度を両立するわけです。 もちろん、その結果を保存する「メモリ構造」がなければ意味がないので、Mem0やMem0gみたいな長期記憶システムとセットで導入するのがポイント。

Sleep-Timeエージェントの設計例

Letta社のMemGPT 2.0という構成を例にすると、 - メインエージェント(ユーザと対話する担当) - スリープタイムエージェント(裏でメモリを整理したり更新したりする担当) という二人体制にするわけです。 対話中はメインが迅速に返事しつつ、裏ではスリープタイムエージェントがメモリをガシャガシャ整理している。 すると「対話そのものの遅延」を減らしつつ「学習(メモリ管理)もきちんとやる」が両立できるんですね。 LangChain社のLangMemみたいなSDKもこういう思想を取り入れていて、バックグラウンドで要約・抽出して大事な情報をスルッと保存してくれる。 結果として、ユーザは「なんかこのチャットボット、毎回話が通じるし、前回のことをちゃんと覚えてる!」と感動するわけですよ。これは嬉しい。

プラスαの要素:LangGraphやMCP/ACPなど

LangGraphでエージェント設計を可視化

「長期記憶を与える」といっても、実装面ではけっこう複雑なフローやツール呼び出しが発生します。 そこでLangGraphなんていうフレームワークが注目されていて、エージェント同士のワークフローをグラフ的に定義できるようになっています。 単純な「直列のチェーン」じゃなくて、分岐やループ、複数のエージェントが同時に走るなども表現しやすいんですね。 特に「メインエージェント」「メモリ管理エージェント」といった複数エージェントシステムを組むときに重宝します。

MCPとACPでプロトコルを統一

一方で、「外部データベースやツールとのつなぎ込みってどうやるの?」問題もあります。 そこでMCP (Model Context Protocol)ACP (Agent Communication Protocol) という標準化の動きが出てきています。 - MCPはAnthropic社発で、LLMに外部データや機能を注入するための統一規格。要は「AI向けUSBハブ」みたいなイメージです。 - ACPはBeeAIとIBMが提唱で、オンプレ環境のエージェント同士を軽量に連携させるためのプロトコル。 これらのプロトコルが普及すると、社内データベースに簡単に接続して「メモリ情報を更新・取得」したり、複数エージェントの協働がしやすくなる。 日本企業だとセキュリティ面が気になりますが、認証やアクセス制御がしっかり定義されているので安心……というわけですね。

どう使う? 長期メモリ導入のベストプラクティス

最後に、ITエンジニアの皆さん向けに「長期記憶を導入するときに気をつけたいポイント」をざっと整理します。 - メモリの定期的な整理・圧縮 重要な事実とどうでもいい情報を区別する仕組みを入れましょう。 - Mem0やLangMemみたいに、バックグラウンドで自動要約するのが便利。 - 効率的な検索 (Retrieval) ベクトルDB(FAISSやMilvus、Pineconeなど)を使うと検索が高速で快適。 - ただしテキスト検索だけじゃなく、Mem0gみたいにグラフ検索を組み合わせるとさらに賢くなることも。 - セキュリティとデータガバナンス ユーザの機密情報や個人データがメモリに入る場合は暗号化やアクセス権限をしっかり管理。 - デマ情報やプロンプトインジェクション対策として、保存内容をLLMでフィルタリングしたり矛盾を検知したりする仕組みも重要。

まとめ:忘れないAIは企業の新戦力になるかも?

さて、ここまで「LLMに長期記憶を持たせる最新技術」をざっくり見てきました。 Mem0/Mem0gでしっかり記憶を管理して、Sleep-Time Computeでアイドル時間に復習させておけば、チャットボットやエージェントが「ずっとお利口さん」になってくれる可能性が高まります。 ユーザの問い合わせ対応から社内ドキュメントの一元管理、あるいは分析業務や提案業務など、「長期的な文脈」が大事なところほど、この技術が本領を発揮するでしょう。