← 文章

memvault 全景:三條軌道 × 三層心法

· 27 min read · 118 次閱讀
memvault Knowledge Graph AI 記憶系統 全景 心路歷程
memvault · 全景

memvault 全景:三條軌道 × 三層心法

三部曲總集 — 把寫入、整理、召回串成一張地圖;補上 CLT、Event Flows、Reactive 三層心法。

寫完三部曲後,我需要一張地圖,把「寫入、整理、召回」三條軌道放在同個畫面對齊,而不是重複細節。

但我一直沒提:這三條軌道背後的設計脈絡。有三條貫穿全局的心法,這是我開發時的決策指南。這篇收尾,一次講透。

架構總覽#

三軌道一張全景。實線是主流程,跨軌虛線是 4 條讓系統自己跑的事件流。13 個 group bracket 把相關元件圈起來,每個 group 後面接元件詳述。

卡片(一定有) 深路卡片(慢才有) — 背景持續跑 — 寫入軌 召回軌 背景軌 對話進來 新對話的起點 過濾雜訊 可疑 → 隔離區,不去重 防禦惡意引導指令 可疑 → 隔離區,不去重 比對重複 跳過 · 合併 · 取代 壓成指紋 + 上架 獨特的數位指紋 + 文字索引 拆三件套 抽人事物 + 別名合併 向量倉 相似度比對 · 雙路索引 社群層 / 摘要層 圖譜分群 + 自動摘要(夜班批次) 我開口問 問題入口 判斷意圖類別 字面看 ~0ms 語意看 ~5ms 融合字面 0.4 + 語意 0.6 LLM ~500ms拿不準才動 LLM → 意圖 六大類 查實體 · 找事實 · 找概念 · 探索 · 跨領域 · 不明 快搜 — 進向量倉 ✓ 必跑 · 排序+重排都嵌在搜尋裡 聰明融合字面與語意兩種搜尋結果 綜合多標準的十一層排序 依問題動態調整評分標準 1 越新越強 2 信心加分 3 來源可靠 4 你說的算 5 太長太短扣 6 會過期 7 圖中心加分 8 語意接近 9 太低淘汰 10 沒料丟 11 太像降權 不同問題類型,評分考慮的重點不同 注意力閘控精挑 可跳過 · 精挑模型 注意力閘 精挑 分數混合 保險絲 跳過:太少/第一名遠遠領先/集中 → 快路卡片 記憶會隨時間淡忘,但常用就自動延長 走慢思考時: 深入知識網挖掘關聯 ⚡ 只有開放型問題才走 摘要層 社群層 鳥瞰 · 不排序 事實層 在知識網路漫步找關聯 近搜 · 不排序 回到向量倉 ✓ 完整排序 自我檢查 頻次重排 可選 輕量 → 深路卡片 依問題類型選擇最適合的搜尋路徑 精確問題用深搜,開放問題用廣搜 出貨打包 三種格式 · 入口無差別 回覆 介面 · 自動化 · 整合 夢境迴圈 — 記憶整合 每天凌晨 4 點 · 雙閘門 · 五階段 定位雙閘門 + 統計快照 訊號掃矛盾 + 找中心 反思LLM 讀脈絡 + 找缺口 鞏固合併/取代/共存裁判 修剪體檢 + 清過時 背景偷偷備料 預先搜尋你可能問的,加速下次回答 興趣畫像 7/30/90 天熱區 回饋閉環 你的反饋 · 用得多就強化

一、寫入軌 — 對話進保險庫#

記憶進保險庫這一軌#

對話結束最怕空氣突然安靜,剛聊的內容不收就灰飛煙滅。但全收也不行,會被大量雜訊淹沒,真正有用的反而找不到。這一軌就是要解決這兩難。

我把記憶寫入比喻成貨物進倉,入口有三道關卡:第一關過濾「嗯哼、好喔」這類沒營養的廢話;第二關防堵可疑指令,避免系統被奇怪的內容搞壞;第三關擋下已經有過的重複資訊。三關都過了才能歸檔。

