零基础学AI大模型之LLM大模型存储记忆功能

大家好,我是工藤学编程 🦉 一个正在努力学习的小博主,期待你的关注
实战代码系列最新文章😉 C++实现图书管理系统(Qt C++ GUI界面版)
SpringBoot实战系列🐷 【SpringBoot实战系列】SpringBoot3.X 整合 MinIO 存储原生方案
分库分表 分库分表之实战-sharding-JDBC分库分表执行流程原理剖析
消息队列 深入浅出 RabbitMQ-RabbitMQ消息确认机制(ACK)
AI大模型 零基础学AI大模型之旅游规划智能体之react_agent实战

前情摘要

1、零基础学AI大模型之读懂AI大模型
2、零基础学AI大模型之从0到1调用大模型API
3、零基础学AI大模型之SpringAI
4、零基础学AI大模型之AI大模型常见概念
5、零基础学AI大模型之大模型私有化部署全指南
6、零基础学AI大模型之AI大模型可视化界面
7、零基础学AI大模型之LangChain
8、零基础学AI大模型之LangChain六大核心模块与大模型IO交互链路
9、零基础学AI大模型之Prompt提示词工程
10、零基础学AI大模型之LangChain-PromptTemplate
11、零基础学AI大模型之ChatModel聊天模型与ChatPromptTemplate实战
12、零基础学AI大模型之LangChain链
13、零基础学AI大模型之Stream流式输出实战
14、零基础学AI大模型之LangChain Output Parser
15、零基础学AI大模型之解析器PydanticOutputParser
16、零基础学AI大模型之大模型的"幻觉"
17、零基础学AI大模型之RAG技术
18、零基础学AI大模型之RAG系统链路解析与Document Loaders多案例实战
19、零基础学AI大模型之LangChain PyPDFLoader实战与PDF图片提取全解析
20、零基础学AI大模型之LangChain WebBaseLoader与Docx2txtLoader实战
21、零基础学AI大模型之RAG系统链路构建:文档切割转换全解析
22、零基础学AI大模型之LangChain 文本分割器实战:CharacterTextSplitter 与 RecursiveCharacterTextSplitter 全解析
23、零基础学AI大模型之Embedding与LLM大模型对比全解析
24、零基础学AI大模型之LangChain Embedding框架全解析
25、零基础学AI大模型之嵌入模型性能优化
26、零基础学AI大模型之向量数据库介绍与技术选型思考
27、零基础学AI大模型之Milvus向量数据库全解析
28、零基础学AI大模型之Milvus核心:分区-分片-段结构全解+最佳实践
29、零基础学AI大模型之Milvus部署架构选型+Linux实战:Docker一键部署+WebUI使用
30、零基础学AI大模型之Milvus实战:Attu可视化安装+Python整合全案例
31、零基础学AI大模型之Milvus索引实战
32、零基础学AI大模型之Milvus DML实战
33、零基础学AI大模型之Milvus向量Search查询综合案例实战
33、零基础学AI大模型之新版LangChain向量数据库VectorStore设计全解析
34、零基础学AI大模型之相似度Search与MMR最大边界相关搜索实战
35、零基础学AI大模型之LangChain整合Milvus:新增与删除数据实战
36、零基础学AI大模型之LangChain+Milvus实战:相似性搜索与MMR多样化检索全解析
37、零基础学AI大模型之LangChain Retriever
38、零基础学AI大模型之MultiQueryRetriever多查询检索全解析
39、零基础学AI大模型之LangChain核心:Runnable接口底层实现
40、零基础学AI大模型之RunnablePassthrough
41、零基础学AI大模型之RunnableParallel
42、零基础学AI大模型之RunnableLambda
43、零基础学AI大模型之RunnableBranch
44、零基础学AI大模型之Agent智能体
45、零基础学AI大模型之LangChain Tool工具
46、零基础学AI大模型之LLM绑定Tool工具实战
47、零基础学AI大模型之LangChain Tool异常处理
48、零基础学AI大模型之CoT思维链和ReAct推理行动
49、零基础学AI大模型之Zero-Shot和Few-Shot
50、零基础学AI大模型之LangChain智能体执行引擎AgentExecutor
51、零基础学AI大模型之个人助理智能体之tool_calling_agent实战
52、零基础学AI大模型之旅游规划智能体之react_agent实战


本文章目录

零基础学AI大模型之LLM大模型存储记忆功能

哈喽,各位小伙伴!👋 之前我们把LangChain框架、RAG技术、Agent智能体这些核心知识点拆了个遍,不知道大家有没有遇到过这种尴尬------跟大模型聊了半天,转头问它"我刚才说我叫啥",它却一脸懵地回复"抱歉,我不知道"。这其实就是大模型"记忆力"的问题!今天咱们就专门攻克LLM的存储记忆功能,搞懂它为什么需要记忆、怎么实现记忆,以及在实际场景中怎么用,让大模型真正"记住"每一个需求~

一、为什么大模型需要"存储记忆"功能?

大模型的记忆功能不是"锦上添花",而是"雪中送炭"------没有记忆的大模型,就像个"鱼的记忆"选手,交互体验会大打折扣。核心原因就三个:

1. 解决长对话上下文"遗忘"痛点

不管是GPT-4还是其他大模型,单次对话的上下文窗口都有token限制(常见4k~128k),超过这个限制,早期的对话信息就会被"挤掉",导致模型"失忆"。

  • 经典反例:
    用户1:"我叫张三"
    AI:"你好张三!"
    用户2:"我叫什么名字?"
    AI:"抱歉,我不知道您的名字。"(预期应该回答"张三")
  • 实际影响:比如用户先问"如何制作蛋糕",接着问"需要烤箱吗",没记忆的模型可能只说"需要烤箱",却忘了之前聊的蛋糕配方关键步骤。

2. 支撑个性化服务:记住"你的专属需求"

在客服、教育、医疗这些场景里,用户需要模型记住自己的专属信息------比如姓名、病史、订单记录、学习进度,这样服务才够"贴心"。

  • 医疗场景:患者复诊时,医疗助手能直接根据历史诊断结果给建议,不用患者重复说"我上次查出来血压高";
  • 教育场景:学习助手记住用户"要学微积分"的目标,推荐资料时就不会推已经掌握的基础数学内容。

3. 管理复杂任务:跟踪"任务中间状态"

像旅行规划、代码调试这种多步骤任务,需要模型记住中间过程------比如已经推荐的景点、试过的调试方案,不然任务推进就会反复"返工"。

  • 旅行规划示例:用户让"规划上海到北京三天行程",模型先推荐了第一天去故宫,用户接着问"第二天去哪",有记忆的模型会基于"北京行程"这个大前提推荐,而不是乱推荐一个别的城市的景点。

二、LangChain怎么实现大模型记忆?两大核心方案

LangChain作为大模型应用开发的"瑞士军刀",提供了完善的记忆解决方案,主要分为「短期记忆」和「长期记忆」两类,刚好对应不同的使用场景。

1. 短期记忆:搞定"单次对话"的连贯性

短期记忆的核心是"记住当前会话的近期历史",确保多轮聊天不脱节,实现起来很简单------通过LangChain的Memory模块,把历史对话存储在内存里,每次提问时都把历史消息和当前问题一起传给大模型。

  • 适用场景:即时聊天、单次短期任务(比如临时问个问题、简单咨询);
  • 核心逻辑:不用复杂存储,就靠"拼接历史消息"实现,比如把[用户:你好][AI:你好!]和当前问题"你是谁"拼在一起,模型就知道是在延续对话。

2. 长期记忆:实现"跨会话"的持久化记忆

短期记忆只能管单次对话,关掉会话就忘了。长期记忆则是把用户数据存在外部存储里,突破上下文窗口限制,就算下次再聊也能认出你。

  • 存储载体:常用向量数据库(Milvus、Pinecone)、关系型数据库(MySQL)等;
  • 适用场景:用户画像构建、长期个性化服务(比如电商推荐)、跨会话任务(比如持续一周的项目咨询);
  • 核心逻辑:把用户的关键信息(比如购买记录、学习目标)结构化或向量化后存起来,需要时通过检索拉取。

3. 混合模式:短期+长期,实战主流方案

实际开发中,很少单独用短期或长期记忆,更多是"短期记忆保连贯,长期记忆补历史"------也就是「短期记忆 + 长期检索增强(RAG)」的混合模式。

  • 工作流程:用户提问时,先从短期记忆里拿近期对话,再从长期存储(比如Milvus)里检索相关历史信息,两者结合后传给大模型,既保证当前对话流畅,又能调用跨会话记忆。

三、记忆功能核心设计:短期vs长期,怎么选?

短期记忆和长期记忆各有优劣,用的时候要根据场景选。下面用表格把关键差异说清楚,一看就懂:

