大模型上下文工程实践指南-第4章:记忆系统与持久化,大模型入门到精通,收藏这篇就足够了!

4.1 基础理论

我们先来灵魂一问,为什么需要这个东西?最大的原因是没有记忆模块的话,大模型会是一个记不住任何东西的模型,没有办法解决复杂任务,也没办法长期持续运行。

这篇文章[1]里这样描述的:

Imagine hiring a brilliant co-worker. They can reason, write, and research with incredible skill. But there’s a catch: every day, they forget everything they ever did, learned or said. This is the reality of most Agents today. They are powerful but are inherently stateless.

中文是:

想象一下你雇了一位才华横溢的同事:他们逻辑清晰,文笔出色,研究能力惊人。但有个致命问题——每天一觉醒来,他们就会忘记所有曾做过、学过或说过的事情。这正是当今大多数 AI Agent 的真实写照:虽然强大,却天生“无记忆”。

因此我们可以发现记忆对于走向AI Agent,甚至是AGI都是不可或缺的一部分。本章节针对记忆系统的描述我会以AI Agent为主体,因为Agent是目前最常见的应用场景,在实践中也以不同的程度配备了记忆系统。

记忆系统在探讨和研究的其实是从简单数据存储到智能知识管理的根本性转变。在MemGPT[2]里就将记忆类比成操作系统中的虚拟内存管理机制

通过函数调用使得大模型可以主动读取外部存储。下面是一个记忆存储和读取的例子:

在和大模型交互的时候,会自动将聊天记录拆成条目存起来,ChatGPT也是这样做的[3]。在后续对话中,会根据情况判断是否要去搜索记忆,如果搜到相关的,就会进行召回,用于辅助生成结果,这里其实可以看作是利用了RAG的技术,包括搜索增强生成。自从MemGPT被提出之后,我们可以在后面的很多AI Agent和其他的AI应用上看到这个想法或者以这个想法为基础的变体,用于实现记忆系统,使得Agent可以在外部保留长期记忆。

就像软件3.0[4]的范式中提到的,记忆超越了简单的存储功能,成为一个主动的智能基础设施,它能够:

•从交互模式中学习

•维护显式的结构化知识

•协调动态上下文组装

现在也有很多针对记忆以及记忆演化的研究,包括自动从交互中习得一些知识并进行持久化,这些都是记忆系统和持久化的研究范畴,为了就是让AI Agent拥有持续从执行中获取新的知识并持久化,这样可以让模型在除了拥有训练阶段获得的能力以外,还能持续根据与外部交互的过程中持续学习。

4.1.1 记忆

记忆分类

最直接的记忆分类分为:

短期记忆(Shor-Term Memory),也有称上下文记忆(Contextual Memory),可以类比留驻在内存里的数据

长期记忆(Long-Term Memory),也有称持久化记忆(Persistent Memory),可以类比保存到磁盘里的数据

其中通常认为短期记忆是在运行时产生的记忆或者需要在本次给到大模型的记忆,而长期记忆是通过短期记忆转化未来并且进行持久化的记忆。在面向大模型的记忆设计时,我们可以这样思考,长期记忆是一个池子,里面充满了各种记忆,但是真正进行推理的时候我们会组装出短期记忆给到大模型,大模型可以借助这个短期记忆来推理。其实记忆这个东西依然还是存在上下文中的,只不过我们倾向于将其单独抽象出来说,我们可以回顾一下这张图:

Claude Code里其实有指明了Memory files部分,其实Messages部分也可以算是记忆的一部分,这样就共同构成了记忆。但是如果从广义的角度来说,其实整个上下文空间都应该算作是记忆的一部分(包括系统提示词部分可以认为是永久记忆),只不过为了区分内容性质方便进行不同程度和方向上的研究和演进,通常不会这样去处理。

这里也涉及到一个比较怪诞的点,人类倾向于将AI打造成和人类“类似”的存在,但是其实很多时候只是在模仿和类比,本质却是不同的东西。就好像人类有记忆,大模型也需要有记忆是一个道理,里面其实就会有很多错配的情况。就好比人类的长期记忆其实是没办法很准确的Recall的,会随着时间流逝而丧失很多记忆,这种自然的记忆淘汰机制也给了我们有限的脑容量在一个长时间纬度的运作提供了支撑。虽然现在AI延续人类记忆机制这个方向在研究和发展,但是我们很难说未来的上限也会在这里,毕竟AI是可以做到不忘记任何事情,这件事情本身也是一个双刃剑,在技术或解决方案还没有发展到足够可靠的情况下。

