一、记忆系统整体架构:三层模型

AI Agent的记忆系统与人类认知科学高度对应。一个完整的工程化记忆体系通常分为三个层次:

  1. Sensory Memory(感觉记忆) —— 原始输入缓存,保留最近1-3轮对话原文,不做任何加工
  2. Short-Term Memory(短期记忆) —— 当前会话的工作记忆,采用滑动窗口加摘要压缩管理
  3. Long-Term Memory(长期记忆) —— 跨会话持久化存储,使用向量数据库实现语义检索

三层之间通过Memory Controller协调写入与检索,确保信息在不同时间尺度间高效流转。

二、短期记忆与上下文窗口管理

LLM的上下文窗口有限(如128K token),短期记忆的核心挑战在于如何在有限窗口内保留最有价值的信息。常用策略包括:

  • 滑动窗口:保留最近N轮对话,超出部分丢弃或归档
  • Token预算池:为不同内容类型分配固定预算(系统指令20%、历史对话40%、工具结果20%、当前输入20%)
  • 摘要压缩:对超出窗口的历史内容进行LLM摘要,保留核心信息
  • 分层衰减:近期对话保留原文,中期对话保留摘要,远期对话仅保留关键实体

三、长期记忆与向量存储设计

长期记忆解决跨会话信息持久化。关键技术选型与架构如下:

  • Embedding模型:将文本转为高维向量表示,如OpenAI text-embedding-3、BGE、m3e等
  • 向量索引引擎:FAISS(本地)、Milvus(分布式)、Pinecone(云端)、pgvector(PostgreSQL内嵌)
  • 元数据存储:记录时间戳、来源会话ID、记忆类型标签、访问频率、重要性评分
  • 分层存储:热数据存内存、温数据存SSD、冷数据归档至对象存储

四、记忆写入策略

并非所有对话内容都应写入长期记忆,否则存储膨胀且检索噪声增大。有效的写入策略包括:

  • 语义重要性过滤:仅保留用户偏好、决策结论、纠错记录、工具调用结果等高价值信息;寒暄、重复确认等低价值内容不写入
  • 去重与合并:新生成的记忆先与现有记忆做相似度检测,相似度超过阈值则合并更新而非新增
  • 时间衰减写入:新信息优先写入,低频访问信息逐步降权乃至淘汰
  • 结构化模板:用户偏好类记忆统一使用JSON Schema持久化,便于下游查询

五、记忆检索与相关性排序

检索阶段采用混合策略确保返回结果相关且多样:

  • 语义向量检索:用户当前输入做Embedding后做ANN近邻搜索,召回Top-K候选
  • 时间衰减权重:乘以时间衰减因子 w_time = e^(-lambda * days_ago),确保时效性
  • 访问频率加权:被频繁引用的记忆提升排序权重
  • 上下文连贯性评分:与当前对话主题一致性做重排序
  • 混合公式:final_score = alpha * semantic_sim + beta * time_decay + gamma * visit_freq + delta * context_coherence

六、跨会话状态持久化

用户画像、历史偏好、项目进度、长期任务状态等状态信息需要跨会话保持连续:

  • Profile Summary对象:每个用户维护一个结构化摘要,包含偏好、常用操作、历史项目列表
  • 项目状态机快照:正在进行中的任务定期保存状态机快照,新会话加载后可无缝接续
  • 会话衔接摘要:每次会话结束时自动生成摘要摘要,作为下次会话的初始上下文
  • Goal-Plan追踪:维护长期目标栈与关联计划树的持久记录

七、遗忘机制与记忆淘汰

合理的遗忘是记忆系统健康的标志,避免存储无限膨胀。实现手段包括:

  • TTL过期:每条记忆设置生存时间,自动清理过期条目
  • LRU淘汰:基于最近访问时间的淘汰策略,保留最常使用的记忆
  • 重要性衰减:重要性评分随时间指数衰减,低于阈值自动归档
  • 存储容量上限:设置每个用户的记忆容量上限,触发淘汰
  • 用户显式清除:提供API供用户主动删除特定记忆或清空全部

八、记忆安全与隐私保护

记忆中可能包含敏感个人信息,安全与隐私不可妥协:

  • PII脱敏写入:写入前通过NER识别姓名、手机、身份证、银行卡等敏感实体,替换为占位符
  • 存储加密:向量与元数据均加密存储,密钥分级管理
  • 访问审计日志:记录每次记忆查询的时间、来源、内容,便于安全追溯
  • 租户隔离:多用户场景下严格数据隔离,防止跨租户泄露
  • 合规性支持:提供用户数据导出、删除接口,满足GDPR等合规要求

九、完整代码实现示例

以下是一个轻量级MemoryStore的Python实现框架:

class MemoryStore:
    def __init__(self, embedding_fn, vector_index, meta_store):
        self.embed = embedding_fn
        self.index = vector_index
        self.meta = meta_store

    def write(self, text, metadata=None):
        vec = self.embed(text)
        memory_id = self.index.add(vec)
        self.meta.save(id=memory_id, text=text, meta=metadata)
        return memory_id

    def recall(self, query, top_k=5, filters=None):
        q_vec = self.embed(query)
        ids, scores = self.index.search(q_vec, k=top_k)
        results = self.meta.batch_get(ids)
        return self.rerank(results, query)

    def consolidate(self, session_history):
        # 摘要压缩历史会话,写入长期记忆
        summary = llm_summarize(session_history)
        self.write(summary, type="session_summary")

    def forget(self, memory_id):
        self.index.remove(memory_id)
        self.meta.delete(memory_id)

十、与Tool Use和对话系统的协同

记忆系统不是孤立存在的,它与Agent其他核心子系统深度耦合:

  • 与Tool Use协同:工具调用的结果、中间状态写入记忆,供后续工具步骤参考;工具可根据记忆选择合适的参数或跳过重复步骤
  • 与对话管理协同:对话管理器从长期记忆中提取用户偏好与历史上下文,补充System Prompt,实现个性化对话
  • 与响应生成协同:检索到的记忆注入上下文窗口,使LLM能基于用户历史生成更精准、个性化的响应
  • 与规划系统协同:历史任务执行记忆为新任务规划提供经验参考,加速决策

至此,我们已完成AI Agent四大核心子系统的完整串联:响应生成 → 对话管理 → 工具调用 → 记忆系统,四者共同构成了Agent的智能闭环。下一篇文章将探讨多Agent协作架构,如何通过专业化分工与通信协议解决单Agent无法胜任的复杂任务。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部