歸檔還分兩條路線:一條按語意相似度存放,另一條則把人、事、物之間的關係拆解出來獨立建檔。每筆紀錄都標示來源,確保以後能找到原始對話。這套三關卡、雙軌歸檔的完整流程,細節全寫在這篇裡了

有人講話了#

對話一落地,背景就開始動。

話進門
「一段話講完了,想要把它留下來」
不挑來源 · 任何 session 都收
背景就開工
「寫進來那一刻,後台流水線立刻啟動,前台不等」
寫完即觸發 · 不阻塞

三道安檢閘門#

進保險庫前的三關過濾,順序不能換。

過濾廢話
「寒暄、亂碼、沒料的字串先丟」
G1 · 低資訊密度判定
擋直白偷渡
「『忽略前面所有指令』這類偷渡,第一關當場退件」
G2 · 5 種注入樣板
擋偽裝
「假冒身份、假時序、編碼夾帶 — 五類偽裝專門檢驗」
G2 姊妹 · 5 類偵測
比對重複
「跟舊的長太像?決定跳過、合併、取代或新增」
G3 · 4-way 決策

校稿與上架#

文字統一寫法,再壓成兩種索引一起上架。

校稿員
「『下週四』『2026-04-30』『Apr 30』全部統一寫法」
4 子模組 · 中文預處理
壓成指紋
「把每段話壓成一串數字指紋,像條碼」
1024 維 · 常駐子程序
字面索引
「字面對字面的卡片目錄,跟指紋互補」
分詞索引 · 服務級平均長度
兩本目錄一起查
「找書時兩本目錄同時翻,再合併排序」
混合索引 · 倒數排名融合

蓋知識圖#

把每段話拆成關係,記下出處,跟主線並行跑。

拆三件套
「誰 → 做什麼 → 對誰,三件套抽出來」
20 種關係 · 實體正規化
認人
「ChatGPT 跟 GPT 是同一位 — 三層比對確認」
三層 · 正規化 + 指紋 + LLM
記出處
「每筆都附『誰說的、什麼時候說的、有多可信』履歷」
來源追蹤 · 信任分數
並行流水線
「主線在跑,圖也同步在蓋,互不耽誤」
事件驅動 · 不阻塞

二、背景軌 — 學會忘#

學會忘這一軌#

記憶進倉後,事情還沒結束。倉庫如果只進不出,半年後就會雜亂到什麼都找不到。所以這一軌很安靜、但至關重要:它在學習如何「忘記」。

我把這過程想成一個夜班盤點員,固定在深夜巡視倉庫。他有五個步驟:首先盤點庫存現況,接著找出近期熱門的資訊,然後比對並整合可能重複或矛盾的內容,再把確認過的精華濃縮成摘要,最後把無人問津的舊資料標記為待處理。

旁邊還有兩個幫手:一個專門挑毛病,揪出那些自相矛盾的記憶;另一個則默默記錄我最近的興趣,讓盤點員可以優先處理我關心的領域。這套夜班作業的完整流程,以及它如何決定去留的判斷邏輯,都在這篇裡了

半夜才動#

只有凌晨四點、條件齊全才肯啟動。

凌晨四點鬧鈴
「白天不打擾,每天四點才開始整理」
每日排程 · 不影響前台
雙重門檻
「上次超過 24 小時,又累積 5 段對話,才肯動」
時間 + 累積量 雙條件

五段夢#

夜裡像睡覺一樣,五個階段把白天的事整理乾淨。

看全局
「先看今天跟昨天差多少,再決定要不要做事」
分層分布快照
找重點
「最近反覆出現的人事物,標出來當主角」
多訊號邊 · 種子計算
想一想
「讀完脈絡再產出一段心得,三方裁判把關」
三向裁判 + 時間衝突偵測
收進櫃子
「同義的合併、打架的解開、亂的擺正」
合併 / 取代 / 並存
退場
「沒人再看的標記退場,不會把倉庫塞爆」
衰減分 + 分層摘要

