尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

AI Agent 的记忆机制:从短期记忆到向量数据库

AI Agent 的记忆机制:从短期记忆到向量数据库
📅 发布时间:2026/6/30 17:15:14

AI Agent 的记忆机制:从短期记忆到向量数据库

在构建 AI Agent 的过程中,记忆(Memory)是一个经常被低估却至关重要的模块。没有记忆的 Agent 就像金鱼——每次对话都从零开始,无法记住用户的偏好、历史上下文,更别提从长期经验中学习和优化。本文将系统梳理 AI Agent 的记忆体系,从短期记忆到向量数据库持久化,深入探讨记忆检索与更新策略,并附上可运行的代码示例。

一、为什么 Agent 需要记忆?

大语言模型(LLM)本身是无状态的,每次请求都是独立的。然而,一个实用的 Agent 必须能够: -记住用户身份与偏好:如用户的职业、习惯、常用语气等; -维护对话上下文:避免在对话中重复提问或丢失关键信息; -积累长期经验:从过去的成功或失败中优化未来决策; -跨会话保持状态:用户今天离开,明天回来,Agent 仍然记得之前的交流。 没有记忆机制的 Agent,本质上只是一个高级的问答机器人,而非真正能够持续学习和协作的智能体。

二、短期记忆 vs 长期记忆

AI Agent 的记忆体系通常分为两个层次:

2.1 短期记忆(Short-Term Memory)

短期记忆承载的是当前对话回合或任务中的上下文信息。它的特点是: -生命周期短:通常只在当前会话或任务期间有效; -容量有限:受 LLM 上下文窗口(Context Window)的硬约束,一般为 4K~200K tokens; -访问快:直接作为 Prompt 的一部分输入模型,无需额外检索。 短期记忆最常见的实现方式是对话历史(Chat History)。在 LangChain 中,这通常由ConversationBufferMemory或ConversationBufferWindowMemory管理。但短期记忆的天然瓶颈是:当对话历史超出上下文窗口时,早期信息会被截断,导致信息丢失。

2.2 长期记忆(Long-Term Memory)

长期记忆用于存储跨越会话、任务甚至用户生命周期的信息。它的特点是: -持久化存储:写入数据库、文件或向量存储,服务重启后仍然存在; -容量几乎无限:不再受上下文窗口限制,可存储海量的历史经验; -按需检索:通过检索机制将相关记忆片段注入当前 Prompt,而非全部加载。 长期记忆是 Agent 从"一次性工具"进化为"持续伙伴"的关键。

三、工作记忆:连接短期与长期的桥梁

工作记忆(Working Memory)是认知心理学中的概念,在 AI Agent 中有着重要的工程意义。它指的是:

Agent 在当前任务中,从长期记忆中有选择地加载到短期记忆中的一组信息。

换句话说,工作记忆是"短期记忆中真正被使用的那部分长期记忆"。它解决了一个核心问题: -长期记忆太大,无法全部塞进 Prompt; -工作记忆太小,必须筛选最相关的信息。 工程上,工作记忆的构建通常依赖以下步骤: 1.查询生成:将当前对话或任务状态转化为检索 query; 2.记忆检索:从长期记忆存储中检索最相关的片段; 3.信息注入:将检索结果格式化后拼入当前 Prompt 的 system 或 user 部分; 4.动态更新:根据当前交互结果,将新信息写回长期记忆。

四、向量数据库持久化

长期记忆最常见的载体是向量数据库(Vector Database)。其核心原理是: - 将记忆文本通过嵌入模型(Embedding Model)编码为稠密向量; - 存入向量数据库,支持高效的近似最近邻(ANN)检索; - 检索时,将当前 query 同样编码为向量,查询最相似的 Top-K 记忆片段。为什么选向量数据库?| 存储方式 | 检索能力 | 语义理解 | 扩展性 | 适用场景 | |---------|---------|---------|--------|---------| | 纯文本文件 | 无 | 无 | 差 | 调试、日志 | | 关系型数据库 | 精确匹配 | 无 | 中 | 结构化元数据 | | 向量数据库 | 语义相似度 | 强 | 高 | 长期记忆检索 | Chroma、Weaviate、Pinecone、Milvus 等向量数据库已成为 Agent 记忆持久化的标配。Chroma 因轻量、易集成而尤为适合快速原型。

五、记忆检索策略

检索策略直接决定了 Agent 能否"想起"正确的信息。常见策略包括:

5.1 向量相似度检索(Vector Similarity Search)

最基础的检索方式,将 query 向量化后在向量空间中寻找最近邻。优点是简单高效,缺点是可能召回不相关或过时的信息。

5.2 时间加权检索(Time-Weighted Retrieval)

在相似度基础上加入时间衰减因子,越新的记忆权重越高。适合需要"最近发生的事记得更清楚"的场景。

