本文介绍如何为智能体构建持久性记忆系统,通过双路记忆堆栈(情节记忆+语义记忆)解决智能体健忘问题。情节记忆使用向量数据库存储对话历史,语义记忆使用图数据库存储结构化事实。文章详细展示了实现方法、代码构建及实际应用,使智能体能够记住用户信息并提供个性化交互,从"工具"向"伴侣"转变。


在前面的系列文章中,我们已经为智能体装上了“大脑”(Planning)、“双手”(Tool Call)甚至是“质检员”(PEV)。然而,即便这些功能再强大,标准智能体仍然面临一个致命的局限:健忘。

目前的对话智能体大多是“短时记忆”的产物,它们的记忆仅存在于当前会话。一旦对话重置,它们便会忘记你的名字、偏好以及你们曾共同探讨的深刻见解。

今天,我们将攻克智能体走向进化的关键一环——持久性记忆(Persistent Memory)。我们将模仿人类的认知架构,实现一个双路记忆堆栈:情节记忆(Episodic Memory)+ 语义记忆(Semantic Memory)。


一、 情节与语义:模仿人类的记忆分层

人类的记忆并非一团乱麻,而是有序分层的。在认知心理学中,长期记忆主要分为两类:

  1. 情节记忆(Episodic Memory):
  • 定义:对特定事件或过去交互的记忆。
  • 回答:“发生了什么?”(例如:“上周用户问过关于英伟达股价的问题”)。
  • 实现方式:我们使用向量数据库(Vector DB),通过语义相似度检索相关的历史对话片段。
  1. 语义记忆(Semantic Memory):
  • 定义:从事件中提炼出的结构化事实、概念和关系。
  • 回答:“我知道什么?”(例如:“用户 Alex 是一位保守型投资者”、“Alex 对科技股感兴趣”)。
  • 实现方式:我们使用图数据库(Neo4j),因为它擅长管理和查询实体间的复杂关系。

▲ Agent记忆系统核心功能示例

通过这两者的结合,Agent 不仅能回想起过去的对话“剧情”,还能在脑海中构建一张关于用户的“知识图谱”,从而实现深度定制的个性化交互。


二、 记忆增强智能体的工作流

整个记忆堆栈遵循“交互-检索-生成-编码”的闭环:

  1. 交互(Interaction):接收用户输入。
  2. 检索(Recall):
  • 在情节向量库中搜索相似的对话历史。
  • 在语义图数据库中查询与当前话题相关的实体事实。
  1. 增强生成(Augmented Generation):将检索到的双路记忆注入提示词,生成具备“历史记忆”的响应。
  2. 编码(Encoding):对话结束后,后台进程启动:
  • 总结对话回合(生成新的情节记忆)。
  • 提取实体关系(生成新的语义事实)。
  1. 存储(Storage):将新记忆持久化到向量库和图数据库。

三、 代码实战:构建双路记忆堆栈

3.1 环境准备

我们将使用 openai 的推理服务,以及****Neo4j 作为图数据库核心。需要在env文件中写入llm推理模型配置和embedding模型配置

# 安装必要库
!pip install -q -U langchain-openai langchain langgraph neo4j faiss-cpu tiktoken
import os, uuid, json
from typing import List, Dict, Any, Optional
from langchain_openai import ChatOpenAI
from langchain_community.graphs import Neo4jGraph
from langchain_community.vectorstores import FAISS
from langchain.docstore.document import Document
from langgraph.graph import StateGraph, END
# 初始化 LLM 与 嵌入模型
llm = ChatOpenAI(
base_url=os.environ.get("base_url"),
api_key=os.environ.get("api_key"),
model=os.environ.get("model"),
temperature=0,
)
embeddings = llm = ChatOpenAI(
base_url=os.environ.get("base_url"),
api_key=os.environ.get("api_key"),
model=os.environ.get("embedding_model"),
)
# 初始化情节记忆(向量库)
episodic_vector_store = FAISS.from_texts(["初始引导文档"], embeddings)
# 初始化语义记忆(图数据库)
graph = Neo4jGraph(
url=os.environ.get("NEO4J_URI"),
username=os.environ.get("NEO4J_USERNAME"),
password=os.environ.get("NEO4J_PASSWORD")
)

3.2 记忆制造者:Memory Maker

这是系统的核心,负责将对话“消化”并转化为记忆。

from pydantic import BaseModel, Field
class Node(BaseModel):
id: str = Field(description="节点唯一标识,如人名、公司代码或概念")
type: str = Field(description="节点类型,如 'User', 'Company', 'InvestmentPhilosophy'")
properties: Dict[str, Any] = Field(default_factory=dict)
class Relationship(BaseModel):
source: Node; target: Node
type: str = Field(description="关系类型,如 'IS_A', 'INTERESTED_IN'")
class KnowledgeGraph(BaseModel):
relationships: List[Relationship]
def create_memories(user_input: str, assistant_output: str):
conversation = f"User: {user_input}\nAssistant: {assistant_output}"
# 1. 提取情节记忆(总结)
summary_prompt = f"请为以下对话生成一句简明扼要的摘要:\n{conversation}"
episodic_summary = llm.invoke(summary_prompt).content
episodic_vector_store.add_documents([Document(page_content=episodic_summary)])
# 2. 提取语义记忆(图谱提取)
extractor_llm = llm.with_structured_output(KnowledgeGraph)
extraction_prompt = f"从以下对话中提取关键实体及其关系,侧重用户偏好和事实:\n{conversation}"
kg_data = extractor_llm.invoke(extraction_prompt)
if kg_data.relationships:
for rel in kg_data.relationships:
# 将提取出的关系写入 Neo4j
graph.add_graph_documents([rel], include_source=True)