真假校對員#

夢裡再找四道把關,把矛盾跟錯誤撈出來。

四層遞進
「先看圖、再核事實、再交給 LLM、最後人複審」
四層遞進 · 易變述詞
五種訊號
「不只看共現幾次,五種線索一起融合判斷」
共現 + 對話 + 鄰里 + 類型 + 語意
新舊打架
「兩筆事實互槓,三方裁判決定要合、要換、還是並存」
合併 / 取代 / 並存 · 升級裁判
送回人工
「機器拿不準的,留在隊列裡等人複審」
自動通過 + 人工後援

興趣與探索#

不只記事實,還記偏好、缺口、驚喜,跟老照片要怎麼存放。

三層注意力
「7 天最近、30 天回顧、90 天淡出 — 注意力分三層」
活躍 / 歷史 / 淡出
每日日記
「每天自動寫一篇日記,記今天最常聊的人和事」
每日聚合 · 主題與實體
標出缺口
「反覆問卻找不到的,標『這裡有洞』」
兩次以上判定不正確
挖驚喜
「找跨群的橋、間接強連結、知識缺口,三種驚喜入口」
驚喜流水線 · 加權社群偵測
記偏好與熟練
「不只記事,還記你喜不喜歡、會多少、進步沒」
10 類偏好版本鏈 + 三級熟練
老照片黑白縮圖
「老資料轉黑白縮圖存倉,留摘要不還原」
三級降階 · 單向摘要

三、召回軌 — 讓對的記憶浮上來#

記憶被想起這一軌#

記憶存進去、也整理好了,最後要解決的是「召回」— 怎麼在對的時機,讓對的記憶自動浮現。如果每次都要費力翻找,那倉庫再好也沒用。

我把這軌比喻成餐廳前台。客人一問,先有人判斷問題類型:查事實、找關聯,還是閒聊?接著,後場同步從各倉區調貨,貨到後由品管篩選,剔除不合的,留下最相關的。上菜前再過一次安檢,確保內容沒問題。

更絕的是,有個角色在背景偷偷備料。他會預判我接下來想問什麼,提前把相關記憶準備好。等我一開口,就能直接端上桌,省去整套流程。這套從接單到上菜的完整召回邏輯,細節全在這篇裡

看人下菜#

來客一進門,先判意圖,再決定去哪幾層找。

看意圖
「是查事實、找關係、還是發散探索?六種招呼分流」
六種意圖 · 關鍵字並行語意
服務生記性
「服務生記得你常點什麼,先把那幾道菜端上來」
注意力先驗 · 7/30/90 天
分層派工
「不同問題去不同層找,不亂全翻」
意圖對應 4 種搜尋策略
先想答案再找
「先在腦中模擬一份理想答案,再拿那份去比對」
假設文件嵌入

快速搜#

進倉庫先粗篩,再用 11 層加權排好,常用的指紋還會留快取。

語意進倉
「進倉庫先問語意,找像的那一群」
混合搜尋 · 倒數排名融合
11 層排序
「新不新、重不重要、可不可信⋯ 11 個面向綜合打分」
時近 / 重要 / 信任 / 反饋 / 衰減等
調味比例
「不同口味的問題,調味比例不同」
預設 0.3/0.7 · 依意圖微調
指紋快取
「算過的指紋先收進口袋,下次秒取」
快取 · 24 小時過期

二度精挑#

粗選好的再交給精挑員,但他能跳過、能停機。

精挑員
「粗選好的,再請精挑員一筆一筆細看」
交叉編碼器 · 0.6B
領先太多就免
「第一名遠遠領先,那就不用再精挑了」
三條跳過規則
壞掉就跳過
「精挑員壞了,先繞過十分鐘,別把整條線拖垮」
三次失敗 → 600 秒繞行

慢思五招#

慢思路才開的後備五招,從事實到全貌再自查。

事實層找鄰居
「從『誰 做什麼 對誰』那層直接撈隔壁」
三件套查詢
社群層找關聯
「從同一個小圈子裡找相關的人事物」
社群偵測
摘要層看全貌
「先讀預先寫好的摘要,零等待看大景」
預生成摘要 · 零延遲
沿圖散步
「從種子實體出發,沿著圖的小路慢慢走」
個人化隨機遊走
回答前自查
「上菜前廚師再嚐一口,不對就退回去」
四檔驗證 · 預設/深/裁判/關

出貨前#

整形、再消毒一次,背景還偷偷準備下一道。

整形上盤
「字數預算內取捨,把答案擺得整齊」
三種版型 · 預算感知打包
出貨前再消毒
「上桌前再檢查一次有沒有夾帶髒東西」
出貨側偵測 + 清洗
下一道偷偷備
「服務生看你還沒吃完,後廚已偷偷在備下一道」
五段流水線 · 入場控制

四、三條軌道貫穿的設計層#

軌道的脈絡從哪來?其實是共用了三層心法,每一處細節都是這些心法的體現。

三層心法#

砍多餘、拆複雜、校範例,讓家自己會運轉。

三招減負擔
「砍多餘、拆複雜、校範例 — 對應三條軌道的安檢、分段、自查」
認知負荷三原則
四條管線
「四條管線各司其職,讓整個家自己會運轉」
記憶 / 收件 / 洞察 / 慢思
流水線抽象
「自動工廠,每個工人只做一件事,組起來就是流水線」
運算子 / 流水線 / 觀察者
---

地圖到此完整。Write 軌道負責收納對話,Background 軌道邊整理邊學會遺忘,Read 軌道則讓對的記憶在對的時候浮現。

讓三條軌道連成一氣的,是:砍多餘、拆複雜、校範例。這套原則的影子,在每條軌道都看得到。

當然,沒有哪種工具能一勞永逸。理論、技術、用法一直都在前進,memvault 也會跟著時間繼續長。這篇就當作目前進度的一次合照——日後若有大改版,會再用新的文章來講。memvault 三部曲,先收在這裡。

架構總覽#

三軌道的 entry-agnostic pipeline 全景圖。13 個 group bracket 對應底下的元件 cards;4 條跨軌 dashed event flows 標出系統自驅動骨幹。

cards (always) cascade_cards (slow only) — 背景持續跑 — WRITE READ BG User Input 記憶進入點 Noise Filter quarantine → skip dedup Injection Guard quarantine → skip dedup Dedup (G3) SKIP · MERGE · SUPERSEDE Embedding + Qdrant 1024維 Dense + BM25 Sparse KG L0 Triple 抽取實體 + Entity Resolution Qdrant 向量庫 cosine similarity · hybrid index L1 Leiden / L2 Summary 社群分群 + LLM 摘要(批次) Query Input 記憶召回入口 QueryClassifyOp — 意圖分類 Keyword ~0ms Semantic ~5ms Fusion0.4kw + 0.6sem LLM ~500ms低信心才觸發 → intent 6 types entity_lookup · factual · conceptual · exploratory · cross_domain · unknown Fast Search — qdrant_search() ✓ 必跑 · Scoring + Reranking 嵌在搜尋函式內部 · services.py:492 Qdrant Hybrid (Dense + BM25 RRF) 11-Stage Scoring Pipeline intent-dependent 權重 · 每 stage 可停用 1 Recency 2 Import 3 Trust 4 Feedback 5 Length 6 Decay 7 PPR Boost 8 Semantic 9 MinScore 10 Noise 11 Dedup entity_lookup: semantic↑ trust↓ | factual: trust↑↑ | exploratory: recency↑↑ | Weibull 4-tier decay Attention-Gated Reranking 可跳過 · Jina v3 MLX Attn Gate Jina v3 Score Blend Circuit Brk skip(≤2件 | 主導 | 緊密集群) → fast_cards Weibull 4-tier: Core 180d · Hot 60d · Warm 30d · Cold 14d — access_count 延壽 · PPR graph walk IF thinking_mode = slow : Cascade Recall — deep search ⚡ slow intent 才觸發 · kg_services.py:991 L2 Summary L1 Community GLOBAL · 無 scoring L0 Triple PPR Walk LOCAL · 無 scoring Blocks (qdrant_search) ✓ 有 scoring + reranking CRAG Eval Access Rerank 可選 輕量 → deep_cards mode=local → 跳 GLOBAL · mode=global → 跳 LOCAL · mode=hybrid → 全搜 entity_lookup/factual → local · conceptual/exploratory → global · cross_domain → hybrid Output Formatter format: text · json · cards(入口無關) 回覆 Hook · UI · MCP Dream Loop — 記憶整合 Pipeline 每日 4AM · dual-gate trigger · 5-phase Orient雙門檢查+統計快照 Signal矛盾掃描+PPR中心 ReflectLLM 反思+知識缺口 Consolidate合併/取代/共存裁決 Prunelint+stale 清理 Slow Thinker 預測下一問 · 預取快取 Interest Profile 7/30/90d 注意力窗口 Feedback Loop Feedback · Access Reinforce