对比维度 短期记忆 长期记忆
存储方式 内存缓存,拼接在模型输入的历史消息中 数据库持久化存储(向量库/文件/关系库)
容量限制 受上下文窗口限制(4k~128k tokens) 理论上无上限
访问速度 毫秒级(内存读取,几乎无延迟) 百毫秒级(依赖检索算法,有轻微延迟)
典型应用 单次对话连贯性保持、即时咨询 个性化服务、用户画像、跨会话记忆、知识库
实现复杂度 低(LangChain直接调用Memory模块) 高(需部署存储系统、设计检索逻辑)
成本 低(无额外存储开销) 中高(需维护服务器、存储设备)
示例 聊天中记住前3轮说过的话 记住用户半年前的购买记录、学习目标

四、记忆功能怎么实现?3种关键方式

不管是短期还是长期记忆,核心都是"存得下、取得到"。下面讲3种实战中常用的实现方式:

1. 短期记忆:历史消息拼接

这是最简单的实现方式,LangChain的ConversationBufferMemory就是干这个的------把每一轮对话都存起来,生成新回复时拼接成"历史对话+当前问题"的格式。

  • 简化示例代码:
python 复制代码
from langchain.memory import ConversationBufferMemory
from langchain.chat_models import ChatOpenAI
from langchain.chains import ConversationChain

# 初始化短期记忆(内存存储)
memory = ConversationBufferMemory()
# 初始化聊天模型和对话链
llm = ChatOpenAI(temperature=0)
conversation = ConversationChain(llm=llm, memory=memory)

# 第一轮对话:存记忆
conversation.predict(input="我叫张三")  # 输出:"你好张三!"
# 第二轮对话:用记忆
conversation.predict(input="我叫什么名字?")  # 输出:"你叫张三"

2. 长期记忆:结构化+向量化存储

长期记忆需要"持久化存储",常用两种方式:

  • 结构化存储:用MySQL等关系库,把用户信息存成表(比如用户表、订单表),需要时精准查询(比如查"用户A的2027年购买记录");
  • 向量化存储:把非结构化文本(比如对话记录、诊断报告)通过Embedding转成向量,存到Milvus等向量库,需要时用"相似度检索"找相关记忆(比如查"和用户A聊过的微积分知识点")。

3. 混合模式:短期记忆+RAG检索

结合短期记忆的流畅性和长期记忆的持久性,是实战首选。比如用VectorStoreRetrieverMemory,既存短期对话,又能从向量库拉长期记忆。

  • 核心逻辑:用户提问时,先从短期记忆拿近期对话,再从向量库检索相关长期记忆,两者合并后传给大模型。

五、应用场景与实战案例

记忆功能的价值,最终要落地到场景里。下面两个案例是实战中最常用的,带大家感受下怎么用:

案例1:个性化教育助手(记住学习目标)

需求:记住用户的学习目标(比如"掌握微积分"),后续推荐资料时精准匹配。

  • 实战伪代码(用LangChain+向量库):
python 复制代码
from langchain.memory import VectorStoreRetrieverMemory
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Milvus
from langchain.chat_models import ChatOpenAI
from langchain.chains import ConversationChain

# 1. 初始化Milvus向量库(存储长期记忆)
embeddings = OpenAIEmbeddings()
vectorstore = Milvus(
    embedding_function=embeddings,
    connection_args={"host": "localhost", "port": "19530"},
    collection_name="student_memory"
)
# 2. 初始化记忆系统(短期+长期)
retriever = vectorstore.as_retriever(search_kwargs={"k": 3})  # 取Top3相关记忆
memory = VectorStoreRetrieverMemory(retriever=retriever)

# 3. 存储学习目标(长期记忆)
memory.save_context(
    {"input": "我的学习目标是掌握微积分"}, 
    {"output": "目标已记录,将推荐相关资源"}
)
# 4. 存储知识点学习记录(长期记忆)
explanation = "洛必达法则是用于求不定式极限的方法,适用于0/0、∞/∞型极限..."
memory.save_context(
    {"input": "请解释洛必达法则"}, 
    {"output": f"{explanation} 已添加到你的学习清单"}
)

# 5. 后续对话:根据记忆推荐资料(调用长期记忆)
llm = ChatOpenAI(temperature=0)
conversation = ConversationChain(llm=llm, memory=memory)
response = conversation.predict(input="根据我的目标推荐学习资料")
print(response) 
# 输出:"基于你的学习目标(掌握微积分)和已学知识点(洛必达法则),推荐《普林斯顿微积分读本》..."

