定义

Agent 记忆系统受人类认知科学启发,将记忆分为四个层次:工作记忆、情景记忆、语义记忆和感知记忆。好的记忆系统是智能体实现持续学习和上下文理解的关键基础设施。

四层记忆架构

1. 工作记忆(WorkingMemory)

定位:短期记忆,存储当前对话上下文,会话结束后自动清理。

技术实现

  • 纯内存存储,容量上限默认 50 条
  • TTL 自动过期清理,默认 60 分钟
  • 混合检索策略:TF-IDF 向量化(权重 0.7)+ 关键词匹配(权重 0.3)
  • 容量满时移除最低优先级项

2. 情景记忆(EpisodicMemory)

定位:长期存储具体交互事件,支持时间序列和会话级检索。

技术实现

  • SQLite + Qdrant 混合存储(结构化 + 向量)
  • 会话索引管理,每个记忆关联 session_id
  • 评分公式:(向量相似度 × 0.8 + 时间近因性 × 0.2) × (0.8 + 重要性 × 0.4)
  • 强调时间近因性:近期事件通常比远期更具参考价值

3. 语义记忆(SemanticMemory)

定位:存储抽象知识、概念、规则和用户偏好,支撑知识推理。

技术实现

  • Neo4j 图数据库(实体-关系图谱)+ Qdrant 向量数据库混合架构
  • 自动实体提取、关系抽取,构建结构化知识表示
  • 评分公式:(向量相似度 × 0.7 + 图相似度 × 0.3) × (0.8 + 重要性 × 0.4)
  • 图检索能发现隐含的多跳关联,这是纯向量检索无法完成的

4. 感知记忆(PerceptualMemory)

定位:处理多模态数据(图像、音频、文本),支持跨模态检索。

技术实现

  • 按模态分离的向量存储(text/image/audio 各自独立 collection)
  • CLIP 模型(图像编码)、CLAP 模型(音频编码)
  • 指数衰减时间近因性:exp(-0.1 × age_hours / 24),最低保底 0.1
  • 评分公式同情景记忆

记忆管理器(MemoryManager)

作为核心协调者,提供统一操作接口:

操作功能关键参数
add添加记忆content, memory_type, importance(0-1)
search搜索记忆query, limit, memory_types, min_importance
forget遗忘策略importance_based/time_based/capacity_based
consolidate整合固化from_type→to_type, importance_threshold
summary记忆摘要limit

遗忘机制:三种策略——基于重要性(低于阈值删除)、基于时间(超期删除)、基于容量(超限删除最不重要)。

整合机制:将重要性超过阈值的工作记忆提升为情景记忆(默认 0.7),情景记忆提升为语义记忆(默认 0.8),模拟人脑记忆固化。

RAG 系统架构

采用”五层七步”架构:用户层 → 应用层 → 处理层(MarkItDown → 智能分块 → 向量化) → 存储层(Qdrant + SQLite) → 基础层。

文档处理流水线

任意格式文档 → MarkItDown(微软开源)转换 → Markdown 文本 → 智能分块 → 向量化 → 存储检索。

MarkItDown 支持:PDF、Word、Excel、PowerPoint、JPG/PNG(OCR)、MP3/WAV(转录)、TXT/CSV/JSON/HTML 等。

智能分块策略

标准 Markdown → 标题层次解析(#/##/###) → 段落语义分割 → Token 计算 → 重叠策略优化。以段落为最小单位,避免在句子中间截断。Token 估算针对中英文混合优化。

嵌入服务方案

方案适用场景特点
DashScope text-embedding-v3云端部署高质量,需 API Key
LocalTransformer all-MiniLM-L6-v2离线部署中等质量,无需网络
TF-IDF轻量兜底无语义理解,仅词频匹配

高级检索策略

多查询扩展(MQE):LLM 生成多个语义等价的查询,并行检索后合并结果,提升召回率 30%-50%。

假设文档嵌入(HyDE):先让 LLM 生成假设性答案段落,用该段落向量检索真实文档,桥接”问题-答案”语义鸿沟。

统一流程:生成多路查询 → 并行向量检索(candidate_pool_multiplier=4) → 去重排序返回 top-k。

存储方案设计

存储用途技术选型
Qdrant向量语义检索云/本地,cosine 距离
Neo4j知识图谱管理Aura 云/本地,Cypher 查询
SQLite结构化持久化本地文件

数据隔离:user_id 贯穿所有操作、命名空间隔离不同知识库、会话隔离、Qdrant 集合隔离。

关联连接