零基础学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元数据)。

总结

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

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

相关推荐
NAGNIP8 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab10 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab10 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP13 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年13 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼14 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS14 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区15 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈15 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang15 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx