From db4d1d02144d3d096167c7bc87002d6aa6af1037 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 1 Jun 2026 11:25:14 +0800 Subject: [PATCH] fix(memory): correct memory architecture to 3-layer design (text/vector/graph) --- docs/memory-subnet.md | 95 +++++++++++++++++++++++++------------------ 1 file changed, 55 insertions(+), 40 deletions(-) diff --git a/docs/memory-subnet.md b/docs/memory-subnet.md index fd2241e..dfdae91 100644 --- a/docs/memory-subnet.md +++ b/docs/memory-subnet.md @@ -2,7 +2,7 @@ ## 概述 -记忆子网类比人脑的**海马体与皮层**,负责长期记忆的存储、检索和管理。采用**三级存储架构**:图数据库(Neo4j)存储结构化知识图谱、向量数据库存储语义向量、文本存储记录会话历史。 +记忆子网类比人脑的**海马体与皮层**,负责记忆的存储、检索和管理。采用**三层记忆架构**:**文本记忆**(短对话临时工作区)、**向量记忆**(语义检索)、**图记忆**(结构化知识)。 > 图数据库记忆设计参考了 [TrulyMEM-TrueHumanMEM](https://jianfgit.xyz:220/jianf/TrulyMEM-TrueHumanMEM.git) 项目。 @@ -27,22 +27,37 @@ │ ┌────────────────────────────────────────────────────┐ │ │ │ 记忆管理器 (Memory Manager) │ │ │ │ 自行决定: │ │ -│ │ → 如何解析查询 → 走图DB/向量DB/文本 │ │ -│ │ → 如何写入新信息 → MERGE/CREATE/更新 │ │ -│ │ → 如何更新已有记忆 → 增量/覆盖/合并 │ │ +│ │ → 如何解析查询 → 走文本/向量/图记忆 │ │ +│ │ → 如何写入新信息 → 先入文本记忆再处理 │ │ +│ │ → 如何更新 → 冲突合并/覆盖/增量 │ │ │ │ → 如何删除 → 软删除/硬删除/归档 │ │ │ │ → 如何关联 → 链路推理/图谱推理 │ │ -│ └──────┬────────────┬──────────────┬─────────────────┘ │ -│ │ │ │ │ -│ ▼ ▼ ▼ │ -│ ┌──────────┐ ┌────────────┐ ┌────────────────┐ │ -│ │ 图数据库 │ │ 向量数据库 │ │ 文本存储 │ │ -│ │ (Neo4j) │ │(Milvus/FAISS)│ │ (日志/会话归档) │ │ -│ │ │ │ │ │ │ │ -│ │ Entity │ │ 语义向量 │ │ 原始对话记录 │ │ -│ │ RELATES │ │ 索引 │ │ 时间线索引 │ │ -│ │ Cypher │ │ 相似度搜索 │ │ 压缩归档 │ │ -│ └──────────┘ └────────────┘ └────────────────┘ │ +│ └──────┬─────────────────────────────────────────┘ │ +│ │ │ +│ ▼ │ +│ ┌──────────────────────────────────────────────────┐ │ +│ │ 文本记忆(临时工作区) │ │ +│ │ 近期对话内容,按时间顺序追加,容量有限 │ │ +│ └─────────────────────┬────────────────────────────┘ │ +│ │ 定期扫描 (每 N 轮/定时) │ +│ ▼ │ +│ ┌──────────────────────────────────────────────────┐ │ +│ │ 记忆处理流水线 │ │ +│ │ │ │ +│ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐│ │ +│ │ │ 拆解 │────→│冲突合并│────→│相似合并│────→│分路写入││ │ +│ │ └──────┘ └──────┘ └──────┘ └──┬───┘│ │ +│ │ │ │ │ +│ └───────────────────────────────────────────────┼────┘ │ +│ │ │ +│ ┌──────────────────────────────────┼──┐ │ +│ ▼ ▼ │ +│ ┌─────────────────────┐ ┌─────────────────────────┐ │ +│ │ 图记忆 │ │ 向量记忆 │ │ +│ │ (结构化知识) │ │ (语义向量) │ │ +│ │ Entity / RELATES │ │ 索引 + 相似度搜索 │ │ +│ │ Cypher 查询 │ │ │ │ +│ └─────────────────────┘ └─────────────────────────┘ │ │ │ │ ┌────────────────────────────────────────────────────┐ │ │ │ 张量编/解码层 │ │ @@ -52,11 +67,33 @@ └───────────────────────────────────────────────────────────┘ ``` -## 三级存储架构 +## 三层记忆 -### 第一级:图数据库(Neo4j)— 温区 +### 第一层:文本记忆(Text Memory)— 临时工作区 -存储结构化知识,支持关系查询和推理。 +类似人脑工作记忆,保存近期对话内容,按时间顺序追加。容量有限,保证短对话内的上下文连续性。由记忆子网定期处理(拆解/冲突合并/相似合并/分路写入)。 + +| 项目 | 说明 | +|------|------| +| 存储内容 | 近期对话原始文本 | +| 管理方式 | 按时间顺序追加,溢出时丢弃最旧内容 | +| 处理时机 | 每 N 轮对话或定时触发 | +| 用途 | 短期对话连续性,记忆处理源 | + +### 第二层:向量记忆(Vector Memory)— 语义检索 + +存储经过嵌入的语义向量,支持语义相似度检索。长对话连续性关键组件之一。 + +| 项目 | 说明 | +|------|------| +| 索引类型 | IVF_FLAT / HNSW | +| 向量维度 | 768 (匹配标准张量维度) | +| 度量方式 | Cosine Similarity | +| 分片策略 | 按时间桶 + 会话 ID 分片 | + +### 第三层:图记忆(Graph Memory)— 结构化知识 + +实体-关系图,存储用户偏好、知识图谱等结构化信息。长对话连续性关键组件之二。 **参考 TrulyMEM 的图数据库设计:** @@ -121,28 +158,6 @@ ORDER BY e.mention_count DESC LIMIT 10 ``` -### 第二级:向量数据库(Milvus / FAISS)— 冷区 - -存储语义向量,支持相似度检索。 - -| 项目 | 说明 | -|------|------| -| 索引类型 | IVF_FLAT / HNSW | -| 向量维度 | 768 (匹配标准张量维度) | -| 度量方式 | Cosine Similarity | -| 分片策略 | 按时间桶 + 会话 ID 分片 | - -### 第三级:文本存储 — 冷区 - -存储完整的原始对话记录和会话日志。 - -| 项目 | 说明 | -|------|------| -| 存储格式 | JSONL / 压缩归档 | -| 索引 | 时间线索引 + 会话 ID 索引 | -| 生命周期 | 30天后归档,90天后可清理 | -| 用途 | 审计、重建、深度分析 | - ## 输入/输出 | 项目 | 说明 |