记忆算法测试
⚠️ 文档状态:本文档为规划方法论(图谱变换 VA/VD/VC/EA/ED/EC 评分),未落地 实现。实际遗忘评测已改用 T1–T5 可观测推论(见 测试数据规范 第四部分),并由
soul-tune run forget驱动。
遗忘
1. 测试流程定义
$$ Situation_{mem} \longrightarrow narrative + Context $$ $$ \longrightarrow nar_graph + Context $$
- 遗忘过程中的变化:Context 和 narrative 可能各自独立变化,因而产生矛盾。因此,测试时,以重建的 $mem$ 为准。
- Context 处理:Context 为结构化数据,使用 embedding 模型,对对应字段进行余弦相似度计算。
- 评分函数:$\sum (1 - \cos(vec1, vec2))$
- Narrative 处理:narrative 将由 LLM 提取成图谱后进行比较。
- 记原图谱为 $G$,遗忘后图谱为 $G’$。
2. 图谱变换操作
$G$ 总可以通过有限次如下变换为 $G’$。记从 $G \rightarrow G’$ 的最短变换序列为 $T_{fn} = (f_1, f_2, f_3 \dots f_n)$。
基本变换操作集合 $F$ 包含以下6种:
- 顶点的增加 $\rightarrow VA$
- 顶点的删除 $\rightarrow VD$
- 顶点的内容变化 $\rightarrow VC$
- 边的增加 $\rightarrow EA$
- 边的删除 $\rightarrow ED$
- 边的内容变化 $\rightarrow EC$
采用最短变换序列的原因: 遗忘是信息量的变化。如果有一个更长的变换序列,那意味着有一部分的遗忘操作没有发挥实际效果
3. 图谱节点判定与合并
由于重建图谱由 LLM 建立,因此即使信息并未改变,表述内容也可能不同。使用同一判定函数:
$$ I(v_1, v_2) = \begin{cases} 1, & v_1 = v_2 \text{ 或 } \cos(v_1, v_2) \ge 0.9 \ 0, & \text{其他} \end{cases} \quad (v_1 \in G, v_2 \in G’) $$
- 此处构建的图谱是简单的,通常只包含实体名与关系名。
- 因此若 $I(v_1, v_2), I(v_2, v_3)$,则合并 $v_2, v_3$ 为同一点(注:原文逻辑似指传递性合并),采用任一点内容作为新点内容。
4. 变换序列评分
对于一变换序列 $T_{fn} = (f_1, f_2, \dots, f_n)$,其中 $f_i \in {VA, VD, VC, EA, ED, EC} = F$。
令 $S: F \rightarrow [0, 1]$ 为原子变换评分函数。
则序列评分公式为: $$ S_{T_{fn}} = S_L(l_{T_{fn}}) \cdot \sum S(f_i) $$
- 其中 $S_L(l_{T_{fn}})$ 为长度评分函数,越长分数越高(箭头标注说明)。
5. 问题与实验方案
主要问题:
- 寻找最短变换序列。
- 如何处理事件时间顺序的“记错”。
测试方案: 由于测试方案使用 LLM 和 embedding,因此需重复测试。
- 若选 $m$ 个不同的 LLM,$n$ 个不同的 embedding。
- 则测试 $k \cdot m \cdot n$ 次。
- 每个 $(LLM, embedding)$ 对测试 $k$ 次。