跳到主要内容

RAG记忆

  • 通过RAG记忆,可以记住用户的历史对话、用户配置以及一些信息等等,并在下一次回答可以合理利用这些信息
  • 无记忆的问题
    • 上下文丢失、个性化丢失、对话遗忘

RAG 记忆主要解决​

  • 用户偏好
    • 用户风格、语言、格式
  • 历史上下文
    • 之前对话中的核心内容
  • 业务状态
    • 项目进度、已完成的任务等等
  • 个性化回答
    • 根据用户历史输出更贴合的答案

记忆如何处理​

  • 短期记忆主要是当前会话上下文,可以直接放在 Prompt 提示词里
  • 长期记忆不会保存所有聊天记录,通过模型来进行对记忆抽取、判断哪些信息有长期价值,比如用户偏好、项目背景、业务状态、历史决策等,再进行结构化存储或向量化存储

记忆如何存储​

  • 在存储上,一般不会只依赖向量数据库。像用户语言、角色、配置、业务状态这类明确字段,更适合存在业务数据库中,如 MySQL或 Redis 中, 而历史对话摘要、文档片段这些语义化的内容,更适合放在向量数据库

记忆如何更新​

  • 记忆不是只新增,还要支持更新、删除等等
  • 记忆还需要支持更新和删除。比如用户偏好变化时,新记忆要覆盖旧记忆;相似记忆要合并;过期记忆要降权或清理;用户明确要求删除时要立即删除。这样可以避免记忆冲突 | 操作 | 说明 | | ---------- | ------------ | | 新增 | 发现新的长期信息 | | 合并 | 相似记忆合并成一条 | | 更新 | 用户偏好变化后覆盖旧值 | | 删除 | 用户要求删除或信息过期 | | 降权 | 长时间不用的记忆降低权重 | | 过期 | 临时记忆自动失效 |

相关问题​

  • 为什么不把所有对话记录都存向量库?
    • 噪声大(无关的内容)、成本高、检索不准
  • 只需要存储会话中的核心信息即可
  • 历史对话怎么存?
  • 先让大模型进行摘要和抽取,把核心有价值的信息整理, 在转换成向量来存储
  • 记忆冲突如何处理?
  • 优先新记忆、对记忆进行版本管理*
  • 如何避免错误记忆?
  • 可以通过人工确认、来源记录检查
  • 如何保护隐私?
    • 在会话里,可能会存在隐私问题,可以对敏感信息过滤
  • 记忆太多如何处理?
  • 对记忆分类、过期的记忆删除、记忆摘要压缩