3.3 记忆增强型 Agent 的逻辑

通过 LangGraph 构建一个包含“检索-生成-更新”的循环流程。

class AgentState(TypedDict):
user_input: str
retrieved_memories: Optional[str]
generation: str
def retrieve_memory(state: AgentState):
user_input = state['user_input']
# 检索情节记忆
docs = episodic_vector_store.similarity_search(user_input, k=2)
episodic = "\n".join([d.page_content for d in docs])
# 检索语义记忆(Cypher 查询)
semantic = str(graph.query("""
UNWIND $keywords AS keyword
CALL db.index.fulltext.queryNodes("entity", keyword) YIELD node, score
MATCH (node)-[r]-(related)
RETURN node.id, type(r), related.id LIMIT 5
""", {'keywords': user_input.split()}))
return {"retrieved_memories": f"【情节回顾】:\n{episodic}\n\n【已知事实】:\n{semantic}"}
def generate_response(state: AgentState):
prompt = f"""你是一个个性化金融助手。利用以下记忆来定制你的回复:
{state['retrieved_memories']}
用户问题:{state['user_input']}"""
response = llm.invoke(prompt).content
return {"generation": response}
# 构建 Graph 略(见系列前文)

四、 深度演示:Agent 如何“认识”你?

让我们模拟一个三轮对话,看看 Agent 记忆的成长。

第一轮:播种

用户:你好,我是 Alex,我是一个保守型投资者,主要对老牌科技股感兴趣。
Agent 响应:你好 Alex!专注于基本面稳健的老牌科技公司是很明智的。
后端变化:

  • 情节记忆:存入“用户 Alex 介绍自己是保守型投资者,关注老牌科技股”。
  • 语义图谱:创建节点 (User: Alex) -> [:HAS_GOAL] -> (Philosophy: Conservative)。

第二轮:深入

用户:你觉得苹果(AAPL)怎么样?
Agent 响应:对于保守型投资者,AAPL 是基石。它有巨额现金流和持续的分红…
后端变化:

  • 语义图谱:增加关系 (User: Alex) -> [:INTERESTED_IN] -> (Company: AAPL)。

第三轮:记忆测试

用户:“基于我的目标,除了那支股票,还有什么好的替代方案?”
Agent 响应:“当然,Alex。基于你偏好的保守投资风格(语义记忆检索),既然你已经关注了苹果,微软(MSFT)是一个绝佳选择(逻辑推理)。它同样是科技巨头,但业务更多元化…”

注意:在第三轮中,用户没有提到自己的名字、风格和苹果公司,但 Agent 完美通过了“记忆测试”。


五、 总结与展望

在本文中,我们成功构建了一个具备情节+语义双路记忆的智能体。

  • 无状态的失败:标准 Agent 会在第三轮对话中抓瞎,因为它不记得 Alex 也不记得 Apple。
  • 记忆增强的成功:我们的 Agent 能够“检索发生了什么”(情节)并“提取已知事实”(语义),从而生成深度的个性化推荐。

这种结合是智能体从“工具”转变为“伴侣”的关键。虽然在规模化管理中还面临**记忆膨胀(Memory Bloat)和修剪(Pruning)**的挑战,但我们今天搭建的底层架构已经为未来的持续学习奠定了坚实基础。

如何系统的学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

一直在更新,更多的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇

在这里插入图片描述

01.大模型风口已至:月薪30K+的AI岗正在批量诞生

在这里插入图片描述

2025年大模型应用呈现爆发式增长,根据工信部最新数据:

国内大模型相关岗位缺口达47万

初级工程师平均薪资28K(数据来源:BOSS直聘报告)

70%企业存在"能用模型不会调优"的痛点

真实案例:某二本机械专业学员,通过4个月系统学习,成功拿到某AI医疗公司大模型优化岗offer,薪资直接翻3倍!

02.大模型 AI 学习和面试资料

1️⃣ 提示词工程:把ChatGPT从玩具变成生产工具
2️⃣ RAG系统:让大模型精准输出行业知识
3️⃣ 智能体开发:用AutoGPT打造24小时数字员工

📦熬了三个大夜整理的《AI进化工具包》送你:
✔️ 大厂内部LLM落地手册(含58个真实案例)
✔️ 提示词设计模板库(覆盖12大应用场景)
✔️ 私藏学习路径图(0基础到项目实战仅需90天)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范
  • …

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署
  • …

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建
  • …

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案
  • …

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

在这里插入图片描述

Logo

更多推荐