5.3 多路召回与重排序(Multi-Recall + Rerank)

结合关键词检索(BM25/TF-IDF)和向量检索,通过交叉编码器(Cross-Encoder)对召回结果重排序,提升精度。

5.4 结构化记忆(Structured Memory)

对记忆进行分类和结构化存储,如"用户属性"、"任务历史"、"知识事实"等,检索时按类型过滤,降低噪声。

六、记忆衰减与更新机制

人类记忆会随时间衰退,Agent 的记忆同样需要衰减和更新机制:

6.1 遗忘与衰减

-时间衰减:设定半衰期,久未访问的记忆相似度得分乘以衰减系数; -容量上限:设定记忆总量上限,新记忆写入时淘汰最旧的或得分最低的; -主动遗忘:Agent 根据任务结果判断某些记忆为"错误经验",主动标记删除。

6.2 记忆巩固与摘要

-对话摘要:当对话历史过长时,使用 LLM 将其压缩为摘要,替代原始对话存入长期记忆; -知识提取:从对话中抽取结构化事实(如"用户喜欢 Python"),以键值对形式存入记忆库; -冲突解决:新旧记忆冲突时,以时间戳或置信度为依据更新或合并。

七、代码示例:LangChain Memory + Chroma

以下是一个完整的示例,展示如何在 LangChain 中实现基于 Chroma 的向量记忆系统:

from langchain.memory import VectorStoreRetrieverMemory from langchain_openai import OpenAIEmbeddings, ChatOpenAI from langchain.chains import ConversationChain from langchain.prompts import PromptTemplate import chromadb from langchain_community.vectorstores import Chroma

1. 初始化 Chroma 向量数据库

client = chromadb.Client() collection = client.get_or_create_collection("agent_memory")

2. 使用 OpenAI Embedding 模型

embeddings = OpenAIEmbeddings(model="text-embedding-3-small")

3. 构建 LangChain Chroma 向量存储

vectorstore = Chroma( client=client, collection_name="agent_memory", embedding_function=embeddings, )

4. 创建记忆检索器,k=3 表示每次检索 3 条最相关记忆

retriever = vectorstore.as_retriever(search_kwargs={"k": 3}) memory = VectorStoreRetrieverMemory(retriever=retriever)

5. 预设一些示例记忆(模拟历史交互)

memory.save_context({"input": "你好,我叫李明,是一名数据工程师。"}, {"output": "你好李明,很高兴认识你!有什么我可以帮你的吗?"}) memory.save_context({"input": "我平时主要用 Python 和 SQL。"}, {"output": "Python 和 SQL 是数据工程的利器,我们可以深入聊聊。"}) memory.save_context({"input": "我对 AI Agent 很感兴趣。"}, {"output": "AI Agent 是非常热门的前沿方向,我们可以从记忆机制开始聊。"})

6. 自定义 Prompt,将历史记忆注入上下文

_template = """你是一个有帮助的 AI 助手。以下是与用户的已知信息(按相关度排序): {history} 当前对话: Human: {input} AI:""" prompt = PromptTemplate(input_variables=["history", "input"], template=_template)

7. 构建对话链

llm = ChatOpenAI(model="gpt-4o-mini", temperature=0.7) conversation = ConversationChain( llm=llm, prompt=prompt, memory=memory,

相关新闻

  • Google IO App:一个写了十年的 Android 示例项目
  • Xonaly:无广告、保护隐私的加拿大研发搜索引擎来袭!
  • Kubernetes 交付 Skill:Helm Chart 生成、参数优化与部署检查一条龙

最新新闻

  • 007、EDSR增强深度残差:移除BN层的性能提升与超参调优技巧
  • Qt桌面应用AES-128 CBC加密模块实现与OpenSSL集成指南
  • 深度学习辅助的Simeck32/64轻量级密码差分分析实战
  • 保姆级教程:用STM32CubeMX HAL库搞定JY61P姿态传感器数据读取(附完整代码)
  • EHR-Safe:医疗AI合成数据框架实现高保真与强隐私协同
  • 3分钟搞定Windows PDF打印难题:PDFtoPrinter终极解决方案指南

日新闻

  • 【计算机毕业设计案例】基于 Spring Boot+Vue 的电影售票系统设计与实现 前后端分离架构下影院在线购票管理平台(程序+文档+讲解+定制)
  • 到底 TMD 用哪个: npm, pnpm, Yarn, Bun, Deno? 傻瓜, 当然用 npm 啦
  • Google限制Meta使用Gemini模型 凸显AI授权竞争白热化

周新闻

  • Windows字体自定义终极方案:No!! MeiryoUI完全指南
  • Deepin Boot Maker:告别命令行,3分钟制作Linux启动盘的智能解决方案
  • Plain Craft Launcher 2:重新定义你的Minecraft游戏体验

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号