# 2511.00xxx_MemMachine
* 首页:
* GitHub:
## 主要内容
### 记忆类型
* 情景记忆 (Episodic Memory)
* 记录具体的交互事件和对话历史(如“用户昨天询问了天气”),带有时间戳,保证对话的连续性。
* 就像你的日记本,记录了“某时某地发生了某事”。
* 语义记忆 (Semantic Memory)
* 存储从交互中提炼出的结构化知识和事实(如“用户是软件工程师,擅长Python”),形成知识图谱。
* 就像你的个人百科,存储了关于你和世界的客观事实。
* 档案记忆 (Archival Memory)
* 构建持续的用户画像,存储个人偏好、习惯和身份等长期信息(如“用户偏好简洁回答,喜欢在早上喝咖啡”)。
* 就像你的个性名片,定义了你的喜好、习惯和身份。
* 程序记忆 (Procedural Memory)
* 保存智能体可重复使用的操作步骤、技能和方法(如解决问题的标准化流程),提高效率。
* 就像你的技能手册,记录了“如何完成某项任务”的固定流程。
### 记忆检索
1. 混合检索
* 广泛“撒网”,初步召回相关记忆。
* 向量检索 + 关键词检索 并行工作。
* 兼顾语义理解与精确匹配,避免单一检索的盲区。
2. 分数归一化
* 统一不同检索方式的结果评分标准。
* Min-Max归一化 等算法。
* 使来自不同算法的分数具有可比性,为融合做准备。如:将向量检索和关键词检索得到的分数统一映射到0到1之间的可比较范围内。
3. 加权融合
* 将初步结果智能合并成一个列表。
* 可配置权重 (如向量70%,关键词30%)。
* 根据场景调整侧重点,形成更优的综合排序。
* 计算每个记忆片段的最终综合得分。这个权重可以根据场景调整,比如在需要高度精确匹配的领域,可以调高关键词检索的权重。
4. 智能重排序
* 对融合结果进行最终微调,提升顶部精度。
* 交叉编码器、BM25、RRF 等算法。
* 进行更精细的上下文理解,将最相关结果推到最前。
* BM25 基于关键词的统计概率模型,计算查询中每个词项与记忆内容的相关性得分。 充当“精准匹配专家”,确保包含明确关键词的记忆获得基础高分。
* 交叉编码器 深度神经网络模型,将查询和记忆片段一同分析,直接输出相关性概率分数。 充当“语义理解裁判”,深度理解上下文,精准判断真实相关性。
* RRF(互惠排名融合) 一种混合排序算法,将多个排名列表智能地融合成一个更优的最终列表。 充当“智慧决策者”,平衡不同方法的优势,提升结果的鲁棒性。
#### 重排序
**重排序的必要性**
* MemMachine首先通过混合检索策略,从海量记忆中初步筛选出可能相关的记忆。然而,这个初步列表可能存在两个问题:首先,列表可能仍然很长;其次,排名靠前的记忆未必是最相关的。比如,一些只是频繁提到关键词但实际帮助不大的记忆可能排名靠前。因此,重排序的作用就像一个智能过滤器,对初步结果进行精细调整,优先选择最有可能帮助AI生成准确及相关响应的上下文。
**MemMachine采用了多种重排序方法**
* BM25:
- 关键词匹配的基石BM25是一种经典的信息检索算法。
- 它主要计算查询中的关键词与记忆文本之间的匹配程度,但它比简单计数更智能,会考虑词频、逆文档频率等因素,自动给予区分度高的关键词更高权重。
- 作用:为包含确切关键词的记忆提供较高的基础分数,保证基础的检索精度。
- 特点:速度快,适合处理大规模数据,但对同义词和语义变化不敏感。
* 交叉编码器:
- 深度语义的裁判为了解决BM25在语义理解上的局限,MemMachine引入了基于Transformer的交叉编码器。
- 与BM25的“快速评判”不同,交叉编码器进行的是“深度分析”。
- 工作原理:
- 它将用户的查询和一个记忆片段同时输入模型,让模型分析两者之间的交互特征,直接输出一个代表相关性的概率分数(例如0.85表示高度相关)。
- 这种方式能理解语言的细微差别。
- 特点:精度极高,能深刻理解语义,但计算成本高、速度慢,通常只对Top K(如前20或50条)的初步结果进行重排序。
* RRF
- 采用RRF这类算法将BM25和交叉编码器等不同方法产生的排名列表智能地融合起来。
- 工作原理:
- RRF为每个记忆片段在每个列表中的排名分配一个分数(例如,排名第一的得1/(1+1)=0.5,排名第二的得1/(1+2)≈0.33,以此类推),
- 然后将每个记忆在所有列表中的得分相加,最后按总分进行重新排名。
- 优势:
- 这种机制确保了即使某个方法判断失误,另一个方法也可以进行纠正。
- 例如,一个记忆在BM25列表中排名靠后,但被交叉编码器判为高度相关,它的RRF总分依然可能跃升到前列,从而提高了结果的鲁棒性和准确性。
**工作流程**
1. 初步检索:通过混合检索获得一个较长的相关记忆列表。
2. 精细重排:使用交叉编码器对这个列表的Top K结果进行深度语义分析并重排。
3. 结果融合:利用RRF等算法将BM25的初始得分与交叉编码器的新得分融合,产生最终排名。
4. 最终筛选:系统会根据最终排名,选择最顶部的若干条记忆(如Top 3或Top 5)注入到AI的上下文窗口中。