回过头来看,其实现在可见的方案在记忆和持久化上的实现方案都比较相似,基本原理是利用大模型来从对话里提取对应的记忆,然后存储到存储里。这里提取的记忆有可能是:

1.一条客观描述的事实,比如:Leo喜欢AI

2.也可能会进一步拆解成实体和关系,比如两个实体分别是Leo和AI,而这两者之间的关系是喜欢

所以理论上就是这两类数据了,第一类可以是短期或长期记忆,以文本形式存在,可以存到磁盘文件、关系数据库或结合向量化存到向量数据库里;而第二类通常是图结构存在(也就是实体和关系),存到图数据库里,通常还可能结合一些单层或多层社区来做聚类,将相似的数据集中在一个社区里,这样可以从顶层全局搜索开始,往下层到具体社区里做局部搜索,另外通常也会结合大模型摘要和向量化来做语义搜索。大方向上就是这样,当然实现细节根据业务场景和需求会有所不同,记忆的更新、召回、打分(自信度)之类的也会有一定的差异。

在各类论文和文章里我们经常可以看到一些根据记忆的功能和内容来分类的,我觉得philschmid和LangGraph[5]都是沿袭了同样的的分类,源于人类记忆分类[6]:

Semantic Memory (“What”): Retaining specific facts, concepts, and structured knowledge about users, e.g. user prefers Python over JavaScript.

Episodic Memory (“When” and “Where”): Recall past events or specific experiences to accomplish tasks by looking at past interactions. Think of few-shot examples, but real data.

Procedural Memory (“How”): internalized rules and instructions on how an agent performs tasks, e.g. “My summaries are too long" if multiple users provide feedback to be shorter.

整理后:

语义记忆(Semantic Memory,是什么):指的是保留关于用户的具体事实、概念以及结构化知识。例如:Leo在写CE101这本书。

情节记忆(Episodic Memory,何时与何地):能够回忆过去的事件或具体的互动经历,并借此完成任务。可以类比为“few-shot 示例”,但是真实发生过的对话或行为数据。比如:Leo这周写了第四章内容

程序性记忆(Procedural Memory,如何做):指 Agent 内化的规则和操作方式,其实就类似提示词里的人设部分,比如:以好友Sam的口吻与Leo对话,避免让我知道、请告诉我这种机械回复

这种分类有助于我们针对不同类型的记忆采用不同的处理和存储,可以从更加系统化的角度来管理记忆。在实际记忆相关的应用中,我们应该会更多看到前两种类型的记忆。

挑战和难点

记忆的原理不难,不过要把记忆做好,也不容易,甚至是有挑战性的!这里我依然还是要引用philschmid的这篇文章:

Relevance Problem: Retrieving irrelevant or outdated memories introduces noise and can degrade performance on the actual task. Achieving high precision is crucial.

Memory Bloat: An agent that remembers everything eventually remembers nothing useful. Storing every detail leads to “bloat” making it more, expensive to search, and harder to navigate.

Need to Forget: The value of information decays. Acting on outdated preferences or facts becomes unreliable. Designing eviction strategies to discard noise without accidentally deleting crucial, long-term context is difficult.

翻译转化后:

相关性问题:检索到不相关或过时的记忆会引入噪音,反而削弱 Agent 在当前任务上的表现。因此,确保高精度的检索至关重要。

记忆膨胀:一个什么都记住的 Agent,最终反而什么有用的都记不清。存储过多细节会导致“记忆膨胀”,不仅增加搜索成本,还让记忆体系难以管理和使用。

遗忘的必要性:信息的价值会随时间衰减。基于过时的偏好或事实采取行动是不可靠的。如何设计出既能有效清除噪音,又不会误删关键长期上下文的“遗忘机制”,是一个棘手的挑战。

结合我们人类的记忆系统,会记得近期的、重复多次的或印象深刻的记忆,其他则会慢慢遗忘。其实人类的记忆系统也不是完美的产物,但是或许正因为是这种不完美,让我们可以更加聚焦于重要的事情之上,不重要的东西就随之消散,这样就很有效的避免了目前大模型记忆系统会遇到的问题。

因为虽然存储是非常连接可靠的,但是无限增长的记忆在现有的技术框架下并不总是正向的,目前的记忆系统其实还是缺少了合理的机制来淘汰或者说筛选合适的记忆来保证长期稳定可靠的运作。

