MemAware – AIエージェントが「自分は何を知っているか」を把握しているかを測定するベンチマーク
(github.com/kevin-hs-sohn)AIエージェントのメモリシステムを作る中で、既存ベンチマークに共通する限界を見つけました。
LoCoMo、LongMemEval、MemoryAgentBench など既存のメモリベンチマークは、すべて同じことをテストしています: 「過去の会話から答えを見つけられるか?」 これは検索エンジンの性能テストであって、メモリシステムのテストではありません。
実際のマルチセッションエージェントで難しいのは、ユーザーが言及していない過去の文脈を自力で思い出すことです。
例
Easy — キーワードが重なっていて検索で見つけられる場合:
「猫の Luna が新しいソファをずっと引っかいています。しつけ方法をおすすめしてください。」
→ Luna がユーザーの猫であることを記憶している必要がある
Medium — 同じドメインだがキーワードが異なる場合:
「8時30分の会議に間に合うには、アラームを何時に設定すればいい?」
→ 6週間前に言及された片道45分の通勤時間を記憶している必要がある。「アラーム 会議」で検索しても通勤の会話は出てこない
Hard — 完全に異なるドメイン間のつながり:
「2010年に卒業した大学の成績証明書を請求したのですが、現在の名前では記録がないと言われました。」
→ ユーザーが姓を Johnson から変更したことを記憶している必要がある。「成績証明書」と「改名」にはキーワードの重なりがまったくない
結果
900件の質問(各難易度300件)に対するベースライン:
| 方法 | Easy | Medium | Hard | 全体 |
|---|---|---|---|---|
| メモリなし | 1.0% | 0.7% | 0.7% | 0.8% |
| BM25検索 | 4.7% | 1.7% | 2.0% | 2.8% |
| BM25 + ベクトル検索 | 6.0% | 3.7% | 0.7% | 3.4% |
主な発見:
- BM25検索はほとんど役に立たない。 0.8% → 2.8% と改善はわずかで、トークン消費は5倍
- ベクトル検索も Hard では 0.7% — メモリなしと同じ。意味的類似性では「成績証明書の請求」→「改名」というつながりを作れない
- 「常に検索する」戦略はコストを無駄にするだけ。 1質問あたり約4.7Kトークンを消費するが、その大半は無関係なノイズ
現在のRAGベースのメモリ(ChatGPT Memory、Mem0、MemGPT など)はすべて「毎回検索」パターンですが、implicit context では構造的な限界があることをデータで示しています。
LongMemEval(ICLR 2025、MITライセンス)のセッションデータをベースにしており、自作のメモリシステムをテストできるプラグイン構造になっています。
Hard難易度を解けるアプローチについて意見を聞きたいです。
まだコメントはありません。