# Ontology-Guided Long-Term Agent Memory for Conversational RAG
> [!info] Talk metadata
> - **会議:** [[MLSys2026]] Day 2 (May 19 / Tue)、15:45 - 16:00 PDT
> - **登壇者:** Shuang Cao, Rui Li (Hill Research)
> - **URL:** https://mlsys.org/virtual/2026/oral/3738
> - **OpenReview:** https://openreview.net/forum?id=wpZHLPz4N0
> [!abstract] 概要
> RAG は LLM の応答を外部知識で根拠づける基盤技術であるが、長期・マルチセッション対話では暗黙的な想起失敗(implicit recall failure)が生じる。ユーザーのクエリが過去の事実と語彙的に重複しない場合、標準的な密検索やロングコンテキストプロンプティングは最も関連性の高い記憶を見逃す。本研究は対話認識型 RAG システムを提案し、永続的なユーザー事実を軽量メモリグラフへ抽出し、会話的手がかりでクエリを補強し、ハイブリッドリトリーバルを実行し、予算認識型ルーターで品質とコストを均衡させる。独自の Implicit Preference Recall ベンチマークにおいて Recall@10 = 0.706(密検索のみでは 0.580)を達成し、nDCG@10 を 0.41 から 0.51 へ改善し、クロスモダリティ不一致を 47% 削減し、ロングコンテキスト手法と比較してコストを 81% 削減する。
## 問題設定:暗黙的嗜好想起
- 長期対話では、ユーザーが過去に表明した嗜好を明示キーワードなしで参照する場面が頻出する
- 例:セッション 1 ターン 3 で「タイタニックが好き」→ 87 ターン後にセッション 3 ターン 91 で「今週末何を観るべき?」と質問。クエリには "Titanic" "romance" "Leonardo DiCaprio" のいずれも含まれない
- 密検索の Recall@10 はターン 1--20 で 0.61 だが、ターン 60 以上では 0.28 まで急落する(Figure 1)
- 核心問題はベクトル類似度が時間的・概念的ギャップを超えた長距離の連想を捉えられないこと
### Implicit Preference Recall ベンチマーク
- MovieRec(映画推薦)、FoodPref(食嗜好)、ProductivityAssist(生産性支援)の 3 ドメイン
- 500 件のマルチセッション対話、平均 73 ターン
- 既存ロングダイアログデータセット MSC (Xu et al., 2021) とユーザースタディ(自然なマルチウィーク対話)から構成
- 各対話に初期嗜好声明・50--100 の妨害ターン・キーワードフリーの暗黙クエリを含み、正解ラベル付き
## 三つの根本課題
1. **M1:キーワード重複なしでの密検索の失敗** — 嗜好声明とクエリの埋め込み距離が、嗜好自体が無関係だからではなく、標準エンコーダーが時間的ギャップをまたいだ概念連想を捉えられないために大きくなる。グラフベースリトリーバルは `User → PREFERS_GENRE → Romance` のような型付き関係で語彙重複に依存しないシンボリック走査を可能にするが、固定スキーマでは個人固有のパターンを捉えきれない
2. **M2:グラフとデンスモダリティの根本的不整合** — グラフはエイリアス処理・マルチホップ推論に優れるがカバレッジギャップが生じ、密検索は広いセマンティックマッチングを提供するが代名詞・時間参照で精度が低下する。両モダリティのトップ 10 リストは平均 3.2 件しか重複しない
3. **M3:サービング制約下での予算認識型リトリーバル戦略** — ロングコンテキスト手法は Recall@10 = 0.60 だがコストが 7.24 倍。サマリーメモリは 0.62 だがグラフに蓄積されたパーソナライゼーション信号を失う
## 提案手法:システム設計
アーキテクチャは 3 フェーズで生の対話ターンをリトリーバル可能な嗜好信号へ漸進的に変換する(Figure 2)。
### フェーズ 1:データ取り込み
各発話を 3 つのストアへ並列送信する:
- **グラフストア** — シンボリックな嗜好エッジを生成しタイムスタンプと学習可能な重みを付与
- **ベクトルストア** — 発話のデンスエンベディング(BGE-large-en-v1.5、768 次元)をメタデータ(ターン/タイムスタンプ、リンクエンティティ)とともに FAISS flat-IP インデックスに格納
- **プロファイルキャッシュ** — 最近のリトリーバルの軽量統計を追跡。ユーザーあたり約 50 KB
### フェーズ 2:クエリとリトリーバル
学習可能なルーターがクエリごとにグラフファースト/デンスファーストの経路を選択し、候補バジェットを割り当てる:
- **グラフファースト** — メタパス展開で候補を集めた後、デンスのリランク
- **デンスファースト** — セマンティック近傍を検索した後、構造的特徴で補強
### フェーズ 3:フィードバックループ
ユーザーエンゲージメント(引用確認)を監視信号として利用:
- **used-and-correct チャネル** — 回答に引用され検証されたエビデンスのエッジ重みを増加
- **missed-but-needed チャネル** — 事後的反事実実行で見逃された事実を特定しエッジ修正の候補にする
- 更新はマイクロバッチで非同期適用、リレーションごとの学習率とレート制限でホットパスのスラッシングを防止
## Tag2Graph-Learner:データ駆動型対話オントロジー
### ステップ I:エビデンス抽出と正規化
- スパンレベルの系列タガー(BIO ラベリング)でエンティティと属性メンションを特定
- 軽量な関係分類器が主語・目的語ペアを候補アトミックアサーション `{head, relation, tail, time}` としてリンク
- 制約付き LLM パスが検証のみに使用:候補トリプルと局所コンテキストを入力し、構造化された Yes/No 判定と関係フレーズの正規化を出力
- 低信頼のトリプルはベクトルストアにのみ保持しグラフには影響させない
### ステップ II:概念関係へのリフティング
- 繰り返し共起するアサーションが型付きユーザー中心関係(例:`PREFERS_GENRE=Romance`)へ**昇格**
- 昇格は意図的に保守的:オンラインで計算し安価なシグナル(リカレンス・リーセンシー重み付け・コンテキスト多様性・既存オントロジーとの互換性)を用いた浅い分類器でスコアリング
- スコアが保守的ゲートを超え、かつ支持エピソードが十分多様な場合のみ昇格
- **エイリアスと参照解決**:タイトル・ニックネーム・多言語バリアントは合意時のみマージ、不確実なケースは未マージのまま密検索で到達可能に維持
- **ガードレール**:矛盾・プライバシー敏感・テナントレベルクォータ超過時に昇格を拒否。全昇格は出自情報を保持
### ステップ III:フィードバック駆動の保守
- エッジ重みは 2 つのフィードバックチャネル(used-and-correct / missed-but-needed)で洗練
- 更新式:$w_{t+1} \leftarrow w_t + \eta \left[\mathbb{1}[e \in \mathcal{S}] - \lambda \cdot \mathbb{1}[e \in \mathcal{M}]\right]$(式 10)
- 無制限成長を防ぐため定期的に L2 正規化を適用(式 11)
- 新エッジはガードレールと基本的な整合性チェックを通過後に有効化
## Graph×Dense Consistency と統合スコアリング
### 統合スコアリング関数
各候補エビデンス $e$ とクエリ $q$ に対し 3 つのビューを結合:
$s_{\text{unified}}(e, q) = w_g \, s_{\text{graph}}(e, q) + w_d \, s_{\text{dense}}(e, q) + w_p \, s_{\text{profile}}(e, q) \quad (1)$
重みはオフラインで適合しドメイン間で安定:$w_g = 0.55$、$w_d = 0.35$、$w_p = 0.10$(Table 1)。
### 検証済み引用のみでの一貫性整合
- 全候補を強制的に整合させるのではなく、**実際に使用され正しいと検証されたエビデンス**のサブセットのみで整合
- 引用済みアイテム上でクエリごとの分布(グラフスコアから一つ、デンススコアから一つ)を形成し、両分布を近づける小さな正則化項を学習
- 一貫性損失:$\mathcal{L}_{\text{cons}} = \sum_{e \in \mathcal{E}_+} \left[\text{KL}(P_g(e|q) \| P_d(e|q)) + \text{KL}(P_d(e|q) \| P_g(e|q))\right]$(式 4)
- 効果:クロスモダリティ不一致を 47% 削減(Figure 3b)。3K アップデートで損失が安定
### 不確実性処理
- 統合スコアの上位 2 件が近接するか、2 ビュー間で大きな不一致が生じた場合、1 回限りの追加展開(グラフホップ 1 回またはデンスプローブ 1 回)を許可し再スコアリング
- レイテンシガードを超過する場合は展開をスキップし安全側のビューにフォールバック
## Learnable Routing:パーソナライゼーション対コストの最適化
### ルーター設計
- 浅いプレディクタ(2 層 MLP、128 隠れユニット)で、安価な特徴量のみを消費:エイリアスリスクの指標、最新メンションからの経過時間、クエリがグラフ上の昇格済み概念に触れるか、短いプロファイルサマリー、どの戦略が直近で成功したかのコンパクト記録
- 出力:リードモダリティ(グラフファースト/デンスファースト)、各側の候補バジェット、フォールバックプローブの可否
- 推論時間はマイクロ秒オーダー
### ルーター学習
- タイムスプリットログ+反事実リプレイでオフライン学習
- 報酬関数:$R(a, q, y) = \text{Recall}(y) - \lambda_c \cdot \text{Cost}(a) - \lambda_t \cdot \text{Latency}(a)$(式 6)
- REINFORCE +ベースライン減算で方策勾配を推定(式 9)
- 学習後は浅いスコアリング関数に蒸留してサービング層へ展開
### ルーティング分析(Figure 5a)
| クエリタイプ | グラフファースト選択率 | デンスファースト選択率 |
|---|---|---|
| パーソナライズ(エイリアス重) | 85% | 15% |
| パーソナライズ(明示的) | 72% | 28% |
| クロスドメイン | 58% | 42% |
| ファクトイド(グラフ内) | 35% | 65% |
| ファクトイド(新規) | 12% | 88% |
- エイリアスを多用する嗜好クエリではグラフファーストが圧倒的に選択される一方、新規ファクトイドではデンスファーストが主導
## 実装
- エンティティ抽出:BERT-base タガーで過剰生成し、蒸留 2 層 MLP(256 隠れ、シグモイド)でスコアリング
- 閾値超過のトリプルは制約付き LLM パスでオフライン検証し関係名を正規化
- 承認済みトリプルはユーザーシャード DGL グラフに挿入。各エッジは (i) 64 ビットタイムスタンプ/ターン ID、(ii) ソース発話 ID、(iii) float32 重み を保持
- ベクトルストア:FAISS flat-IP、BGE-large-en-v1.5 768 次元エンベディング
- ルーター:2 層 MLP(128 隠れ)、クエリタイプ指標・リーセンシーバケット・プロファイル要約のみを入力
- サービングは CPU のみ(公平なレイテンシ比較のため)。P95 レイテンシガードは 185 ms 以下
- ハードウェア:2x Intel Xeon Gold 6248R (48 コア)、256 GB RAM、4x NVIDIA A100-80GB(オフライン学習のみ)
## 実験結果
### 内部ベンチマーク(暗黙クエリスライス、Table 5)
| 手法 | R@10 | nDCG@10 | Faith. | P95 (ms) | コスト |
|---|---|---|---|---|---|
| Dense-only | 0.580 | 0.410 | 0.86 | 142 | 1.00 |
| Long-context | 0.601 | 0.423 | 0.82 | 310 | 7.24 |
| Summary-memory | 0.618 | 0.439 | 0.88 | 165 | 1.41 |
| Dense+CE-rerank | 0.647 | 0.468 | 0.90 | 190 | 1.52 |
| Query-rewrite | 0.638 | 0.456 | 0.89 | 160 | 1.38 |
| HippoRAG | 0.671 | 0.491 | 0.91 | 193 | 1.68 |
| MemoRAG | 0.643 | 0.467 | 0.88 | 201 | 1.73 |
| **提案手法** | **0.706** | **0.514** | **0.93** | **185** | **1.31** |
- Recall@10 で Dense-only に対し +21.7%、HippoRAG に対し +5.2%
- 正規化コストは Dense-only の約 1.31 倍に抑制(Long-context の約 0.18 倍、81% 削減)
- Faithfulness(正しい引用率)は 0.86 → 0.93 に向上
### LoCoMo 外部検証(Table 6)
| 手法 | R@10 | nDCG@10 | Faith. | P95 (ms) | コスト |
|---|---|---|---|---|---|
| Dense-only | 0.431 | 0.327 | 0.84 | 138 | 1.00 |
| HippoRAG | 0.531 | 0.412 | 0.89 | 195 | 1.64 |
| MemoRAG | 0.504 | 0.387 | 0.86 | 204 | 1.71 |
| **提案手法** | **0.576** | **0.451** | **0.91** | **182** | **1.28** |
- 暗黙クエリスライス(1,847 件)で Recall@10 = 0.576、nDCG@10 = 0.451
- 全 7,182 クエリ(暗黙+明示)では Recall@10 = 0.693 で、暗黙想起の最適化が明示クエリを劣化させないことを確認
### アブレーション(Table 8)
| バリアント | Recall@10 | nDCG@10 |
|---|---|---|
| フルシステム | **0.706** | **0.514** |
| w/o Tag2Graph 昇格 | 0.621 | 0.448 |
| w/o 一貫性正則化 | 0.662 | 0.479 |
| w/o ルーター(静的ポリシー) | 0.674 | 0.493 |
- Tag2Graph 昇格の除去が最大の性能低下(-0.085 R@10)をもたらし、学習済み概念エッジがキーワードフリークエリに不可欠であることを示す
### ハイパーパラメータ感度(Figure 4)
- 昇格ゲート閾値 $\tau \in [0.60, 0.80]$、一貫性重み $\lambda \in [0.05, 0.20]$ で広い安定プラトーを形成
- Recall@10 は微小な変動に留まり、細かいチューニングへの依存が低い
### 履歴長スケーリング(Figure 6)
- 1x(87 ターン)→ 8x(696 ターン)で Recall@10 は 0.706 → 0.668(-5.4%)に緩やかに低下
- nDCG@10 は 0.514 → 0.479(-6.8%)
- P95 レイテンシは 190 ms ガード内に収まり続ける(176 → 189 ms)
- ユーザーあたりストレージはほぼ線形成長:グラフ 2.5 MB → 18.1 MB、FAISS 12.0 MB → 93.1 MB
### コールドスタート対成熟プロファイル(Figure 7)
- コールドスタート(10 ターン以下)でも Recall@10 = 0.613 で Dense-only (0.557) を +0.056 上回る
- 成熟プロファイル(50 ターン超)ではギャップが拡大:0.718 vs. 0.591(+0.127)
- ルーター誤経路選択率はコールドスタートの 14.2% から成熟プロファイルの 6.8% に低下
- グラフファースト選択率は 41.2% → 71.3% に増加
### ロバスト性とヒューマン評価
- 対話病理サブセット(Table 10):エイリアス/代名詞で 0.49 → 0.66、時間ギャップで 0.52 → 0.67、省略/ダイクシスで 0.48 → 0.64
- ヒューマン評価(N=240、3 名の評定者、二重盲検、Fleiss' $\kappa$ = 0.71):提案手法は Overall 4.14 $\pm$ 0.11(1--5 リッカート)、HippoRAG は 3.89 $\pm$ 0.12、Dense-only は 3.49 $\pm$ 0.14(Table 11)
### マルチシャードスケーリング(Table 13)
| シャード数 | QPS | 効率 | P95 (ms) | MB/ユーザー |
|---|---|---|---|---|
| 1 | 38.4 | 100.0% | 184 | 14.5 |
| 4 | 137.6 | 89.6% | 191 | 14.6 |
| 16 | 451.2 | 73.4% | 197 | 14.7 |
- スループットはサブリニアにスケールし、P95 は 200 ms 未満を維持
## パーソナライゼーション対コストのトレードオフ(Figure 5b)
- 提案手法は Always-Dense に対し +62% の Implicit-Recall@10 を、+2.3 倍のコストのみで達成
- パレートフロンティア上に位置し、Always-Graph やロングコンテキストバリアントを支配
## ドリフト監視と定期再学習(Appendix B.5)
- 5 つの信号を 1 時間ローリングウィンドウで追跡:(i) Implicit-Recall@10、(ii) 正規化サービングコスト、(iii) P95 レイテンシ、(iv) グラフ・デンス一貫性ギャップ、(v) オフライン検証器発火率
- アラート閾値:Recall@10 < 0.60 (critical) / < 0.65 (warning)、P95 > 300 ms、検証器発火率 > 20%
- 8 か月間の内部デプロイメント(12.4K アクティブユーザー)で 11 回再学習を実行(約 3 週間ごと)
- 再学習は直近 14 日の累積フィードバックログ(約 35K 検証引用ペア)から 28 $\pm$ 3 分で完了(4x A100-80GB、PyTorch 2.2、bfloat16)
- 蒸留 MLP チェックポイント(スコアラー 198 KB、ルーター 67 KB)のみをホットスワップ。グラフ再構築や FAISS 再インデックスは不要
- 各再学習サイクルでドリフト前の Recall@10 水準から 0.01 以内に回復(Figure 8)
## 結論
- 学習型オントロジー構築・グラフ対デンスの一貫性整合・予算認識型ルーティングを統合した対話認識型 RAG システムを提案
- マッチドバジェット下で Recall@10 を 0.580 → 0.706 に引き上げつつコストを大幅に削減
- 軽量構造と適応的リトリーバルが、信頼性のある長期エージェントメモリへの実用的経路であることを示す