知识模块
🤖 Agent 知识模块
Chapter3 Materials

Agent 记忆系统知识库(面试八股文版)

前言

在 Agent(智能体)架构中,记忆系统(Memory System)是赋予 Agent"状态"和"连续性"的核心组件。

1. 记忆系统的分类

1.1 定义与原理

Agent 的记忆系统通常借鉴人类认知心理学,分为三类:

记忆类型定义存储介质生命周期典型应用场景
短期记忆当前对话的上下文窗口LLM Context Window会话期间多轮对话连贯性、指代消解
长期记忆持久化存储的历史信息向量库、关系型数据库永久用户偏好、历史知识库、任务状态
工作记忆当前推理过程中的临时"草稿纸"内存变量、Scratchpad单次任务执行期间ReAct框架中的Thought/Observation

1.2 核心原理图

[用户输入] --> [工作记忆(推理中)] --> [LLM] 
                  ^       |
                  |       v
[短期记忆(最近N轮)] <--> [上下文组装]
                  ^
                  | (定期归档)
                  v
[长期记忆(向量/SQL)] <--> [检索/写入]

2. 记忆存储技术

2.1 技术选型对比

存储技术代表产品优势劣势适用记忆类型
向量数据库Milvus, Pinecone, Chroma, Weaviate支持语义相似度检索不支持复杂关系查询长期记忆(非结构化文本)
关系型数据库PostgreSQL, MySQL, SQLite支持复杂查询、事务无法直接进行语义检索长期记忆(用户画像、任务状态)
文件系统/键值对JSON, Redis, Pickle读写速度极快难以扩展,无查询能力短期记忆、缓存、配置

3. 记忆检索机制

3.1 检索方式分类

  • 语义检索:基于向量相似度,能理解同义关联
  • 关键词检索:基于BM25算法,精确匹配专有名词
  • 混合检索:语义+关键词加权,生产环境主流方案
  • RAG:检索增强生成,将检索到的记忆作为Context注入Prompt

3.2 解决"检索不到"的方法

  1. Query改写:使用LLM将用户口语化问题改写为适合检索的陈述句
  2. 多路召回:同时使用向量检索和关键词检索,然后Rerank
  3. 元数据过滤:先通过时间、用户ID等元数据过滤

4. 记忆管理策略

4.1 核心策略

  • 压缩摘要:定期将旧的对话记录发送给LLM,生成摘要替换原始对话
  • 遗忘机制:TTL超时删除、LRU淘汰
  • 优先级管理:让LLM对每条记忆打分,高分记忆永久保留
  • 记忆更新:当新事实与旧记忆冲突时,触发更新而非追加

5. 面试常见问题 (Q&A)

Q1: Agent 的短期记忆和长期记忆有什么区别?

  • 短期记忆存储在LLM的Context Window中,读取速度极快
  • 长期记忆存储在外存,需要检索IO,用于跨会话的知识保留
  • 不能只用长期记忆:成本与延迟、上下文限制、噪声干扰

Q2: 向量数据库检索不准怎么办?

  • 数据层:清洗数据、优化Chunking策略
  • 检索层:混合检索、Rerank模型、Query改写
  • 应用层:在Prompt中指示LLM"如果检索内容无关,请回答不知道"

Q3: 如何设计一个支持"用户偏好记忆"的Agent?

  • 提取:识别用户偏好
  • 存储:存入关系型数据库的User_Preferences表
  • 检索:系统Prompt中自动注入用户偏好
  • 更新:触发记忆更新机制

Q4: 解释一下Generative Agents中的记忆流?

  • 包含所有Agent观察、思考和计划的完整自然语言记录列表
  • 检索机制:基于最近性、重要性和相关性三个分数加权检索
  • 反思:Agent定期暂停,从记忆流中抽取高分记忆生成抽象总结

Q5: 上下文窗口越来越大,记忆系统还重要吗?

  • 依然重要:全量输入会导致注意力分散
  • 成本问题:处理100K Token的推理成本远高于精准检索
  • 无限历史:用户与Agent的交互历史理论上是无限的

总结口诀

  • 分类:短长工,短对话,长持久,工推理
  • 存储:向量语义,关系结构,文件缓存
  • 检索:语义关键词,混合加Rerank,RAG是框架
  • 管理:摘要压缩,过期遗忘,重要打分