去年の12月、AIを使ったSEOパイプラインを構築していました。context/ ディレクトリ配下に充実した「LLM Wiki」を用意していて、構造化されたアーキテクチャドキュメントや、エージェントが grep できる関数インデックスなど、必要なものはすべて揃っていました。公平に言って、コンテキスト汚染(context pollution)が始まるまでは本当に素晴らしいシステムだったんです。エージェントが、まさにその同じセッション中に更新したはずの古い情報を思い出し始めました。まっさらなコンテキストで生成された新しいエージェントも、即座に同じ時代遅れのデタラメを吐き出し始めます。エージェントはすでに読んだファイルを何度も読み返し、本来存在するはずのない矛盾を解消しようとして、コンテキストウィンドウは2倍の速さで埋まっていきました。その間、私はエージェントにブチギレて罵声を浴びせ続け、返ってくるのは相変わらずの「おっしゃる通りです!」(クソが、この世で一番嫌いな言葉です)でした。
取得されたコンテキストには、エージェントがでっち上げた内容も含まれていました。システムは観察された事実と推測や捏造を区別していなかったため、次のエージェントがそれらすべてを「証拠」として使えてしまっていたのです。
私はこれまで、リトリーバル(関連するチャンクを見つけてコンテキストウィンドウに流し込むこと)に多くの労力を費やしてきました。しかし、取得した主張が裏付けのあるものか、あるいはまだ有効なものかをチェックする仕組みをシステムに組み込んでいませんでした。それこそが、私が取り組むべきメモリの課題となったのです。
これがいわゆる「コンテキストの腐敗(context rot)」と呼ばれる現象です。
RAG では、類似度によって関連テキストを見つけることができます。しかし、そのテキストが正しいかどうかまでは担保してくれません。6週間前に保存された裏付けのない主張であっても、今日のクエリに対して高い類似度でヒットしてしまうことがあります。
Mem0 や Zep のような製品はセッションをまたぐメモリに対応していますが、単に永続化するだけでは矛盾するメモの解決にはなりません。エージェントが月曜日に「OAuthを使用」と保存し、火曜日に「APIキーを使用」と保存した場合、システムが変更されたのか、異なるコンポーネントについての記述なのか、それとも片方が間違っていたのかを知る必要があります。タイムスタンプも役立ちますが、最新の記述が最も確かな証拠に基づいているとは限りません。私は各主張に対する証拠を保持し、矛盾がどのように解決されたかを記録したいと考えています。
エージェントはある検索結果に基づいて判断を下し、その判断を後の決定のコンテキストとして利用することがあります。私はそうした依存関係を追跡したいのです。もしある観測結果が誤りだと判明した場合、それに依存していた結論を特定できるようにすべきです。
研究コミュニティもこの問題に気づき始めています。今年公開されたGoogle DeepMindの論文では「認識論的ドリフト(epistemic drift)」について論じられており、調整が不十分なAIシステムが自信満々に信頼性の低い情報を提供することで、時間とともに人間の判断力を実際に低下させていく様子が示されています。また、マルチターン推論における「信念の逸脱(belief deviation)」に関する研究では、エージェントの内部状態が一貫性から大きく逸脱したタイミングを検知するだけで、パフォーマンスが30ポイントも向上することが示されています。単に情報を保存して検索するという雑なアプローチがどう見てもスケールしないため、複数のグループがそれぞれ独自に「信念の改訂(belief revision)」のフォーマルなモデルへと集約しつつあります。
面白いことに、生物学は何千年も前にこの問題を解決していました。海馬が特定のエピソードを迅速かつスパースに符号化し、大脳新皮質が一般化された知識を時間をかけて固定化します。そしてシステム全体が夜間のプロセスを実行し、何が「起きた出来事」から「知っていること」へと昇格するかを決定します。睡眠中のシャープウェーブ・リップル(Sharp-wave ripples)や、忘却のための明確なメカニズムが備わっているのです。
この比較において私が興味を持っているのは「選択的な保持(selective retention)」です。何が保持され、何が修正され、何が忘れられるのか。これらはまさにエージェントのメモリに適用したい問いです。
!! オタクの早口語り警報 :3 !!
とはいえ、正しい方向への動きもいくつか出てきています。HippoRAG はナレッジグラフと PageRank を使って海馬のインデックス理論を明示的にモデル化し、生物学の知見を真剣に取り入れることでマルチホップQAにおいて20%の精度向上を達成しました。また、ロボティクス分野におけるサプライズ制御のエピソードメモリに関する研究では、新規な観測結果のみが保存される仕組みになっており、これは脳が行っている顕著性フィルタリングそのものです。
Zep はエピソード層と意味層を持つ時系列ナレッジグラフを構築しました。Hindsight はさらに進んで、4つの独立したメモリネットワークと競合解決ポリシーを備えていますが、矛盾は保存前に解決されるのではなく、依然としてタイムスタンプ付きで保持されており、エージェントがなぜその発言をしたのかを正確に追跡する具体的な手法はありません。
Engrammic で目指しているのは、信念のステータス、書き込み時の矛盾処理、そしてまとめて検証可能なプロベナンス(来歴)です。目的は、取得した主張が現在も成り立っているかどうか、またどの主張がそれに依存しているかを確認できるようにすることです。
ここで言う「信念(belief)」とは、観測によって裏付けられた解釈のことです。「彼女に既読スルーされた」は観測です。「既読スルーされたし、普段はそんなことしないから、彼女は怒っている」は解釈であり、返信が来れば変わる可能性があります。システムにはこの区別を維持してほしいのです。
この設計では、検証や編集ができるよう、記録をモデルの重みの外側に置きたいと考えています。パラメータあたり約3.6ビットと見積もる研究はモデルのストレージ容量を検証していますが、容量だけでは各主張に対して監査可能な記録を得ることはできません。それこそが、私が満たそうとしている要件です。
なぜその主張をしたのかをモデルに尋ねても、そこにどのように至ったのかを客観的に検証できる記録は得られません。そのためには、保存された観測結果と、どの結論がそれらを使用したかを示すリンクが必要です。また、それらのリンクは改訂を経ても維持される必要があります。
私たちはこれを「外在化された認識論(externalized epistemics)」と呼んでいます。「Engrammic」という名前は、脳内の仮想的な記憶痕跡である「エングラム(engram)」に由来しています。ソフトウェアにおけるコンセプトは、主張をその証拠、ステータス、関係性とセットで保存し、検査や修正を行えるようにすることです。
具体的に言えば、すでに「彼女は怒っている」が存在する状態で、エージェントが「返信が来た、問題ない」を保存しようとした場合、システムは単にもう1行追記するだけでは済ませません。競合としてフラグを立て、解決を強制します。古い信念が何に置き換えられたかを示す明示的なリンクとともに破棄されるか、新しい観測が却下されるか、あるいは人間の入力を待つために両方が保留状態にされます。しかし、後々必ず再浮上してすべてを混乱させるような矛盾した事実の「暗黙の蓄積」だけは絶対に起きません。
これは、すべての信念に来歴(トレース)があることを意味します。「モデルがこれを生成した」ではなく、「これは日時 A, B, C に記録された観測 X, Y, Z に基づいており、その確信度は時間の経過とともに減衰した」となるわけです。企業から「なぜ御社のエージェントは顧客にこんなことを言ったのか」と問われた際、肩をすくめるのではなく、グラフをたどって回答できます。また、忘却が実際に設計された機能になることを意味します。古い観測は減衰し、古くなったコンテキストは薄れ、システムは何を残すべきかを積極的に判断します。目指しているのは、ある種の「完璧な」想起ではなく、関連性に対する優れた判断力です。
これはテキストを保存して検索する以上の仕組みを伴いますが、多くのセッションにわたって蓄積された記録に基づいて意思決定を行うエージェントにとっては、試す価値が十分にあると考えています。
共有メモリを使用する場合、競合の処理は特に重要になります。もし agent 1 と agent 2 が矛盾する観測結果を書き込んだ場合、agent 3 は何を受け取るべきでしょうか。不一致を認識するのに十分なコンテキストと、元の証拠を失うことなく解決策を記録する方法が必要になります。
また、LeCunの JEPA の研究で論じられている外部メモリの役割を含め、これが世界モデルやロボティクスにどう適用できるかにも興味があります。保存された観測結果に基づいて動作するシステムに対しても、来歴、矛盾する記録、改訂について同じ問いを投げかけたいと思っています。
技術論文は engrammic.ai/research にあり、コアアーキテクチャはオープンソースです。エージェントメモリ、信念の改訂、またはエージェント間の協調に取り組んでいる方がいれば、ぜひ情報交換しましょう。共同研究者を募集していますし、リポジトリへの質問やIssueも大歓迎です。
私にとっての試金石は、そもそもこのプロジェクトを始めるきっかけとなった問題です。エージェントが古い主張を繰り返したとき、それがどこから来たのかを突き止め、修正し、次のエージェントがそれを繰り返さないようにできるかどうかです。
ヘッダー画像: cosmos.so