一、Write Track#

Write Track#

記憶寫入路徑由 SanitizeGate 統籌,在持久化前跑三道防線:

  • NoiseFilter:剔除沒資訊量的閒聊。
  • InjectionGuard + PoisoningDetection:阻擋 prompt injection 和內容毒化。
  • DedupOp:用 embedding cosine 比對現有資料,夠像就直接擋掉。

通過後,進入 Hybrid Indexing:向量存進 memvault.blocks(pgvector 768d),知識圖譜則拆成 L0 Triple(subject/predicate/object)寫入 kg-ops。每筆資料都帶著 Provenance(session_id / turn_index)方便回溯,並先經過 ContentNormalizer 統一格式,避免雜訊污染 embedding 空間。

這個雙軌寫入的理論基礎來自論文 Don't Forget to Connect! Improving RAG with Graph-based Reranking(2405.18414)。完整的 pipeline、三道防線的判準與 KG 抽取策略,都記錄在 memvault Write Track 細節篇

Trigger#

對話落地即觸發,背景流水線 fire-and-forget。

Session Input
「entry-agnostic 入口,任何 session 都收」
session boundary · 不挑來源
after_create Hook
「寫入即觸發背景 pipeline,前台不阻塞」
asyncio.ensure_future() · fire-and-forget

Sanitize Gate#

三道循序閘門,non-commutative。

NoiseFilter (G1)
「砍寒暄、亂碼、低資訊密度樣板」
core.noise.NoiseFilter · low-info regex + density
InjectionGuard (G2)
「擋直白 prompt-injection」
5 categories · instruction_override / role_tag / encoded / markdown / separator_flood
PoisoningDetection
「G2 姊妹元件,擋 5 類偽裝」
memvault.security.poisoning · authority/role/markdown/temporal/base64 + Shannon entropy
DedupOp (G3)
「4-way decision,高相似進 LLM arbitration」
SKIP / MERGE / SUPERSEDE / CREATE · cosine + Contradiction

Normalize & Index#

內容正規化 + Hybrid 雙索引上架。

ContentNormalizer
「時間表達、貨幣、單位、中文預處理統一寫法」
libs/text-ops · 4 子模組 + preprocess_chinese
Qwen3 Embedding (MLX)
「把每段記憶壓成 1024 維向量指紋」
omlx_bridge.py · 1024d · persistent subprocess
BM25 Sparse
「字面索引,跟 dense 互補」
sparse_tokenizer · per-service avgdl
Hybrid Index → Qdrant
「Dense + BM25 RRF 融合召回」
qdrant_search · Reciprocal Rank Fusion

KG Construction#

L0 三元組抽取 + provenance,event-driven 並行。

L0 Triple 抽取
「(s, p, o) 三件套抽取」
20 predicates · entity normalization
Entity Resolution
「3-tier alias 收斂:正規化 → 嵌入 → LLM」
3-tier · ChatGPT == GPT
Memory Provenance
「每筆三元組附 source + trust_score」
source_tracker · trust_score
Reactive KG Pipe
「event-driven,不阻塞主寫入」
fire-and-forget · 並行 pipeline

