Agent 教程笔记(Task03)

2.004k 字  |  7 分钟

4. 记忆与检索

4.1 为什么需要记忆与 RAG

LLM 的两大局限

  1. 无状态导致对话遗忘:每次请求都是独立的,无法记住之前的对话内容
  2. 内置知识局限性:训练数据有时间截止点,无法获取最新信息,专业领域知识不足

解决方案

  • 记忆系统:让智能体能够记住对话历史、用户偏好和学习经验
  • RAG 系统:从外部知识库检索相关信息,增强模型生成能力

4.2 记忆系统:四层架构

借鉴人类记忆系统,HelloAgents 设计了四种记忆类型:

(1)工作记忆(Working Memory)

  • 特点:临时信息,容量有限(默认 50 条),TTL 自动清理
  • 存储:纯内存,访问速度快
  • 应用:存储当前对话的上下文信息
  • 评分公式(相似度 × 时间衰减) × (0.8 + 重要性 × 0.4)

(2)情景记忆(Episodic Memory)

  • 特点:具体事件和经历,支持时间序列检索
  • 存储:SQLite + Qdrant 混合存储
  • 应用:记录学习事件、查询历史、重要里程碑
  • 评分公式(向量相似度 × 0.8 + 时间近因性 × 0.2) × (0.8 + 重要性 × 0.4)

(3)语义记忆(Semantic Memory)

  • 特点:抽象知识和概念,支持知识图谱推理
  • 存储:Neo4j 图数据库 + Qdrant 向量数据库
  • 应用:存储用户偏好、领域知识、概念理解
  • 评分公式(向量相似度 × 0.7 + 图相似度 × 0.3) × (0.8 + 重要性 × 0.4)

(4)感知记忆(Perceptual Memory)

  • 特点:多模态数据(文本、图像、音频),支持跨模态检索
  • 存储:按模态分离的向量存储
  • 应用:处理文档特征、图像理解、音频转录

4.3 记忆系统的核心操作

MemoryTool 提供的操作

  • add:添加记忆(支持 4 种类型)
  • search:搜索记忆(语义检索 + 关键词匹配)
  • forget:遗忘记忆(基于重要性/时间/容量)
  • consolidate:整合记忆(短期 → 长期)
  • summary:获取记忆摘要
  • stats:获取统计信息

记忆生命周期

编码 → 存储 → 检索 → 整合 → 遗忘

4.4 RAG 系统:知识检索增强

RAG 核心思想:在生成回答前,先从外部知识库检索相关信息,作为上下文提供给模型

工作流程

  1. 数据处理阶段:文档提取 → MarkItDown 转换 → 智能分块 → 向量化 → 存储
  2. 查询阶段:用户提问 → 检索相关文档 → 注入 Prompt → LLM 生成答案

MarkItDown 统一转换

  • 支持格式:PDF、Word、Excel、图片、音频等
  • 统一输出:Markdown 格式
  • 优势:结构清晰,便于后续处理

智能分块策略

  • 基于 Markdown 标题层次(#、##、###)进行语义分割
  • 根据 Token 数量控制分块大小
  • 支持重叠策略保持上下文连续性

4.5 高级检索策略

(1)多查询扩展(MQE)

  • 原理:生成语义等价的多样化查询
  • 优势:提升召回率 30%-50%,避免用词差异导致遗漏
  • 示例:"如何学习 Python" → ["Python 入门教程", "Python 学习方法", "Python 编程指南"]

(2)假设文档嵌入(HyDE)

  • 原理:用答案找答案,先生成假设答案段落,再用其检索真实文档
  • 优势:缩小查询和文档的语义鸿沟,提升检索精度
  • 适用:专业领域查询效果显著

(3)统一扩展检索框架

  • 整合 MQE 和 HyDE 两种策略
  • 通过"扩展-检索-合并"三步流程
  • 支持灵活配置,根据场景选择策略

4.6 实际应用:智能文档问答助手

案例功能

  1. 智能文档处理:PDF → Markdown → 分块 → 向量化
  2. 高级检索问答:MQE + HyDE 提升检索质量
  3. 多层次记忆管理:工作记忆(当前任务)、情景记忆(学习事件)、语义记忆(概念知识)
  4. 个性化学习支持:基于学习历史的推荐、学习报告生成

核心实现

# 加载文档
rag_tool.execute("add_document", file_path=pdf_path)

# 智能问答
rag_tool.execute("ask", question=question, enable_mqe=True, enable_hyde=True)

# 记忆管理
memory_tool.execute("add", content=content, memory_type="semantic")
memory_tool.execute("search", query=query, limit=5)

4.7 设计要点总结

记忆系统设计

  • 分层架构:工作记忆(临时)→ 情景记忆(事件)→ 语义记忆(知识)
  • 评分机制:综合考虑相似度、时间衰减、重要性权重
  • 生命周期管理:自动整合、选择性遗忘、容量控制

RAG 系统设计

  • 统一转换:MarkItDown 处理多格式文档
  • 智能分块:基于 Markdown 结构的语义分割
  • 高级检索:MQE + HyDE 提升召回率和精度
  • 模块化设计:各层可独立优化和替换

核心优势

  • 记忆系统:让智能体具备类人的记忆能力,支持个性化服务
  • RAG 系统:突破模型知识局限,支持最新信息和专业领域知识
  • 组合使用:RAG 检索外部知识,Memory 记录学习经验,形成完整闭环

参考资料

评论(没有评论)

谢谢你请我喝咖啡~

扫码支持
扫码打赏,支持一下
微信 微信支付
支付宝 支付宝

打开微信扫一扫,即可进行扫码打赏哦