この記事は Anthrotech Advent Calendar 2025 の 21 日目の記事です。
昨日は fid さんの記事でした。「スクラムから離れて気づいたこと」といううことでスクラム開発に関する体験談を書いていただいています。新卒で入社されてからすぐにチームにスクラムを導入しようと奮闘されたそうです。すごい!
こんにちは。ねむのみです。前回の記事から随分と間があいてしまいましたが、2025年のアドベントカレンダー記事として、最近気になっている「AIの記憶」について書いてみたいと思います。
LLMの進化と「記憶」というフロンティア
近年の深層学習ブームはとどまることを知らず、新しいLLM(大規模言語モデル)が次々と発表されています。性能の進歩は凄まじく、数年前には夢物語だと思っていた図表の精密な読み取りなども、今や当たり前になりつつあります。
こうした進歩の中で、ビジネス的にも技術的にも大きなフロンティアとなっているのが**「AIの記憶」**です。
そもそもニューラルネットワークは基本的にステートレス(状態を持たない)であり、どのように記憶を持たせるかという議論は古くからありました。深層学習の文脈では、かつては**LSTM(Long Short-Term Memory)**のようなRNN(再帰型ニューラルネットワーク)の研究が盛んでした。しかし当時のモデルは、入力が長くなると過去の情報を忘れてしまう問題を抱えており、現在のLLMの基準からすれば非常に短い文脈しか扱えませんでした。
その後、現在のChatGPTの核となるTransformer構造が登場します。これにより扱えるコンテキストは飛躍的に増えましたが、それでも「セッションを跨いだ長期的な記憶」の実現には工夫が必要です。
「Akuku」に命を吹き込むために
私は現在、**「Akuku(アクク)」**というキャラクターのチャットボットをVR空間で運用しています。彼は酒場の店主という設定で、毎週のイベントで来場者と交流します。
馴染みの店に行ったとき、マスターが「先週話していたあの件、どうなりました?」と声をかけてくれたら嬉しいですよね。キャラクターに「命」を感じさせるには、セッションを超えて記憶を引き継ぐことが不可欠です。
一般的なライブラリでは、直近数件の会話履歴をコンテキストに含めることで文脈を維持しますが、これでは「思い出せる」のは直近のやり取りに限られます。また、履歴が増えすぎると最新の問いかけに対する返答が疎かになる「情報の混濁」も発生しやすくなります。
そこで注目したいのが、記憶を外部ツールとして切り出す**MCP(Model Context Protocol)**などの仕組みと、それを活用した「記憶のサービス化」です。
記憶レイヤーの旗手:mem0
まずご紹介したいのが、**mem0(メムゼロ)**です。
mem0は「AIアプリのためのメモリーレイヤー」を標榜しており、Y Combinatorなどから多額の出資を受けている期待のプロジェクトです。SaaS版のほか、セルフホスト可能なOSS版も公開されています。
このサービス最大の特徴は、既存のAIスタックに**「記憶の層」を後付けできる**点にあります。 内部的には、ユーザーの発言から重要な事実や好みを抽出し、ベクトルDBやグラフDB、キーバリューDBを組み合わせたハイブリッドな手法で保存します。
- 制御の柔軟性: ユーザー、セッション、AIエージェントの各レベルでメモリを保持できます。
- 高度な検索: 関連性、重要度、新しさをスコアリングして、最適なコンテキストのみをLLMに提示します。
- MCP対応:
mem0-mcp-serverを通じて、AIエージェントが自ら情報を保存・検索するツールとして利用可能です。
ただし、mem0は情報の抽出や検索のたびにLLMを介するプロセスがあるため、使い勝手やコスト、精度のバランスを考慮する必要があります。
爆速のプロファイル型:Memobase
もう一つ、非常に興味深いアプローチをとっているのがMemobaseです。
こちらは「ユーザープロファイルベース」の記憶システムを謳っています。 最大の特徴は、非構造化データとして記憶を放り込むのではなく、**「プロファイル(構造化データ)」と「イベント(時系列リスト)」**という形で管理する点です。
- 圧倒的な低レイテンシ: RAG(検索拡張生成)のように会話のたびにLLMに「何を思い出すべきか」を判断させる必要がありません。あらかじめ生成されたプロファイルをコンテキストに埋め込むだけなので、100ms以下の高速応答が可能です。
- 低コストなバッチ処理: 各ユーザーにバッファが用意されており、会話の後にまとめて処理(フラッシュ)することで、LLMの呼び出し回数を抑えています。
- 時間認識: 「いつ」その情報が得られたかを重視しており、古い情報が今のAIに悪影響を与えるのを防ぎます。
Memobaseは「あらかじめ定義したプロファイル(職業、趣味、性格など)」に情報を流し込む形式のため、雑多な情報をまるごと記憶するのには不向きですが、パーソナライズされたアシスタントを作るには非常に強力な武器になります。
Akukuの実装:ハイブリッドな記憶戦略
さて、話をAkukuくんの開発に戻します。チャットボットにとってレスポンスの速さは正義です。そのため、重い検索を伴う一般的なRAGのみの採用は避けたいと考えました。
一方で、プロファイル方式だけでは、何気ない雑談の中にある「点と点」の情報を取りこぼしてしまいます。そこでAkukuでは、両者の中間的なアプローチを採用しています。
- プロファイル参照: 会話が始まると、まずMemobase的なアプローチでユーザーの基礎情報(名前、好みなど)をコンテキストに含めてLLMに投げます。
- オンデマンドRAG: もし会話の中でより詳細な過去の出来事が必要になった場合のみ、mem0のようなRAG方式で記憶を「思い出す」ツールをLLMが呼び出します。
- グラフDBの活用: ユーザーの相関関係や複雑なエピソードはグラフデータベースに挿入し、構造的に整理しています。
これにより、**「普段のことはよく知っていてテンポよく反応するけれど、必要に応じて深い思い出も語れる店主」**のような振る舞いを目指しています。
まとめ
AIに記憶を持たせることは、単に過去のログを保存することではありません。それは、AIがユーザーと共に記憶を共有し、より深い関係性を築くためのプロセスです。
記憶の管理は、**「手帳のプロフィール欄(Memobase)」と「詳細な日記の索引(mem0)」**を使い分けるようなものです。プロフィール欄を見ればすぐに誰か分かりますし、もっと詳しく知りたければ日記をめくればいい。この使い分けが、AIキャラクターによりそれらしい個性を与える鍵になるのではないでしょうか。