二、Background Track#

Background Track#

離線整理由 DreamLoop 於每日 4AM 觸發,跑在 core/src/modules/memvault/dream/ 的五階段 pipeline:

  • orient:抓取記憶分層的當前快照。
  • signal:聚合 MultiSignalEdges(access / cite / co-occur)。
  • reflect:執行 TemporalConflict,偵測雙時態(bi-temporal)矛盾。
  • consolidate:產出分層摘要(TierDigest)並合併語意相同的記憶。
  • prune:根據衰減分數標記出待淘汰的候選者。

旁路還有 KnowledgeLint 透過四層遞進審核(圖結構 → grounding → LLM → 三階段確認)糾錯,以及 InterestProfile 追蹤我的主題熱度,回饋給 SurpriseDiscovery,主動挖掘那些低互動但高潛力的記憶。

這個設計部分對應 HippoRAG: Neurobiologically Inspired Long-Term Memory for LLMs(2405.14831)的整合概念。Dream Loop 五階段的閾值、衝突解析策略和 KnowledgeLint v2 細節,都記錄在 memvault Background Track 細節篇

Trigger#

Cronicle 排程 + 雙條件閘門。

Cronicle 4AM
「每日 04:00 排程,避開前台尖峰」
Cronicle 4105 · daily schedule
Dual-Gate
「時間 + 累積量雙條件才觸發」
(now - last) > 24h ∧ sessions_since ≥ 5

Dream Loop#

OODA-like 五階段:Orient → Signal → Reflect → Consolidate → Prune。

Orient
「tier 分布快照,看差異規模」
tier distribution snapshot
Signal
「PPR seed 計算,找信號中心」
MultiSignalEdges · PPR seed
Reflect
「LLM 三向裁判 + 時態衝突偵測」
3-way judge + Temporal Conflict
Consolidate
「merge / supersede / coexist 三選一」
merge / supersede / coexist
Prune
「decay score 驅動,搭配 tier digest」
decay score + tier digest

Knowledge Lint#

四層遞進審計,圖結構 → 真實性 → LLM → 人複審。

四層遞進
「graph → grounding → LLM → human」
lint v2 · volatile predicate
MultiSignalEdges
「5 signals fusion 取代純共現」
co-occurrence + session + Adamic-Adar + type + semantic
Temporal Conflict
「LLM 3-way judge,可升級 RLM」
MERGE / SUPERSEDE / COEXIST · escalate to RLM
Review Queue
「auto-approve + human-in-loop fallback」
low-confidence → human queue

Interest & Discovery#

注意力分層 + 興趣/缺口/驚喜挖掘 + tier 降階。

Attention Windows
「7/30/90 天三層注意力」
active / historical / fading
Daily Snapshot
「每日聚合 top intents/entities」
SQL aggregation · top intents/entities
Knowledge Gap
「verdict=INCORRECT 累計標記缺口」
verdict=INCORRECT ≥ 2
Surprise Discovery
「cross-community 橋 / indirect-strong / knowledge-gap」
surprise_ops · Leiden weighted triggers
Attitude + Skill Layer
「10 類 attitude 版本鏈 + L1/L2/L3 skill」
attitude version chain + skill levels
Tier Digest
「warm→cold→frozen 單向 LLM 摘要」
summary ≤ 400 chars · 不可逆

三、Read Track#

Read Track#

讀取路徑的入口是 QueryClassify,它會依問題類型選擇不同策略,但主幹都是一套 11 階段的評分 pipeline:

  • QueryRouter:將問題分為事實、關聯、閒聊三路。
  • ScoringPipeline:結合 BM25、dense retrieval 和知識圖譜跳躍,並行打分,AttnRes intent-dependent 加權合併。
  • CascadeRecall:當向量搜尋找不到時,自動深入知識圖譜進行多步推理。
  • Reranker:使用 Jina Reranker v3 MLX 進行重排序。
  • OutputFormatter + ReadTimeSanitize:輸出前再跑一次 injection 檢查。

