記憶系統檢討

LongMemEval 500 題拿到 88.2%,答錯 59 題。逐題查錯在哪,再對照老師跟隊長的做法,看哪一招補哪一個洞。2026-10-10

一句話:問題不在「答」,在「找」。證據撈齊的 412 題答對 97.1%,證據沒撈齊的 58 題只答對 25.9%。答錯的 59 題裡,43 題是檢索沒把證據撈回來,只有 12 題是撈齊了還答錯。所以改進要先押在「怎麼找」,這剛好是老師那套的強項。

59 題錯在哪

證據撈到一部分 證據完全沒撈到 撈齊了還答錯 該說不知道卻硬答
題型錯主要原因
多段推理2619 題證據只撈到一部分(要加總、要數幾樣的題)
時間推理2118 題檢索失手,其中 8 題問句是「10 天前」「兩週前」這種相對時間
單段・使用者說過54 題完全沒撈到(換個說法就找不到)
知識更新53 題撈齊了,但新舊兩個值都在,模型說「兩個說法衝突」不敢選
單段・偏好2撈不到 1、答錯 1

另有 4 題拒答題(紀錄裡根本沒提過)被硬答,分散在多段、時間、知識更新三型。

四種錯,長這樣

「我 10 天前買了什麼廚房家電?」 正解:煙燻爐
向量檢索比的是語意,「10 天前」這幾個字跟任何一段對話都不像,所以那天的紀錄根本沒被撈上來。時間要當成搜尋條件,不能當成搜尋字。
「我在市集賣東西總共賺了多少?」 正解:495 美元
三次市集分散在三段對話,前 5 段只撈到兩段,模型老老實實加出 345。要加總、要數幾樣的題,證據一定散在好幾段。
「我的 Converse 穿過幾次?」 正解:六次
早先說四次、後來說六次,兩段都撈到了,模型回「四次,但你另一次說六次,兩個衝突」。系統沒告訴它哪一筆取代了哪一筆。
「我在 Google 開始工作前做了多久?」 正解:資料不足(紀錄裡是 NovaTech,不是 Google)
模型發現公司名對不上,還是照算一個數字給你。答之前沒有一道「關鍵名詞對不對得上」的檢查。

老師跟隊長,各押一邊

老師:押「找得到」

Hermes Agent 外掛 Hindsight 記憶(PostgreSQL+向量+全文索引)

  • 寫入不靠自覺:每回合結束,背景自動把對話拆成一條條事實存起來
  • 召回同時走四路:語意、關鍵字、關係、時間,再合併重排
  • 時間是搜尋條件:問「上週」就先把上週那段框出來
  • 每則訊息進來先召回,再回答

隊長:押「不出錯」

AIWFF,記憶卡 2,438 張,寫入與回覆前都有程式檢查

  • 寫入時標來源:真人原話/排程/系統,召回時分開用
  • 日期存絕對日期加星期,不存「下週三」
  • 新事實要標明取代哪一筆舊的
  • 沒有原話編號的不准寫;回覆前跑規則檢查,用約 20 題量

兩套剛好互補。我們這次的洞,大半落在老師那一邊(找),小半落在隊長那一邊(檢查)。

哪一招補哪個洞

招式來自補哪類錯預估加分
作答讀前 10 段,檢索改成關鍵字+向量+重排老師(四路召回)撈不齊、換說法找不到+3~4
時間當搜尋條件;日期存絕對日期加星期老師+隊長相對時間題、時間順序題+1~2
新事實標明取代哪一筆,作答一律以新的為準隊長知識更新的「兩個說法衝突」+0.5
作答前檢查:問句的關鍵名詞在證據裡找不到就說不知道隊長(押檢查)拒答題硬答+0.5~1
寫入時拆成事實;我們再加候選區、每天合併老師(自動抽事實)加總題、數幾樣的題+1~3

預估怎麼來的:前 10 段能讓 25 題的證據補齊,證據齊與不齊的答對率差 71 個百分點,25 × 0.71 ≈ 18 題 ≈ 3.6 分;其餘按各類錯題數打折估。各招會重疊,不能直接相加。理論天花板是「證據全部撈齊」,大約 96 分。

建議順序

  1. 先改檢索,不動記憶結構最便宜一次就量得出來
    讀前 10 段、檢索改用混合模式(本來就有關鍵字索引跟重排,這次只用了向量)。代價是每題 input 約翻倍。
  2. 時間當搜尋條件中等
    問句裡的「10 天前」「上週」先換算成日期區間,只在區間內找;寫入時同時存絕對日期跟星期。這也直接改善日常的「我上週說過什麼」。
  3. 兩條小規則:取代鏈+作答前檢查小
    新事實記下它取代哪一筆;回答前核對關鍵名詞有沒有在證據裡,對不上就說不知道。
  4. 寫入時拆事實、每天合併最大已有卡
    就是上午開的那張(每回合背景抽事實、標說話者、帶情緒強度)。抽出來的先進候選區、每天合併再成卡,避開老師遇過的「早安、新聞被存成事實」。工程量最大,等前三步量完再決定要不要做到多細。

怎麼量才不燒錢:每改一步,只重跑答錯的 59 題加隨機抽 100 題答對的(約 160 題、400 萬 token 上下),看救回幾題、有沒有把原本對的弄錯。累積兩三步之後再跑一次全量 500 題,拿正式分數。

不只是為了考試

這幾類錯,日常都碰得到: