mem0的memory管理方式

提取阶段
建立适当上下文以进行记忆提取,系统采用两种互补的来源:
1) 从数据库检索到的对话摘要S,概括整个对话历史的语义内容,以及来自对话历史的一系列近期消息。
\({m_{t-m}, m_{t-m+1},..., m_{t-2}}\)
其中,m用于控制数量。
2) 实现了一个异步摘要生成模块,周期性刷新
上述两种信息结合,得到全面提示P,作为提取函数\(\phi\)的输入,\(\phi(P))\)则可以抽取出一系列重要的memory Ω,P和Ω的定义为:
\(P=(S, {m_{t-m}, m_{t-m+1},..., m_{t-2}}, m_{t-1}, m_t)\)
\(Ω = {w_1, w_2, ..., w_n}\)
更新阶段
将候选事实与现有记忆进行对比,保持一致性避免冗余。确定对每个提取的事实应执行的管理操作。
对于每个事实,限量相似检索前s个语义相似的记忆,使用LLM决定4种操作:
1) 无等效记忆,ADD;
2) 补充增强现有记忆, UPDATE;
3) 新信息反驳旧记忆, DELETE;
4) 不需要任何修改, NOOP。
\(mem0^8\)
根据对话历史生成知识图谱,检索在知识图谱是否有冲突(使用LLM),并更新知识图谱。图谱中的节点包括:实体类型分类、嵌入向量及时间相关的元数据。图谱补全(KGC)使用pipeline的方式,先识别实体,再生成关系,对于新三元组,计算源实体和目标实体的Embedding,搜索相似度高于“t”的现有结点,根据存在情况创建结点。
浙公网安备 33010602011771号