/images/hugo/avatar.png

Mem0 详解:长期记忆、Scope 与检索流程

Mem0 不是传统文档 RAG,而是 Agent 的长期记忆层。它从对话中提炼值得长期保存的事实,再按用户、Agent 或运行实例检索这些事实。

它解决的核心问题是:模型上下文窗口有限且会话结束后状态丢失,如何用较小的 Token 成本保留用户偏好和长期上下文。

RAG 框架对比与选型:RAGFlow、Mem0

RAGFlow 和 Mem0 经常同时出现在 RAG/Agent 技术选型中,但它们并不是同类产品:RAGFlow 管理企业文档知识,Mem0 管理从对话中提炼的 Agent 长期记忆。

本文只保留统一比较维度、选型判断和组合方案。实现细节分别见:RAGFlow 详解和 Mem0 详解。后续加入其他框架时,也沿用本文的比较维度。

29 MYSQL 分区表

要不要使用分区表

1. 分区表

为了说明分区表的组织形式,先创建一个表 t:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
CREATE TABLE `t` (
  `ftime` datetime NOT NULL,
  `c` int(11) DEFAULT NULL,
  KEY (`ftime`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
PARTITION BY RANGE (YEAR(ftime))
(PARTITION p_2017 VALUES LESS THAN (2017) ENGINE = InnoDB,
 PARTITION p_2018 VALUES LESS THAN (2018) ENGINE = InnoDB,
 PARTITION p_2019 VALUES LESS THAN (2019) ENGINE = InnoDB,
PARTITION p_others VALUES LESS THAN MAXVALUE ENGINE = InnoDB);
insert into t values('2017-4-1',1),('2018-4-1',1);

表 t 将包含了一个.frm 文件和 4 个.ibd 文件,每个分区对应一个.ibd 文件。也就是说:

28 MySQL 连接管理

MySQL 的连接管理

2. mysql 连接管理

在 MySQL 中有两个 kill 命令:

  1. kill query + 线程 id: 表示终止这个线程中正在执行的语句;
  2. kill connection + 线程 id: connection 可缺省,表示断开这个线程的连接,如果这个线程有语句正在执行,也是要先停止正在执行的语句。

2.1 收到 kill 以后,线程做什么

当用户执行 kill query thread_id_B 时,MySQL 里处理 kill 命令的线程做了两件事: