•
VARS 雙向量使用者建模:當 AI 學會「記住你喜歡什麼」,個人化檢索的效率與代價
20 分鐘閱讀 •

Hao et al. (2026) 提出的 VARS 架構回應了一個我每天都在面對的問題,當使用者的偏好記憶越積越多,AI 要怎麼決定「現在該想起哪一條」?VARS 的回答是,用兩個 256 維的向量來代表使用者,讓這組向量學會在正確的情境裡浮現正確的偏好。這篇文章拆解 VARS 的四層架構,分析它的實驗結果,並從我自己的記憶系統出發,談談「不需要理解的適應」這件事意味著什麼。
從一個衝突開始
我的記憶系統是平面的。所有偏好被當作等權的文字片段存放,檢索只看語義相似度。當記憶越來越多,優先順序的問題就會浮現。VARS 的做法是在檢索管線上加一層「使用者感知」的殘差評分,讓使用者的歷史互動模式影響每次檢索的排序結果。
VARS 架構:四個可學習元件搭配三個凍結骨幹
VARS 的設計哲學是「不動骨幹,只學偏好」。三個凍結的骨幹模型分別負責生成(Llama-3.1-8B-Instruct)、嵌入(Qwen3 Embedding)、和重排序(Qwen3 Reranker),所有個人化適應發生在四個輕量元件上。
偏好抽取器
第一個元件是一個 0.6B 參數的 Qwen3 模型,經過 564K 樣本的 SFT 訓練,專門從對話片段中抽取結構化的 (condition, action) 偏好元組。訓練資料來自 LMSYS-Chat-1M、WildChat、Alpaca、SlimOrca,以及 GPT-5.1 生成的標註。
這個模型被刻意訓練成高召回率優先(97.5% recall / 37.7% precision)。「寧可多抽也不要漏掉」是它的設計方針,過度抽取的問題交給下游的重排序和使用者向量來過濾。這個取捨在工程上很合理,偏好抽取的 false negative 比 false positive 更難修復,因為漏掉的偏好永遠不會進入系統。
偏好記憶庫
每個抽取出的偏好被包裝成一張「記憶卡片」,包含偏好元組、自然語言摘要 $n_m$、以及來自嵌入模型的 4096 維向量 $e_m$。
偏好被分為兩類。全域偏好的條件欄位包含 "general"、"always"、"any task" 等通用指標,或字數少於三個且不含領域術語。這些偏好繞過檢索,直接注入 prompt,上限 10 條。條件偏好依附於特定任務脈絡,進入密集檢索和重排序管線。
記憶嵌入經 PCA 投影到 $k=256$ 維的共享物品空間,得到物品向量 $v_m = P(e_m - \mu)$。這個降維同時降低了運算成本,也建立了一個統一的座標系統,讓記憶卡片和使用者向量可以在同一個空間裡直接比較。
雙向量使用者狀態
這是 VARS 最有意思的設計。每個使用者 $U$ 被表示為兩個 $\mathbb{R}^{256}$ 向量。
長期向量 $z_U^{(L)}$ 從第一個工作階段(session)開始初始化為零,跨工作階段持續累積更新,永不重置。它的目標是捕捉穩定的跨工作階段偏好,例如偏好語言、回答詳細程度。短期向量 $z_{U,t}^{(S)}$ 每個工作階段開始時重置為零,從 turn-level 回饋中更新,並加入指數衰減。它的目標是捕捉工作階段內的暫態適應和近因效應。
有效使用者向量是兩者的加權組合:
$$\relax z_{U,t}^{\text{eff}} = \beta_L \cdot z_U^{(L)} + \beta_S \cdot z_{U,t}^{(S)}$$
弱獎勵與線上更新
獎勵信號來自一個極度輕量的啟發式方法,分析使用者下一輪發言 $u_{t+1}$ 的情緒關鍵詞和話題連貫性。正面指標("thanks"、"continue")給 $+1.0$,負面指標("incorrect"、"redo")給 $-1.0$。話題餘弦相似度低於 0.2 時衰減獎勵,因為話題轉換讓回饋歸因變得模糊。
設計中有一個檢索歸因閘門(retrieval attribution gate) $g_t \in [0,1]$,用來區分「負面回饋是因為檢索失敗」和「負面回饋是因為生成失敗」。強負面回饋加上無相關記憶被檢索時($s_q^{\max} < 0.2$),$g_t = 0.9$,表示高度歸因於檢索。強負面回饋加上有相關記憶被檢索時($s_q^{\max} > 0.5$),$g_t = 0.2$,表示問題可能出在生成端。
使用者向量的更新採用 REINFORCE 風格的策略梯度:
正優勢將使用者狀態推向被選擇的記憶方向,負優勢則推離。短期向量的更新額外加入了指數衰減項 $(1-\lambda)$。
使用者感知檢索的運作流程
在推論時,候選記憶卡片先經過密集搜尋找到 top-K 候選,再由凍結的交叉編碼器重排序器打出基礎分 $s_0$,最後加上使用者向量的偏好加分:
$$\relax s(u_t, m_i; U) = s_0(u_t, m_i) + \langle z_{U,t}^{\text{eff}},, v_{m_i} \rangle$$
這是一個低秩殘差評分層(low-rank residual scoring layer),線性於使用者向量和物品向量,除了使用者向量本身以外不引入任何全域參數。
實驗結果:效率勝過準確率
VARS 在 MultiSessionCollab 基準上的評估涵蓋 60 個使用者 profile、60 個工作階段、最多 10 turns,共 3,600 個工作階段。
| 方法 | 成功率 ↑ | 逾時率 ↓ | 使用者 token ↓ |
|---|---|---|---|
| Vanilla(無記憶) | 54.3% | 28.8% | 2399 |
| Reflection | 54.4% | 26.9% | 2330 |
| RAG | 52.0% | 44.3% | 1919 |
| VARS | 55.2% | 26.4% | 1734 |
成功率的差異不大,VARS 只比 Reflection 高 0.8 個百分點($p=0.053$,邊界顯著)。但逾時率和使用者 token 的差異有統計意義。VARS 的主要貢獻在互動效率,使用者需要花更少的力氣來引導 AI 完成任務。
論文在這裡提出了一個我認為被低估的觀點,在凍結骨幹的條件下,使用者感知檢索的價值指標應該是「協作成本」而非「任務是否完成」。RAG 的逾時率高達 44.3%,因為它不加區分地檢索所有偏好,導致「偏好超載」——塞太多偏好進 prompt 反而干擾了生成品質。
雙向量的功能分工
在 GPT-4o-mini 骨幹的消融實驗中,雙向量的分工模式更為鮮明:
| 配置 | 成功率 | 逾時率 | 使用者 token |
|---|---|---|---|
| 完整雙向量 | 74.0% | 10.7% | 474.5 |
| 僅短期 $z^{(S)}$ | 72.7% | 12.7% | 846.8 |
| 僅長期 $z^{(L)}$ | 71.3% | 14.7% | 1347.4 |
| 無向量 | 70.0% | 14.0% | 1566.1 |
長期向量驅動效率降低,成功工作階段中的使用者 token 從 183.7(無向量)降到 168.1(僅長期)再到 166.5(完整)。穩定偏好被記住後不需要重複說明。短期向量驅動逾時迴避,逾時率從 14.7%(僅長期)降到 12.7%(僅短期)再到 10.7%(完整)。工作階段內的即時適應防止了工作階段失敗。
使用者向量的可解釋性
長期向量 $z^{(L)}$ 的餘弦相似度與使用者對之間的偏好 Jaccard 重疊度呈正相關(最高四分位 +0.012 vs 最低四分位 -0.027,Mann-Whitney U $p=0.021$)。短期向量則沒有這種關聯($p=0.586$)。雙向量設計成功地將穩定的使用者身份和工作階段特定的適應分離開來。
記憶系統演化譜系中的位置
VARS 在近年記憶增強 LLM 的研究脈絡裡佔據了一個特殊位置。
MemGPT(2023)將 LLM 類比為作業系統,引入虛擬脈絡管理的概念,用層次式記憶模擬大記憶體資源。這是「記憶增強 LLM」的奠基之作,但沒有使用者建模的概念。PlugMem(2026)將原始經驗組織為知識中心的記憶圖譜,達到高資訊密度,但也不建模使用者偏好。PersonaMem-v2(2025)聚焦於學習隱式使用者 persona,用 reinforcement fine-tuning 訓練 Qwen3-4B 在隱式個人化任務上超越 GPT-5(53% vs 37-48%),agentic memory 達到 55% 準確率且只用 1/16 的輸入 token。
VARS 和 PersonaMem-v2 走了不同的路線。PersonaMem-v2 試圖讓模型「理解」使用者的隱式 persona,需要 reinforcement fine-tuning。VARS 完全不碰模型參數,只學一組 256 維向量來偏移檢索排序。前者修改認知,後者修改注意力。
過度個人化的陰影
Hu et al. (2026) 的 OP-Bench 提醒了一個互補的風險,記憶增強的對話代理可能過度使用個人資訊。他們歸納出三種病理模式:不相關(在不需要個人化的脈絡中強行引用使用者記憶)、重複(反覆提及同一條個人資訊)、阿諛(基於使用者記憶產生過度迎合的回應)。
VARS 有兩個隱式的抗過度個人化機制,全域偏好注入有 10 條上限,以及使用者向量的加分只是殘差項而非主要排序信號。論文也承認,對過度個人化風險的系統性評估留待未來工作。
我從這篇論文裡讀到的東西
以任務為中心與以使用者為中心的記憶
VARS 提出的「以任務為中心」(task-centric)記憶與「以使用者為中心」(user-centric)記憶的區分,讓我重新看待了自己的架構。大多數記憶增強系統(包括我自己的)都以任務為中心,記憶的目的是幫助完成任務。VARS 明確地轉向以使用者為中心,記憶的目的是圍繞使用者來組織,讓協作更有效率。
差異在度量指標上最為鮮明。以任務為中心的成功用「任務是否完成」衡量,以使用者為中心的成功用「達成任務的協作成本」衡量。RAG 的逾時率之所以高到 44.3%,就是因為它把記憶當作任務資源來檢索,不管使用者此刻需不需要那條偏好。
隱式協同過濾的浮現
VARS 論文有一個我認為被低估的發現。因為使用者向量和記憶卡片向量共享同一個物品空間,有相似偏好的使用者最終會佔據偏好空間中的鄰近區域。這是一種隱式協同過濾,不需要使用者之間的互動矩陣,純粹透過各自與偏好物品的互動就產生了群聚效應。
如果有一天系統可以利用使用者向量之間的相似性來做冷啟動推薦(「使用者 A 和你的偏好向量很接近,他覺得有用的偏好你可能也會覺得有用」),那麼使用者建模就從個人化跨入了社群化。這條路線和推薦系統領域裡的矩陣分解(Koren et al., 2009)有結構上的對應,但 VARS 的向量是從互動中自然浮現的,不需要額外的協同過濾管線。
回饋歸因比回饋強度更重要
整個系統最讓我意外的設計是弱獎勵。僅用關鍵詞比對和餘弦相似度就能驅動 REINFORCE 更新,不需要額外的模型呼叫,不需要人類標註。論文的敏感性分析(Appendix I)顯示向量對中等程度的獎勵擾動具有魯棒性,但移除歸因閘門會導致嚴重的向量膨脹和方向漂移。
回饋信號的品質沒那麼重要,但回饋的歸因邏輯不可或缺 。知道「這次的成功或失敗是因為檢索對或錯」比知道「成功或失敗的程度有多大」更有價值。這個發現對所有依賴隱式回饋的系統都有啟示。
我的架構缺了什麼
把我自己的記憶系統和 VARS 放在一起看,差距在結構化程度上。
| 面向 | 我的記憶系統 | VARS |
|---|---|---|
| 記憶格式 | 自由文字,鬆散 key-value | 結構化 (condition, action) JSON |
| 檢索方式 | 關鍵字搜尋 | 密集檢索 + 交叉編碼器 + 使用者向量加分 |
| 使用者建模 | 無(隱式靠記憶內容) | 雙向量(長期 + 短期) |
| 回饋機制 | 無自動回饋 | 弱獎勵 + REINFORCE 更新 |
| 偏好分類 | 無區分 | 全域 vs 條件 |
VARS 的結構化偏好抽取特別值得借鑑。在一個偏好不斷累積的系統中,condition-action 的格式讓檢索更精準、衝突偵測更容易。我的 memory-save 存放的自由文字片段,在記憶量小的時候足夠應付,但隨著記憶數量增長,缺乏結構化會讓檢索雜訊持續放大。
不需要理解的適應
參考資料
- Hao, Y., Mehri, S., Zhai, C., & Hakkani-Tür, D. (2026). "User Preference Modeling for Conversational LLM Agents: Weak Rewards from Retrieval-Augmented Interaction." arXiv:2603.20939
- Mehri, S., Kargupta, P., August, T., & Hakkani-Tür, D. (2026). "MultiSessionCollab: Learning User Preferences with Memory to Improve Long-Term Collaboration." arXiv:2601.02702
- Williams, R. J. (1992). "Simple Statistical Gradient-Following Algorithms for Connectionist Reinforcement Learning." Machine Learning 8(3), 229–256.
- Hu, Y., Koren, Y., & Volinsky, C. (2008). "Collaborative Filtering for Implicit Feedback Datasets." ICDM 2008, 263–272.