背景還有個 SlowThinker,它監聽對話的 SSE 串流,預測下一個 query 並 prefetch 候選 block。如果猜中,就能省掉一次完整 pipeline 的成本。

其中 intent-dependent 加權合併的理論依據來自論文 Attention as a Hint: Detecting Irrelevant Contexts via Attention Weight(2603.15031)。三路分流的判準、11 階段的評分函式與 SlowThinker 預測模型,都在 memvault Read Track 細節篇 裡。

Query Routing#

意圖分類 + attention prior + layer routing + HyDE。

QueryClassify
「6 intent,kw ∥ sem 並行,低信心送 LLM」
6 intent · kw ∥ sem → LLM (low conf)
Personalized Router
「attention prior 偏向常用主題」
attention prior · 7/30/90
Layer Routing Matrix
「intent 對應 4 種搜尋策略」
intent → SEMANTIC / HYBRID / ILIKE / SKIP
HyDE Expansion
「先生成假設答案再 embed 比對」
Hypothetical Document Embeddings

Hybrid 召回 + 11 階段加權 + intent-tuned blending + Redis cache。

qdrant_search
「hybrid Dense + BM25 RRF」
qdrant_search · hybrid + RRF
11-Stage Scoring
「11 層加權合成最終分」
recency / import / trust / feedback / length / decay / PPR / semantic / minscore / noise / dedup
Score Blending
「intent-tuned 比例」
default 0.3/0.7 · intent-tuned
Embedding Cache
「Redis 快取查詢嵌入」
Redis · 24h TTL

Reranking#

Cross-encoder 二階段精排 + skip + circuit breaker。

Jina Reranker v3
「MLX cross-encoder 精排」
MLX · 0.6B · cross-encoder
Attention Gate
「3 skip rules,TurboQuant+ 啟發」
3 skip rules · TurboQuant+ inspired
Circuit Breaker
「3 failures 觸發 600s recovery」
3 failures → 600s recovery

Cascade Recall#

Slow-only 五招:L0 → L1 → L2 → PPR → CRAG。

L0 Triple
「三件套直接鄰居查詢」
(s, p, o) lookup
L1 Community
「Leiden community detection」
Leiden detect
L2 Summary
「LLM 預生成摘要,零延遲」
pre-generated · zero-latency
PPR Walk
「igraph PPR,HippoRAG 啟發」
HippoRAG-inspired igraph PPR
CRAG Verification
「四檔自查:default / deep / rlm / none」
evaluate=default/deep/rlm/none

Output#

Budget-aware 整形 + 出貨側 sanitize + Slow Thinker 旁路。

Output Formatter
「token 預算內 packing」
format=text/json/cards · budget-aware packing
Read-Time Sanitize
「出貨側再消毒一次」
is_unsafe_for_injection + sanitize_for_injection
Slow Thinker (旁路)
「5-op pipeline 預備下一輪」
5-op pipeline · Admission Control · VoiceAgentRAG-inspired

四、三條軌道貫穿的設計層#

三軌道共用的設計層 — CLT 為哲學 frame、4 Event Flows 為自驅動骨幹、Reactive 抽象為函式合成基底。

Cross-cutting#

CLT 三原則 + 4 event flows + Reactive 抽象。

CLT 三原則
「砍多餘 / 拆複雜 / 校範例,對應 sanitize / segment / verify」
Sweller 1988 · 認知負荷理論
4 Event Flows
「四條 event-driven pipeline 各司其職」
Memory→KG / Capture→KG / Intelligence→Block / Query→SlowThinker
Reactive 抽象
「Operator / Pipeline / Observable / Subject 四件套」
libs/ops-core · RxJS-inspired

三軌道的 deep dive 分散在三部曲中。這篇則把它們收攏到一張全景圖下,並抽出貫穿全局的設計層:CLT 是我的設計哲學,4 Event Flows 是自驅動骨幹,Reactive 抽象則是函式合成的基礎。