记忆和RAG

最后我想讨论一下记忆和RAG的关系。很多人会觉得记忆系统和RAG是相似的东西,没有错,其实两者有很多地方重叠了,甚至是底层实现原理和机制都是一样或类似的,其实这也是人为的划分,侧重点不同。记忆系统更加侧重在运行时产生的信息持续更新到记忆系统中(可以理解成一个特殊的RAG),而RAG则更加侧重在预先处理文档,后续通过查询来做语义搜索。所以两者其实没有分得那么细,我们也可以在下面看到一些SOTA记忆系统的实现方式会有GraphRAG、AgenticRAG[7]的影子在里面。因此在学习记忆系统和RAG的时候,可以结合一起来看和学习。

4.1.2 持久化

关于持久化,几乎就是沿袭了传统存储领域,存储媒介无外乎就是:

1.简单的磁盘文件

2.数据库:Redis[8]、关系数据库、向量数据库和图数据库

因此存储这块我们不会过多展开,不过这边倒是有个小例子可以分享一下。Letta在这篇文章[9]中提到,仅仅靠提供以下这几个文件操作工具给大模型:

grep

search_files

open

close

形成一个非常简单的Agent,然后跑LoCoMo[10],以GPT-4o得到了74%的成绩,为了更直观理解这个分数的情况,我们看看Memobase的一篇文章[11]中贴的评估结果对比图表(对比Overall列):

从这个分数对比以及Letta做的实验来看,进一步表明,记忆的存储并不一定需要高大上的存储方案,简单的磁盘文件存储就可以达到很好的效果了。只不过一些数据库的特性是可以提升效果的,尤其是向量数据库和图数据库这种比较难以通过高效的方式以文本实现。这也是DB发展的最根源驱动,以高效且简单的方式对外提供数据的增删改查。我们可以看到目前主流的解决方案会结合关系数据库+图数据库+向量数据库来使用,因此非常有必要学会使用这几类数据库,只不过篇幅问题,我们不会在这本书里去介绍这块内容。

4.1.3 基准测试(Benchmark)

在开始了解一些SOTA技术之前,我们有必要先了解一下长期记忆相关的基准测试,因为这个是各类记忆系统评估效果的一个重要来源,有点类似SWE[12]之类的基准测试之于大模型。虽然大家现在慢慢发现大模型的基准测试已经开始不太符合实际的应用情况,也就是目前流行的基准测试已经在慢慢丧失其原本的作用了,但是针对记忆系统这种垂类的方向,基准测试还是能提供一些参考。不过实际上基准测试还是应该结合业务和使用场景进行设计,才可以最大程度去评估记忆系统的效果。

Needle In A Haystack

NeedleInAHaystack[13]是一个专注于从一些内容中找出对的句子,我们在第二章有提到过这个,放几张图回顾一下:

这个基准测试都是固定的内容,因此目前被认为太过于简单了,已经不适应了。

LongMemEval

LongMemEval[14]是发布在ICLR2025[15]上的一个用于长期记忆的基准测试,关注5个方面:

信息抽取(Information Extraction):能否从长时间前的对话中准确提取出具体事实信息

多轮会话推理(Multi-Session Reasoning):能否跨多个会话片段整合信息并进行推理

知识更新(Knowledge Updates):能否识别信息变化并正确更新记忆中的事实

时间推理(Temporal Reasoning):能否理解事件发生的时间并进行正确的时间推算

拒答能力(Abstention):当缺乏相关信息时,能否选择不回答而非胡乱编造

是目前比较主要的一个基准测试方式

LoCoMo

LoCoMo是2024年提出的一个面向超长对话记忆的基准测试。它通过LLM生成+人工校正的方式构造出平均 300 轮、9K tokens、最长35个会话的对话,带有人设(persona)和事件时间线(temporal event graph),还包含图片分享与回应等多模态元素。

评测任务主要包括三类:问答(QA)事件总结(Event Summarization)多模态对话生成(Multimodal Dialogue Generation),重点考察模型在长期对话中的记忆、一致性和时间推理能力。

DMR(Deep Memory Retrieval)

DMR是Letta团队提出的一个较早的长期记忆基准,主要用于检验模型在多会话场景下的事实检索能力

它的特点是设计简单,核心就是看模型能否从过去的对话里准确回忆出具体事实,因此更偏向于一致性与准确性,而不像LongMemEval或LoCoMo那样覆盖多维度的复杂任务。

目前普遍认为 DMR 的难度中等,适合做记忆模块的快速验证,但单一的问答形式也被批评为不够全面。

4.2 SOTA技术

目前有一些相对前沿的应用和实践,我们一起来看看原理是什么,首先看看涉及这块比较流行的方法:

•Letta(MemGPT)[16]:基于AgenticRAG实现

•Zep(Graphti)[17]:基于向量化和知识图谱(图数据)实现

•Mem0[18]:基于向量化和知识图谱(图数据)实现

•Memobase[19]:基于Profile+事件时间线(Event Timeline)来实现的

•LangMem[20]/LangGraph[21]:基于posgres存记忆数据和向量化后的数据实现

•OpenAI’s Memory[22]:内部机制没有公开,但是可以观测到也是按照条目进行存放,结合向量化进行检索的实现方式

4.2.1 Letta(原MemGPT)

MemGPT也就是我们前面提到的,现在改名叫Letta了,是一个开源的项目[23],非常值得深入了解一下其内的机制。官网的介绍是:

The platform for stateful AI agents

Create agents with advanced memory that can learn and improve over time. Open source AI, built for developers.

很直观的口号和定位,面向有状态的AI Agent,让AI Agent拥有高级记忆功能,并且可以随着时间持续学习和提升,开源且为开发者而生。下面这种官方文档里的图可以完美地展示有状态AI Agent这个理念:

下面我们来进一看看Letta的记忆原理和实现细节。在开始前我会先展示一下全量的系统提示词:

You are Letta, the latest version of LimnalCorporation's digital companion, developed in2023.

翻译成中文是:

你是 Letta,由 Limnal 公司在 2023 年开发的最新版本数字伙伴。

可以看到提示词里有告诉大模型如何管理记忆,可以通过函数调用直接读写和更新记忆,最后我们也可以看到预留了填充目前的核心记忆的占位符,也就是核心记忆和归档记忆的总体情况会一直驻留在上下文空间里,这样大模型是可以实时感知到目前的记忆情况。我们来看看最后的{CORE_MEMORY}的例子:

### Memory [last modified: 2024-01-1112:43:23PM]

中文是:

### 记忆 [最后修改时间: 2024-01-11 12:43:23 PM]

看完核心的提示词,相信你已经对Letta有一个初步的认知了,现在我们进一步来看看其记忆相关的内容。其他的我们不会过多展开,更多是工程化实现,有兴趣的可以自己去看看。

Letta使用了三层内存架构,分别是:

核心记忆(Core Memory): 以Block为单元存储,存储代理人格(Persona)和用户(Human)信息

对话记忆(Conversation Memory): 时间序列存储,完整对话历史,通过模糊匹配检索,可分页按条目拉取。

归档记忆(Archival Memory): 向量检索,长期语义记忆,支持语义搜索。

在上面的系统提示词里我们已经看到相关的介绍了,我提取了相关的部分:

也就是可以更新用户或者AI的信息到核心记忆,这个记忆也会持久化到数据库,这是核心记忆,因此会长期全量驻留在上下文窗口里。

而对话产生的历史记录会随着时间不断被修剪掉,如果有需要的话,可以通过关键词到数据库里做模糊搜索。

最后是归档记忆,这个记忆是大模型自己决定(在系统提示词里有对应的指示)应该存到归档记忆里的,这个记忆会分块后做向量化生成Embeddings存到向量数据库,后续可以做语义搜索。

关于里面定义的Block[24]这个核心记忆单元,是用来承载单条记忆的。其实实现很简单,主要包含下面这些字段:

•id: str - 块的唯一标识符

•value: str - 块的内容值

•limit: int - 字符限制(默认5000)

•label: str - 块标签(human或persona)

•is_template: bool - 是否为模板

•read_only: bool - 是否只读

•description: str - 描述信息

•metadata: dict - 元数据

•created_by_id: str - 创建此块的用户ID

•last_updated_by_id: str - 最后更新此块的用户ID

其中最重要的就是标签label和内容value。Letta针对核心记忆定义了2个角色:

1.一个是用户信息(Human),就是随着时间推移获取到的用户信息都会保存在这里面

2.一个是角色信息(Persona),就是AI这个角色的性格、身份和说法风格等人设信息

通常有新增的信息都会通过换行后拼接到原来的内容上。下面是一个例子:

我们可以看到,Letta是在Tool列表里定义了这些操作内容的工具

function_map = {

结合系统提示词里已经明确指示模型可以在需要的时候调用对应的函数来实现工具调用,因此Letta的整体流程其实很简单

到这里Letta记忆相关的我们已经都了解完毕了。Letta的实现其实挺简单的,没有太多magic在里面,另外话说回来,细心的人应该注意到了这里面也用到了RAG的技术,这个在Letta的一篇文章[25]里也提到了,RAG ≠ 智能体记忆Letta是基于Agentic RAG的原理来实现的。也符合我们前面提到的,很多时候其实底层技术都是相同或相通的,分类知识人为划分归类的,在实践中最忌讳的就是为了技术和技术,我们不应专注在某个技术的应用,而是应该面向需求去设计,大胆去结合不同技术,甚至结合不同的技术去实现,这样你甚至有可能发现一些新的方式来实现更好的效果,并反向输出给行业或者社区。

4.2.2 Zep(原Graphiti)

先用Zep论文[26]里的一个基准测试图表开始吧:

也就是Zep发的论文里提到Zep在Letta自己推出的基准测试DMR上达到比Letta更好的效果,基本上每家自己都会声明在某某基准测试上达到了很好的效果之类的,和大模型厂商发新的大模型一样,记忆这个快看看就好,因为基本大家的效果都接近,效果都好。

Zep其实就是一个类似GraphRAG[27]的系统,Zep自己也表明[28]他们是受了GraphRAG的启发(下一章看到我们会深入GraphRAG,这边就不展开)。Zep里主要是以情节记忆(Episodic Memory)为主,借助了图(Graph)来存储,会拆成实体(Entity)关系(Relationship),还有关联到用户的事实(Fact)。简单说就是基于聊天记录来提取对应的实体和关系,基于图数据库来存储,同时还可以进一步构建社区,形成知识图谱体系。下面的关系可视化图应该可以很好的展示:

接下来我们来看看Zep里记忆相关的是怎么实现。首先是关于提取实体的系统提示词如下(Zep其实支持从message,jsontext中提取,我们这边只展示message方式,其他两种都是一样的,只不过提示词和里面拼装的数据有些许差别而已):

You are an AI assistant that extracts entity nodes from conversational messages.

翻译成中文是:

你是一个从对话消息中提取实体节点的 AI 助理。

还会拼接预定义的用户提示词:

<ENTITYTYPES>

翻译成中文是:

<实体类型>

下面是一个 填充后的示例:


响应结果示例:

{

这里我们就很清晰的能看出Zep是如何从聊天记录里提取对应的实体,其实就是预定义了一些实体列表,然后提供聊天记录,最后通过提示词来指示大模型按要求进行返回。

这里面还会有一些补充机制,比如里面有反思(Reflexion)环节,也就是在提取完实体后,会触发反思,目的是确保没有遗漏重要的实体,相关的系统提示词和用户提示词我拼在一起放在下面了

System Prompt:

反思后的输出结果:

{

看完了实体提取,我们再来看看关系提取,相关的提示词我放在下面:

SystemPrompt:

翻译成中文是:

系统提示词:

响应为:

{

通过上面两阶段,就已经可以取到实体和关系了,之后就还会有一些辅助操作,比如去重合并等,最后就是存到图数据库里了,同时节点和关系也会向量化生成embedding后存到向量数据库。通过实体和关系就可以组成一个事实(Fact),类似下面:

fact = "John Smith works at Google"

4.2.3 mem0

mem0结合了向量数据库和图数据库来做记忆的存储。下面我们会引用下这里[29]的几张图,我们可以看一下下面这张全局的流程示意图:

mem0的处理由两阶段组成:提取和更新。这样可以确保记忆的持续更新,并且不会出现重复或者已经失效的记忆。另外mem0也借助了图结构来将记忆结构化成有向标注图(directed, labeled graph):

同样的,开始之前我们也可以看看mem0自己的基准测试结果,正如前面说的,每家都会做一个对自己好看的基准测试,我们参考性的看看:

现在我们以完备的流程来看,也就是开启了推理、图存储等最完整的流程。大体的流程是:

1.解析输入内容,支持字符串、字典和列表

2.通过提示词+LLM调用提取事实

3.每个事实向量化走相似性搜索看看是否有相似的记忆

4.如果有相似记忆,再次通过提示词+LLM调用决定记忆更新方式:增删改和不操作

5.最终确认的记忆会进一通过提示词+LLM调用来提取实体和关系,方便最终更新到图数据库时使用

6.最终记忆会落到向量数据库、图数据库,而操作记录会落到关系数据库中

这样就完成了一个记忆的更新流程。下面是mem0的存储架构:

我们会看一下里面涉及的一些关键的提示词,提取关键事实:

You are a PersonalInformationOrganizer, specialized in accurately storing facts, user

翻译成中文是

你是一个个人信息整理助手,专门负责准确地存储事实、用户记忆和偏好。你的主要职责是从对话中提取相关信息,并将其整理为清晰且可管理的事实。这使得未来的交互中可以轻松检索和个性化处理。以下是你需要重点关注的信息类型以及处理输入数据的详细说明。

我们分析一下这个提示词,关键点有这么几个。

1.明确角色定义:

2.个人信息整理助手

3.专注于提取和组织事实信息,用于轻松检索和个性化交互

4.明确7大信息类型:个人偏好、重要个人信息、计划和意图、活动和服务偏好、健康和身心偏好、职业详情、其他杂项

5.提供Few-Shot示例

6.事实提取原则:原子化、具体化、时间敏感、关系保留

7.输出格式要求:JSON格式,处理多语言,空结果处理

可以看到我们又在回顾前面学过的提示词技术了,这里就是通过组合手段来写好提示词,这样可以让大模型按照要求去处理和输出。

再来看一个记忆操作类型判断的提示词:

You are a smart memory manager which controls the memory of a system.

翻译成中文是

你是一个智能内存管理器,负责控制系统的内存。

通过这种方式可以保证记忆不会冗余性增长,可以有效的管理事实记忆

4.3 实践

了解一个技术实现最有效的方法依然还是原理(看Paper、文章)+看代码实现(一方或三方实现)+动手实践(get your hands dirty)。我们会用剪短的例子来感受一下记忆系统的运用,我们不会从0开始实现,不会去重复造轮子,我们会直接利用现有的解决方案去实现一个Demo,作为教学目的,完全够用了。如果需要针对特殊的业务场景针对性设计的话,可以结合前面的理论知识,基于某个成熟的开源方案做二开。

完整的代码在这里[30],我们先来看看代码结构,代码量特别少,296行的Python代码,只不过我拆分到多个独立文件里组织,看起来会更加清晰一点。

首先看app/app.py,入口在这里:

from langgraph.checkpoint.postgres import PostgresSaver

调用app/config.py进行配置加载:

import os

然后会连接数据库,这边我们使用pgvector用作向量数据库

from typing importList

建立连接后会初始化表,这里面也包含了FactStore,用户后面保存和读取记忆用,可以看到基本上就是将内容做向量化,将对应的Embedding存到数据库,检索的时候就通过将问题向量化后到数据库里做相似度检索,检索出Top K条记忆,这边我们就检索相似度最高的3条。

里面涉及Embedding模型的使用:

from typing importOptional, Sequence

另外调用大模型的服务,我们直接基于litellm来实现,所有主流的大模型都可以轻松调用

from typing importDict, Any, List, Tuple

这里面的build_graph是利用了langgraph去编排workflow,这边比较简单,就一个关键节点。回到前面的app.py里,最后是利用langgraph的checkpoint开始运行,但是实际上我们这个例子过于简单,用不到checkpoint去恢复会话之类的功能。

最后是两份提示词,一份是系统提示词prompts/system.prompt

你叫ce101,是由 Leo 开发的一个拥有记忆能力的小助手。

另一份是事实提取的提示词prompts/fact_extraction.prompt

你是一个中文信息抽取器(InformationExtractor)。

这样我们就拥有了一个带有持久化记忆系统的对话Agent了,我们运行下看看效果:

可以看到一开始AI不知道我是谁,因为还没有任何对话可以产生记忆

当我跟他说我叫Leo之后,通过请求大模型产生了一个事实:用户的名字是Leo,在此之后我又进行了一些对话,然后我重新开了一个新的会话:

新开的会话提问后,Agent会先到向量数据库里搜索,可以看到,虽然我们设置了Top 3的记忆,但是实际上检索到了2条,此时大模型基于这个信息就知道我是谁了

当我继续说没啥新的书好看的,他进一步检索出了用户的兴趣爱好是看书的记忆。

这个简单的Demo简单的展示了记忆系统和持久化是如何运作的,当然这只是一个玩具,要做出生产环境可用甚至是有商业价值的系统还需要一些时间精力,但是其实在知道了原理之后其实并不难。有兴趣的可以自己玩一下,甚至可以结合前面提到的这些开源项目或者其他AI Agent的开源项目去学习和实践。

4.4 总结

最后我想引用一段姚顺雨在张小珺的访谈[31]里说的:

李广密:更关键的是,大模型技术没有垄断性。硅谷头3-4家好像都能追到一定的水平。如果OpenAI有垄断性,那是比较可怕的。

**姚顺雨:**我觉得暂时没有垄断性。但如果你能找到一个产品形态,把研究优势转换成商业优势,就会产生壁垒。

现在对于ChatGPT比较重要的是Memory(记忆)。

这是可能产生壁垒的地方。如果没有Memory,大家拼谁的模型更强。但有了Memory,拼的不仅是谁的模型更强,而是用户用哪个更多、哪个粘性更强。

我积累了更多Context,它能给我更好体验,我就会有粘性——这或许是研究优势转化成商业优势的方式。

记忆系统是一个非常重要的部分,就拿ChatGPT的例子来说,ChatGPT有先发优势,在其他竞争对手赶上之前,已经积累了大量的用户。现在其实对于很多人来说,不同家的ChatBot的效果其实大差不差,让用户持续使用的ChatGPT的原因其中一个就是记忆系统,就拿我自己而言,因为长期使用,所以拥有大量的历史聊天记录,导致ChatGPT可以在某些情况下知道我想要什么,这提升了效果(让用户从体感上觉得其效果更好)也增强了用户粘性。但是其实我在很多时候发现了错误召回的情况,过度召回,这也是记忆系统目前存在的问题之一。

还有一段是关于方法、评估和任务的看法:

李广密:Long Context跟Long-Term Memory是什么样的关系?

**姚顺雨:**Long Context是实现Long-Term Memory的一种方式。

如果你能实现1亿或1千亿或无限长的Context,它是实现Long-Term Memory的一种方式。它是一种和人区别很大的方式,但这是有可能的。当然会有很多不同方式,不好说哪种是最好,或者最合适。

李广密:现在业界实现Long Context有Linear(线性)方式、Sparse(稀疏)方式,或者 Hybrid(混合)方式,你有倾向吗?

**姚顺雨:**我不想对方法进行评论,但我想对evaluation(评估)和task(任务)进行评论。

起码到去年为止,大家主要还在做所谓Long Range Arena(长距离评估基准),比如hay in the stack——我有一个很长的输入,我在中间插入一句话,比如 “姚顺雨现在在OpenAI”,然后我问你相关问题。

这是一个必要但不充分的任务。你能完成这个任务,是Not Memory Work(非长期记忆任务)中的前置条件,但远不是充分条件。它是必要条件,但现在大家有点陷在这个必要条件,没有创造更难或更有价值的任务,这是个问题。

当没有一个很好的评估方式,很难真正讨论各种方法的好坏。

我想表达的是,前面我们学习了这些理论知识和一些实践,但是这只是代表了技术在这一刻的样子,虽然神经网络已经很多年了,但是以大模型为主的AI是一个年轻的学科,配套的应用也出现不久,所以这些技术都会随着时间的流逝和技术的进步而改变。就好像他提到的,这些基准测试其实只是满足了必要条件,而不是充分条件。很多时候包括底座大模型在刷榜(基准测试)中都可以不断提升分数,但是在实际生产环境中的效果却止步不前,这就是理想和现实最大的Gap。人类现实社会存在很多难以解决的问题的原因在于,很多问题、很多场景是没办法进行量化或规则提取的,因此很难出现针对一个问题去设计一个通用的基准测试,所以为什么做一个玩具几天就可以了,但是打磨出一个真的有商业价值的产品需要花费几个月、几年的时间来完成,这也是我们在探索前沿科技和应用的过程中需要不断去思考的一个点。

因此始终记住这本书有别于传统的技术书籍:这本书是起点,不是终点它应是指导你去探索未知边界的基础,而不是让你止步不前的知识

想入门 AI 大模型却找不到清晰方向?备考大厂 AI 岗还在四处搜集零散资料?别再浪费时间啦!2025 年 AI 大模型全套学习资料已整理完毕,从学习路线到面试真题,从工具教程到行业报告,一站式覆盖你的所有需求,现在全部免费分享

👇👇扫码免费领取全部内容👇👇

一、学习必备:100+本大模型电子书+26 份行业报告 + 600+ 套技术PPT,帮你看透 AI 趋势

想了解大模型的行业动态、商业落地案例?大模型电子书?这份资料帮你站在 “行业高度” 学 AI

1. 100+本大模型方向电子书

在这里插入图片描述

2. 26 份行业研究报告:覆盖多领域实践与趋势

报告包含阿里、DeepSeek 等权威机构发布的核心内容,涵盖:

  • 职业趋势:《AI + 职业趋势报告》《中国 AI 人才粮仓模型解析》;
  • 商业落地:《生成式 AI 商业落地白皮书》《AI Agent 应用落地技术白皮书》;
  • 领域细分:《AGI 在金融领域的应用报告》《AI GC 实践案例集》;
  • 行业监测:《2024 年中国大模型季度监测报告》《2025 年中国技术市场发展趋势》。

3. 600+套技术大会 PPT:听行业大咖讲实战

PPT 整理自 2024-2025 年热门技术大会,包含百度、腾讯、字节等企业的一线实践:

在这里插入图片描述

  • 安全方向:《端侧大模型的安全建设》《大模型驱动安全升级(腾讯代码安全实践)》;
  • 产品与创新:《大模型产品如何创新与创收》《AI 时代的新范式:构建 AI 产品》;
  • 多模态与 Agent:《Step-Video 开源模型(视频生成进展)》《Agentic RAG 的现在与未来》;
  • 工程落地:《从原型到生产:AgentOps 加速字节 AI 应用落地》《智能代码助手 CodeFuse 的架构设计》。

二、求职必看:大厂 AI 岗面试 “弹药库”,300 + 真题 + 107 道面经直接抱走

想冲字节、腾讯、阿里、蔚来等大厂 AI 岗?这份面试资料帮你提前 “押题”,拒绝临场慌!

1. 107 道大厂面经:覆盖 Prompt、RAG、大模型应用工程师等热门岗位

面经整理自 2021-2025 年真实面试场景,包含 TPlink、字节、腾讯、蔚来、虾皮、中兴、科大讯飞、京东等企业的高频考题,每道题都附带思路解析

2. 102 道 AI 大模型真题:直击大模型核心考点

针对大模型专属考题,从概念到实践全面覆盖,帮你理清底层逻辑:

3. 97 道 LLMs 真题:聚焦大型语言模型高频问题

专门拆解 LLMs 的核心痛点与解决方案,比如让很多人头疼的 “复读机问题”:


三、路线必明: AI 大模型学习路线图,1 张图理清核心内容

刚接触 AI 大模型,不知道该从哪学起?这份「AI大模型 学习路线图」直接帮你划重点,不用再盲目摸索!

在这里插入图片描述

路线图涵盖 5 大核心板块,从基础到进阶层层递进:一步步带你从入门到进阶,从理论到实战。

img

L1阶段:启航篇丨极速破界AI新时代

L1阶段:了解大模型的基础知识,以及大模型在各个行业的应用和分析,学习理解大模型的核心原理、关键技术以及大模型应用场景。

img

L2阶段:攻坚篇丨RAG开发实战工坊

L2阶段:AI大模型RAG应用开发工程,主要学习RAG检索增强生成:包括Naive RAG、Advanced-RAG以及RAG性能评估,还有GraphRAG在内的多个RAG热门项目的分析。

img

L3阶段:跃迁篇丨Agent智能体架构设计

L3阶段:大模型Agent应用架构进阶实现,主要学习LangChain、 LIamaIndex框架,也会学习到AutoGPT、 MetaGPT等多Agent系统,打造Agent智能体。

img

L4阶段:精进篇丨模型微调与私有化部署

L4阶段:大模型的微调和私有化部署,更加深入的探讨Transformer架构,学习大模型的微调技术,利用DeepSpeed、Lamam Factory等工具快速进行模型微调,并通过Ollama、vLLM等推理部署框架,实现模型的快速部署。

img

L5阶段:专题集丨特训篇 【录播课】

img
四、资料领取:全套内容免费抱走,学 AI 不用再找第二份

不管你是 0 基础想入门 AI 大模型,还是有基础想冲刺大厂、了解行业趋势,这份资料都能满足你!
现在只需按照提示操作,就能免费领取:

👇👇扫码免费领取全部内容👇👇

2025 年想抓住 AI 大模型的风口?别犹豫,这份免费资料就是你的 “起跑线”!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值