案例2:电商推荐引擎(记住用户行为)

需求:记住用户的购买、浏览、退货记录,分析兴趣并推荐商品(带时间权重,新行为比旧行为重要)。

  • 实战伪代码(用TimeWeightedVectorStoreRetriever):
python 复制代码
from langchain.retrievers import TimeWeightedVectorStoreRetriever
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Milvus
from langchain.schema import Document

# 1. 初始化Milvus向量库
embeddings = OpenAIEmbeddings()
vectorstore = Milvus(
    embedding_function=embeddings,
    connection_args={"host": "localhost", "port": "19530"},
    collection_name="user_behavior"
)

# 2. 初始化带时间权重的记忆检索器(新记忆权重高)
retriever = TimeWeightedVectorStoreRetriever(
    vectorstore=vectorstore,
    decay_rate=0.95,  # 记忆衰减系数(越旧的记忆权重越低)
    k=5  # 取Top5相关记忆
)

# 3. 存储用户行为(购买、浏览、退货)
retriever.add_documents([
    Document(page_content="用户2026-12-01购买手机", metadata={"type": "purchase"}),
    Document(page_content="用户2027-03-15浏览笔记本电脑", metadata={"type": "browse"}),
    Document(page_content="用户2027-06-20退货耳机", metadata={"type": "return"})
])

# 4. 分析用户兴趣(检索带时间权重的记忆)
relevant_memories = retriever.get_relevant_documents("分析用户近期兴趣")
for doc in relevant_memories:
    print(doc.page_content)
# 输出(按权重排序):
# "用户2027-06-20退货耳机"
# "用户2027-03-15浏览笔记本电脑"
# "用户2026-12-01购买手机"

六、大模型长短期记忆选择决策树:该用哪种?

很多小伙伴会纠结"什么时候用短期记忆,什么时候用长期记忆",这里给大家一个简单的决策树,照着选就行:

  1. 基础用法:用短期记忆

    • 场景:单次对话、不需要跨会话记住信息、功能简单(比如临时聊天、一次性咨询);
    • 工具:LangChain的ConversationBufferMemoryConversationSummaryMemory(总结记忆,减少token占用)。
  2. 进阶用法:用长期记忆+向量数据库

    • 场景:需要跨会话记忆、个性化服务、数据量大(比如电商推荐、医疗助手);
    • 工具:LangChain+Milvus/Pinecone+Embedding模型。
  3. 高级用法:多用户隔离记忆(会话级)

    • 场景:多用户使用(比如SaaS平台、多用户助手),需要区分不同用户的记忆;
    • 实现:给每个用户分配唯一ID,存储记忆时带上用户ID,检索时按用户ID过滤(比如Milvus里给向量加用户ID元数据)。

总结

大模型的记忆功能,本质是"让模型从'一次性问答工具'变成'有持续交互能力的助手'"------短期记忆保对话流畅,长期记忆做个性化服务,混合模式则是实战中的最优解。

如果有疑问,欢迎在评论区交流~ 咱们下期再见!👋

相关推荐
Katecat996632 小时前
钻斗设备部件识别与分类_yolo12-A2C2f-DFFN模型详解与应用
人工智能·分类·数据挖掘
草莓熊Lotso2 小时前
Linux 命令行参数与环境变量实战:从基础用法到底层原理
linux·运维·服务器·开发语言·数据库·c++·人工智能
阳艳讲ai2 小时前
九尾狐AI:让AI落地更简单,让商业增长更直接
人工智能
2501_941337062 小时前
耳部疾病图像识别与分类:基于FreeAnchor与X101模型的实现
人工智能·分类·数据挖掘
qunaa01012 小时前
结膜区域检测与分类:穹窿部、睑结膜和睑板部结膜识别定位技术研究
人工智能·分类·数据挖掘
向量引擎小橙2 小时前
【深度】2024-2025 AI 行业下半场:告别“参数竞赛”,卷向“落地”与“Agent”
人工智能
草莓熊Lotso2 小时前
Qt 控件核心入门:从基础认知到核心属性实战(含资源管理)
运维·开发语言·c++·人工智能·后端·qt·架构
狮子座明仔2 小时前
AI-Researcher:让 AI 自主完成从文献调研到论文发表的全流程科研
人工智能·深度学习·语言模型·自然语言处理
百胜软件@百胜软件3 小时前
黄飞对话阿里云AI专家:当零售中台拥有AI大脑,未来将去向何方?
人工智能·阿里云·零售