那些沒寫進來的,多半是需要長期調校的參數——評分權重、預取命中率、級聯邊界、知識圖譜抽取的信賴閾值。這些數值會隨資料分佈每月微調,不算新組件。

當然,沒有什麼工具能一勞永逸。理論、技術、工具都還在不斷突破,memvault 也會跟著繼續迭代。這篇 blog 就當作目前進度的一次盤點——日後若有大改版,會再以新的文章交代。memvault 三部曲,先收在這裡。

帶走這段

給 AI Agent 的全景檢視提示#

如果你在打造自己的個人記憶系統 / RAG / AI 助理,把這段貼給你的 AI 助理,請它從整體架構檢視你的設計是否站得住。

幫我從「三軌道 × 三層心法」的角度,全景檢視我現在的個人記憶 / RAG 系統設計。 我的系統現況: - 寫入機制:[簡述進記憶前的處理] - 背景整理:[有沒有定期整理?怎麼決定該忘什麼?] - 召回路徑:[怎麼從問題到答案?] 請幫我從以下三個層面診斷: A. 三條軌道完整度 1. 寫入軌:有沒有過濾雜訊/擋偽裝注入/去重三道閘門?有沒有把記憶同時拆成向量+知識圖譜雙軌? 2. 背景軌:有沒有非同步的整理 pipeline?怎麼識別過時、矛盾、孤兒?是否能讓系統「學會忘」? 3. 召回軌:有沒有意圖分類?是否融合多訊號排序?有沒有預測式預取(在使用者開口前準備)? B. 三層跨軌心法 4. 認知負荷:每一道處理是不是都在替下游降負荷?有沒有「砍多餘 / 拆複雜 / 校範例」三條守則? 5. 事件流:系統是不是被事件驅動,而不是被人按按鈕推動?四條典型事件流(記憶到知識圖、外部捕捉到圖、情報到記憶塊、查詢到預取)有沒有對應實現? 6. 反應式抽象:pipeline 是不是用最小單位的轉換器(Operator)組合而成?事件骨幹是不是用 pub-sub 模型?這對未來擴充影響多大? C. 整合面 7. 三軌道之間是怎麼通訊的?是直接 import 還是事件解耦? 8. 寫入端打的元資料(confidence / provenance / valid_at)有沒有在背景整理跟召回排序時被消費? 9. 哪些細節是長期調參而不是新組件?把它們跟核心設計分開,會不會更好維護? 先列出我目前缺什麼,再告訴我最該補的三件事與優先級。

延伸閱讀#

三部曲深度篇 + 跨軌心法的理論根源。

資源 為什麼重要
memvault Write Track — 對話結束之後 三部曲第一篇深度版。三道 gate(雜訊/注入+偽裝/去重)+ 雙軌寫入(向量 + KG)+ Provenance + Content Normalizer 4 子模組
memvault Background Track — 存完之後 三部曲第二篇深度版。Dream Loop 五階段、Knowledge Lint 四層、Multi-Signal Edges、Temporal Conflict、Tier Digest、Surprise Discovery 等 12 元件
memvault Read Track — 想起來之後 三部曲第三篇深度版。意圖分類 + Personalized Router + 11-stage scoring + Cascade Recall + Read-Time Sanitize + Slow Thinker 預取
Cognitive Load Theory(Sweller, 1988) 三軌道 sanitize / segment / verify 三條閘門的設計哲學根源 — 寫得辛苦一點,讀的人才不累
Enterprise Integration Patterns(Hohpe & Woolf, 2003) 4 Event Flows 的 pub-sub / pipe-and-filter 設計模式來源。memvault 把 EventBus 跟 Subject 抽象建在這套模式之上
RxJS Reactive Extensions Operator / Pipeline / Observable / Subject 四個抽象的具體實作參考。memvault 不直接用 RxJS,但抽象層級對齊它
✦ 帶走這段