causal-memory 算法漫游 v0.9 · 图结构 / 查询传播 / Q值更新

从代码实现出发的可视化技术说明:图怎么存、查询怎么在图上传播、Q 值怎么更新、记忆怎么巩固与淘汰。所有动画按 src/hippocampussrc/consolidate 的真实算法逐步执行。

1 图结构 CSR 稀疏图 · typed edges · SQLite 为真相源

内存图是 SQLite 因果边的只读投影:节点 = chunk(决策/结果/事实文本),边 = typed 因果关系。图以 CSR(row_ptr / col_idx / values)存储,构建时把关系系数预乘进边值。

节点与边的类型

关系含义传播系数类比
caused决策导致结果+1.0谷氨酸(兴奋)
enabled使能/促成+0.5弱兴奋
prevented阻止了坏结果−0.3GABA(抑制,本系统独有)
fact语义关联+0.8P1 typed 统一
meta跨任务模式+0.6皮层自上而下
co_occurrence共现强化(动态权重)w(≈0.2)×1.0Hebbian LTP
边权重 = 关系系数 × 动态因子(Hebbian 改变 co_occurrence 的 w;其余边权重静态)。失效边 edge_valid=false 在传播时被跳过。

示例图(下方所有动画的底图,点节点看 Q)

caused +1.0 enabled +0.5 prevented −0.3 fact +0.8 meta +0.6

2 查询如何在图上传播 spreading activation · Q 加权播种 · abs-max 合并

一次 search_causal / intervention_query 的图侧执行:1 查询文本经 BM25/语义找到种子节点;2 种子激活 = 0.5 + 0.5×Q(证明过有用的节点初始更强);3 每步沿有效边传播 new_act[target] += a源 × 边权 × decay 并 clamp 到 [−1,1];4 绝对值大于阈值的节点成为结果,按 |激活| 降序。prevented 边的负激活可以盖过零(abs-max 合并)——危险警示就是这样在图上流动的。

动画演示 — 查询:"生产环境宕机了怎么办"(种子 D1 Q=0.8 / O1 Q=0.3 / D2 Q=0.2)

每步:new_act[target] += a源 × 边权 × decay(0.7) 然后 clamp[−1,1];合并用 |new| > |old| → 替换;|a| ≥ 阈值(0.1) 的节点进入结果集

3 Q 值怎么更新 MemRL 风格 Bellman · 0 初始 · 持久化到 chunks.q_value

节点 Q ∈ [0,1] 表示"这个 chunk 被证明有用"的程度,初始为 0(MemRL:失败本身有价值)。巩固周期对 replay 保护边的端点 chunk 给奖励 r,按 Bellman 更新;检索播种用 0.5 + 0.5×Q 让高 Q 节点初始激活更强。更新后写回 chunks.q_value(v9 持久化)。

Bellman 公式与演示

Q ← Q + α·[ r + γ·max_Q(有效邻居) − Q ],clamp [0,1]
默认 α=0.1(学习率),γ=0.9(折扣)

Q 与检索的耦合

播种:activation_seed = 0.5 + 0.5×Q → Q=0 时种子 0.5,Q=1 时种子 1.0
三步闭环:
1 巩固 stage 1.5:对 replay 保护边的端点按结果极性给奖励 r,Bellman 更新 Q
2 persist_q_values 写回 SQLite
3 下次查询播种:高 Q 节点初始激活更强 → 更可能被检索到 → 再次被强化
reward 规则:失败教训与 replay 保护边得正奖励;update_q_value_by_chunk_id 是生产入口,按 chunk id 更新。

4 检索管线 多信号融合 · 多遍 · 验证回环

图传播只是检索的一层。完整检索:BM25(倒排)+ 语义(bge-small)+ 图传播(spreading)+ hop 邻接,RRF 融合;跨会话问题走多遍检索(实体分解 + 时间锚 + session 展开 + 验证回环)。

5 巩固与遗忘 sleep 周期 · 半衰期衰减 · C7 知识更新

sleep 阶段流

0 新颖性门控 → 1 重激活 → 1.5 Q-value Bellman → 1.7 C7 supersession(LLM 判官) → 2 泛化(合并+模式) → 3 降权+GC → 4 REM 跨域迁移
半衰期衰减:eff_conf = conf × 0.5age/halflife tier:user_feedback/llm 90d · temporal 7d · rule 保持 0.99/day
C7:同一决策被以不同结果重新记录 → LLM 判官裁决 → Retire(硬失效)/ Annotate(软标注 superseded_by,不隐藏)。

半衰期衰减曲线(交互)

6 写入路径 record_decision · 惰性图重建 · distill

决策→结果写入 SQLite(chunk 精确复用:同一决策文本是同一节点);GRAPH_REBUILD_WRITES=5 / 30s 惰性重建内存图;LLM 蒸馏把会话转成 facts/lessons/events;同决策矛盾结果触发规则快路或留待 C7 判官。
写入:chunks(文本复用)→ causal_edges(typed + confidence + polarity)→ 惰性重建 CausalGraph → sleep 周期维护
docs/algorithm-explorer.html · 动画与实现对应:hippocampus/spread_step、update_q_value、consolidate/stages