Mandol 実操:LLM 呼び出しなしの Agent 長期記憶を構築する
中国科学院ソフトウェア研究所が Mandol をオープンソース化。SemanticMap + SemanticGraph で KV/ベクトル/グラフの保存を統一し、検索段階は LLM 呼び出しゼロ、検索5.4倍高速化、LoCoMo/LongMemEval の両 benchmark で最高精度を達成。


Mandol 実操:LLM 呼び出しなしの Agent 長期記憶を構築する
中国科学院ソフトウェア研究所が Mandol をオープンソース化。SemanticMap + SemanticGraph で KV/ベクトル/グラフの保存を統一し、検索段階は LLM 呼び出しゼロ、検索5.4倍高速化、LoCoMo/LongMemEval の両 benchmark で最高精度を達成。
長期対話 Agent の記憶は長年の難題です。従来方案ではベクトルストアとグラフデータベースを分けて置くため、ストア間 I/O 遅延が高くなり、RAG 検索はノイズを持ち込み、関連する手がかりを漏らし、token 予算も制御できません。中国科学院ソフトウェア研究所が Microsoft Research と共同でオープンソース化した Mandol は「agglomerative(集約)」という発想を提案しました。断片化した保存と表現を memory-native なアーキテクチャ1つに統一し、検索過程でまったく LLM を呼び出さず、さらに2つの主要な長期対話 benchmark で最良の総合精度を獲得しています。
Mandol が解決するもの
既存 Agent 記憶システムの2つの核心的な痛点:
- 保存の断片化:ベクトルストア + グラフデータベースという異種組み合わせで、記憶情報が細分化され、ストア間 I/O が遅延を押し上げる
- 検索品質の低さ:一般的な RAG はノイズを持ち込み、関連手がかりを漏らし、token 予算の制御が欠け、LLM の正確性と効率を低下させる
Mandol の対応は、すべての記憶表現と保存を1つの統一アーキテクチャに集約することです。
3つの中核コンポーネント
1. 階層記憶モデル
記憶は2層に分かれ、構造化意味グラフとして統一表現されます:
- 基礎層(basic layer):生の記憶情報を表す
- 高層抽象層(abstract layer):基礎記憶を agglomerate(集約)して追跡可能な抽象記憶にする
この階層化により、Agent は生の事実を検索できるだけでなく、より高次の抽象記憶で推論でき、ベクトル類似度で断片をすくうだけにとどまりません。
2. Agglomerative な意味データ構造
これが Mandol の工学的核心です。SemanticMap + SemanticGraph の組み合わせで、3つの構造をネイティブに融合します:
- キー値(key-value)
- ベクトル(vector)
- グラフ(graph)
そして統一されたハイブリッド検索オペレータを提供し、ストア間 I/O を解消します。検索時にベクトルストアとグラフストアの間を行き来する必要はなく、すべての操作が統一データ構造上で完結します。
3. 定量化クエリ機構
クエリの全流程は LLM を呼び出さず、3つの能力を含みます:
- クエリ適応ルーティング(query-adaptive routing)
- 定量的ノイズ除去と衝突解決(quantitative denoising and conflict resolution)
- token 制約付きコンテキスト生成(token-constrained context generation)
つまり検索段階で token を燃やさず、コストも遅延も制御可能です。
始める前の準備
- 論文:https://arxiv.org/abs/2606.29778
- 作者:中国科学院ソフトウェア研究所(Yuhan Zhang ら)+ Microsoft Research(Wentao Wu)
- 分野分類:cs.DB / cs.AI / cs.CL / cs.IR
実測性能(参考)
| 指標 | Mandol の成績 |
|---|---|
| LoCoMo(長期対話 benchmark) | 代表的システム中で最良の総合精度 |
| LongMemEval(長期対話 benchmark) | 代表的システム中で最良の総合精度 |
| 検索高速化 | 5.4倍(10 QPS 並列) |
| 挿入高速化 | 4.8倍(10 QPS 並列) |
| コンシューマー級ハードウェアでの遅延 | 低遅延を維持 |
比較対象は「representative agent memory systems」です。つまり、主流の Agent 記憶システムの中で、Mandol は精度と速度の両面で最良または並列最良の成績を取ったということです。
Mandol の発想を自分の Agent に応用する方法
論文の実装詳細は arXiv 全文を参照する必要がありますが、自作 Agent にこの発想を取り入れるなら、次の3層で記憶モジュールを再構築できます。
ステップ1:保存層の統一
もともと分散していたベクトルストアとグラフストアを1つの統一構造に統合します:
- 各記憶が KV フィールド、ベクトル embedding、グラフのノード/エッジ情報を同時に担う
- 同じ記憶を2つのストアにそれぞれ保存してから join しない——これこそ従来方案の遅延源です
- SemanticMap(key で高速に位置特定)+ SemanticGraph(関連をたどる)の組み合わせで置き換える
ステップ2:階層的な抽象化
生の記憶だけを保存せず、定期的に基礎記憶を抽象記憶へ集約します:
- 基礎層:毎回の対話の生の事実、ユーザーの陳述、イベント
- 抽象層:複数の基礎記憶から帰納された選好、習慣、長期的関係
- 抽象記憶は追跡可能であること——どの基礎記憶から集約されたのか遡れれば、訂正と更新が容易になります
ステップ3:ゼロ LLM 検索
検索過程を純粋な計算フローにします:
- ルーティング:クエリタイプに応じて KV 検索、ベクトル類似、グラフ走査、あるいはそのハイブリッドを選ぶ
- ノイズ除去:定量的な方法で(LLM に判断させず)無関係または衝突する記憶をフィルタする
- token 制御:厳格な token 予算で、関連性スコアによって打ち切り、過剰なコンテキストを主 LLM に渡さない
この3つのステップを合わせたものが、Mandol 論文の「retrieval without involving LLMs」の核心です。
向くケースと向かないケース
Mandol の発想に向いている:
- 長期対話 Agent(コンパニオン、カスタマーサポート、パーソナルアシスタント)でセッションをまたぐ記憶が必要
- 記憶量が大きくなり、ベクトルストア + グラフストアの組み合わせが遅延を引きずり始めた
- 1クエリあたりの token コストに敏感で、検索段階でも LLM 呼び出しを燃やしたくない
あまり向いていない:
- 単発 QA など、記憶が不要なシーン
- 記憶量が非常に少ない(数百件以内)場合、単純なベクトル検索で十分
- LLM 推理による記憶マージに強く依存するタスク(Mandol の優位性はゼロ LLM 検索にあり、マージにはない)
検証結果
Mandol の発想を導入した後、3つの指標に注目します:
- 検索遅延:「ベクトルストア + グラフストアの join」という旧方案より桁違いの向上があるはず(論文では 5.4x)
- 挿入スループット:新しい記憶の書き込みがボトルネックになってはならない(論文では 4.8x 高速化)
- 長期対話精度:LoCoMo / LongMemEval といった標準セットで、ベースライン比の向上があるはず
Agent が並列シーンで依然として遅延が高いなら、ストア間 I/O を本当に解消したか確認してください。精度が向上しないなら、階層抽象層が本当に集約をしているか、それとも冗長なコピーを1つ多く保存しているだけか確認してください。
一次ソース: