前言

你有没有这样的体验:和AI助手聊了半小时,它帮你规划好了下周的旅行。第二天你问“昨天说的那家餐厅在哪”,它却一脸茫然:“什么餐厅?我们聊过吗?”

这不是AI装傻,而是它的“金鱼脑”在作祟——会话一结束,什么都忘了

记忆能力,正是把LLM从简单问答工具变成真正协作伙伴的关键。过去一年,Agent记忆技术经历了从“对话管理”到“独立系统资源”的跃迁。曾经RAG是唯一解,如今一批新范式正在颠覆这个领域。

01 记忆为什么如此重要

从“对话管理”到“记忆系统”

很多人会把Agent的记忆简单理解为“维护上下文”,觉得和chatbot的对话管理差不多。但两者区别巨大:

  • 服务对象不同:chatbot围绕人的需求展开对话;Agent的主要任务是自动完成复杂任务
  • 组织形式不同:chatbot是问答形式{[q0,a0],[q1,a1]...};Agent记忆是动作和结果的时序集合{a0,o0,a1,o1...}
  • 维护重点不同:chatbot需要处理频繁的意图切换;Agent的每一步都是按迭代规划进行的,缺失某个步骤就可能导致任务失败

没有记忆的Agent有多“惨”?某电商客服Agent实测显示:

  • 单纯扩大上下文窗口(从32K到320K tokens),任务完成率仅提升12%
  • 引入语义检索后,任务完成率提升47%
  • 组合使用RAG+向量数据库时,用户满意度提升63%

这说明单纯扩大上下文窗口无法解决根本问题,必须建立语义层面的记忆关联。

记忆的三个层次

人类记忆不是单一的。你能记住几分钟前说的话(短期记忆),也能回忆起去年夏天的旅行(长期记忆),还能总结出“每次去海边都要涂防晒霜”的经验(语义记忆)。

Agent的记忆也需要这样的分层。目前业界普遍采用三级记忆架构:

记忆层级 持续时间 存储内容 技术实现
短期记忆 当前会话当前会话 最近的对话历史、工具调用结果 上下文窗口 + 管理策略
长期记忆 跨会话 用户偏好、重要事实、模式规律 向量数据库 + 检索
核心记忆 永久 用户画像、持久信息 结构化存储(如SQLite)

02 短期记忆管理:让Agent不“失忆”

短期记忆通常指当前会话中的上下文。由于LLM的上下文窗口有限,当对话变长或任务步骤增多时,必须对短期记忆进行管理。

四大管理策略(附代码)

策略一:裁剪(Trimming)

把旧的历史信息直接剪掉。实现简单,但可能丢失关键信息。

def trim_context(history, max_tokens=4000):
"""保留最近k轮对话,直到token数小于max_tokens"""
import tiktoken
enc = tiktoken.get_encoding("cl100k_base")
def count_tokens(text):
return len(enc.encode(text))
current_tokens = sum(count_tokens(h) for h in history)
while current_tokens > max_tokens and len(history) > 1:
removed = history.pop(0)
current_tokens -= count_tokens(removed)
return history
# 使用示例
history = ["用户:你好", "助手:你好!有什么可以帮助?", "用户:北京天气", "助手:北京今天晴..."]
trimmed = trim_context(history, max_tokens=20)
print(trimmed)  # 可能会保留最后两条
策略二:压缩(Summarizing)

用LLM对历史对话进行摘要,保留关键信息。

def summarize_history(history, llm):
prompt = f"""
请将以下对话历史压缩成一个简洁的摘要,
保留所有对后续对话有用的关键信息(用户偏好、已确认的事实、未完成的任务):
{history}
摘要:
"""
summary = llm.complete(prompt)
return summary
# 使用示例(伪代码,需接入真实LLM)
# summary = summarize_history(history, openai_llm)
策略三:结构化笔记

把关键信息以结构化形式存入笔记,让Agent随时查阅。

class StructuredNotes:
def __init__(self):
self.notes = {
"user_preferences": {},
"active_tasks": [],
"important_facts": []
}
def update_notes(self, key, value):
if key in self.notes:
self.notes[key].append(value)
else:
self.notes[key] = value
def get_notes(self):
return self.notes
notes = StructuredNotes()
notes.update_notes("user_preferences", {"temperature_unit": "celsius"})
print(notes.get_notes())

在这里插入图片描述

策略四:子Agent架构

让子Agent维护自己的独立上下文,再将关键结果返回主Agent。

class SubAgent:
def __init__(self, specialty):
self.specialty = specialty
self.memory = []  # 独立的短期记忆
def execute(self, params):
self.memory.append(params)
# 执行具体任务
result = f"{self.specialty}任务完成,参数:{params}"
return result
class MainAgent:
def __init__(self):
self.sub_agents = {}
def delegate(self, task_type, params):
if task_type not in self.sub_agents:
self.sub_agents[task_type] = SubAgent(task_type)
return self.sub_agents[task_type].execute(params)
# 使用
main = MainAgent()
result = main.delegate("天气查询", {"city": "北京"})
print(result)

实际应用:这些策略通常组合使用。例如,可以用裁剪控制总长度,同时用结构化笔记记录关键信息,再辅以压缩定期总结。

03 长期记忆基础:向量数据库与RAG

长期记忆要让Agent能跨会话记住用户。这需要两个核心技术:

  1. 向量数据库:存储语义化的记忆
  2. RAG(检索增强生成):在生成回复前检索相关记忆

向量数据库入门

# 安装依赖:pip install chromadb sentence-transformers
import chromadb
from sentence_transformers import SentenceTransformer
import time
class LongTermMemory:
def __init__(self, collection_name="user_memories"):
self.client = chromadb.Client()
self.collection = self.client.create_collection(
name=collection_name,
embedding_function=self._get_embedding  # 注意:实际应传函数
)
self.model = SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2')
def _get_embedding(self, texts):
"""嵌入函数(用于Chroma)"""
return self.model.encode(texts).tolist()
def add_memory(self, text, user_id, metadata=None):
"""添加记忆,带用户ID元数据"""
embedding = self._get_embedding([text])[0]
self.collection.add(
embeddings=[embedding],
documents=[text],
metadatas=[{"user_id": user_id, "timestamp": time.time(), **(metadata or {})}],
ids=[f"mem_{time.time()}"]
)
def search_memory(self, query, user_id, n_results=5):
"""检索用户的相关记忆"""
results = self.collection.query(
query_texts=[query],
n_results=n_results,
where={"user_id": user_id}  # 只检索该用户的记忆
)
return results['documents'][0]
# 使用示例
ltm = LongTermMemory()
ltm.add_memory("用户喜欢喝冰美式", user_id="u123")
ltm.add_memory("用户上次问过北京天气", user_id="u123")
results = ltm.search_memory("咖啡", user_id="u123")
print(results)  # 可能返回["用户喜欢喝冰美式"]

RAG集成到Agent

def agent_with_rag(query, user_id, ltm, llm):
# 1. 检索相关记忆
memories = ltm.search_memory(query, user_id)
# 2. 构建增强提示
context = "\n".join(memories)
prompt = f"""
以下是关于用户的历史记忆:
{context}
用户当前问题:{query}
请结合记忆回答问题:
"""
# 3. 调用LLM
response = llm.complete(prompt)
# 4. 可选:将本次交互存入长期记忆
ltm.add_memory(f"用户问:{query},回答:{response}", user_id)
return response

04 超越RAG:记忆技术的新范式

4.1 RAG的局限:为什么需要新技术?

RAG解决了跨会话记忆的问题,但在生产级Agent中暴露出两大局限:

局限一:被动触发,缺乏主动性
RAG的检索完全依赖用户提问触发,信息存储无权重区分。随着记忆库规模扩大,无效召回率上升,回答准确率下降。更重要的是,它无法支撑长期协作场景下的经验沉淀与偏差校正。

局限二:动态检索破坏缓存,成本失控
RAG每次检索都会改变注入的上下文,导致无法利用LLM服务商的prompt缓存机制。对于生产级Agent,这意味着每次调用都要重新计算完整的上下文,成本曲线难以预测。

正是在这样的背景下,行业开始探索替代方案。从2025年底到2026年初,多个研究团队推出了不同路径的记忆新架构。

4.2 新技术路线概览

技术路线 核心思想 关键优势 代表成果
Observational Memory 压缩代替检索 成本低(缓存友好)、实现简单 LongMemEval 94.87%
Graph-based Memory 用图组织关系 支持复杂推理、时序关系 理论框架完善
Memora 抽象与具体平衡 统一RAG和KG、理论优雅 LoCoMo/LongMemEval SOTA
EverMemOS 生物启发 全面领先、主动演化 四大Benchmark SOTA
MemOCR 视觉优先 多模态支持、极端预算高效 极端预算下表现优异
DREAM 记忆即服务 可治理、可审计、可模拟 企业级参考实现

4.3 深度聚焦:三种代表性新技术

4.3.1 Observational Memory:用压缩代替检索

核心思想:与其每次动态检索,不如把历史压缩成结构化的“观测日志”,直接留在上下文里。通过两个后台Agent管理压缩,实现上下文窗口稳定,从而利用prompt缓存大幅降低成本。

简易实现示意

class ObservationMemory:
def __init__(self, max_obs_tokens=40000):
self.observations = []      # 压缩后的观测列表
self.raw_buffer = []         # 原始消息缓冲区
self.max_obs_tokens = max_obs_tokens
def add_raw_message(self, msg):
self.raw_buffer.append(msg)
if self._count_tokens(self.raw_buffer) > 30000:  # 阈值
self._compress()
def _compress(self):
# 调用LLM将raw_buffer压缩成一条观测
prompt = f"将以下对话压缩成一条简洁的观测:{self.raw_buffer}"
compressed = llm.complete(prompt)  # 伪代码
self.observations.append(compressed)
self.raw_buffer = []
# 如果观测太多,进行二次压缩
if self._count_tokens(self.observations) > self.max_obs_tokens:
self._reflect()
def _reflect(self):
# 重新组织和压缩观测
prompt = f"将以下观测列表合并压缩,去除冗余:{self.observations}"
new_obs = llm.complete(prompt)
self.observations = [new_obs]
def get_context(self):
# 返回当前完整的观测+原始缓冲区(作为上下文)
return "\n".join(self.observations + self.raw_buffer)
# 使用
obs_mem = ObservationMemory()
obs_mem.add_raw_message("用户:北京天气")
obs_mem.add_raw_message("助手:北京晴,5-15度")
# ... 更多消息
context = obs_mem.get_context()
# 然后将context作为prompt前缀传递给LLM,可以被缓存
4.3.2 Memora:调和抽象与具体

核心思想:解决“抽象与具体”的矛盾——既要保留细节,又要概括总结。Memora用“主抽象”索引具体记忆,用“线索锚点”扩展检索入口。

概念代码

class MemoraMemory:
def __init__(self):
self.abstractions = {}      # 主抽象 -> 具体记忆列表
self.cue_anchors = {}       # 线索 -> 相关抽象
def add_memory(self, text):
# 提取抽象(可用LLM)
abstraction = self._extract_abstraction(text)
if abstraction not in self.abstractions:
self.abstractions[abstraction] = []
self.abstractions[abstraction].append(text)
# 提取线索锚点
cues = self._extract_cues(text)
for cue in cues:
if cue not in self.cue_anchors:
self.cue_anchors[cue] = set()
self.cue_anchors[cue].add(abstraction)
def retrieve(self, query):
# 从查询提取线索
cues = self._extract_cues(query)
abstractions = set()
for cue in cues:
abstractions.update(self.cue_anchors.get(cue, []))
# 从抽象获取具体记忆
results = []
for ab in abstractions:
results.extend(self.abstractions.get(ab, []))
return results
def _extract_abstraction(self, text):
# 简化:用LLM提取主题
return "用户偏好"  # 伪代码
def _extract_cues(self, text):
# 提取关键词
return ["咖啡", "天气"]  # 伪代码
4.3.3 EverMemOS:生物启发的记忆OS

核心思想:模拟生物记忆形成过程,分为情景痕迹形成、语义巩固、重构回忆三阶段,实现主动演化。

效果数据(来自论文):

  • LoCoMo:93.05%准确率,多跳推理领先19.7%
  • LongMemEval:83.00%准确率,知识更新任务领先20.6%

实现理念:EverMemOS是一个完整的操作系统级设计,包含记忆细胞、记忆场景等抽象。这里仅示意其分层架构:

class EverMemOS:
def __init__(self):
self.mem_cells = []          # 记忆细胞(原始痕迹)
self.mem_scenes = []         # 记忆场景(整合后)
self.user_profile = {}       # 用户画像
def perceive(self, observation):
# 形成记忆细胞
cell = self._create_cell(observation)
self.mem_cells.append(cell)
# 触发巩固(异步)
self._consolidate()
def recall(self, query):
# 重构回忆:组合相关细胞和场景
relevant = self._search(query)
return relevant
def _consolidate(self):
# 将相关的记忆细胞组织成场景,更新用户画像
pass

05 如何选择:场景与建议

场景 推荐技术 理由
工具密集型Agent、生产环境 Observational Memory 成本低、实现简单、缓存友好
需要复杂多跳推理 Graph-based Memory / Memora 图结构支持关系推理
追求极致性能、多领域通用 EverMemOS 全面领先的SOTA
多模态交互、界面操作 MemOCR 视觉优先,极端预算高效
企业级应用、合规要求高 DREAM 记忆即服务,可治理可审计

开发者建议:不要默认选RAG,先想清楚你的场景。可以先从简单的向量数据库+RAG开始,当遇到成本或准确率瓶颈时,再考虑迁移到新范式。

06 代码整合:一个带记忆的Agent示例

下面是一个整合了短期记忆(结构化笔记)和长期记忆(向量DB)的Agent示例,供参考:

import chromadb
from sentence_transformers import SentenceTransformer
import time
class MemoryAgent:
def __init__(self, user_id, llm):
self.user_id = user_id
self.llm = llm
# 短期记忆:结构化笔记
self.notes = {
"preferences": {},
"current_task": None,
"facts": []
}
# 长期记忆:向量数据库
self.ltm = self._init_ltm()
def _init_ltm(self):
client = chromadb.Client()
collection = client.create_collection(f"user_{self.user_id}")
self.embed_model = SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2')
return collection
def _add_to_ltm(self, text):
emb = self.embed_model.encode(text).tolist()
self.ltm.add(embeddings=[emb], documents=[text], ids=[f"mem_{time.time()}"])
def _search_ltm(self, query, n=3):
emb = self.embed_model.encode(query).tolist()
results = self.ltm.query(query_embeddings=[emb], n_results=n)
return results['documents'][0] if results['documents'] else []
def chat(self, user_input):
# 1. 检索长期记忆
memories = self._search_ltm(user_input)
# 2. 结合短期笔记构建上下文
notes_str = f"偏好:{self.notes['preferences']}\n当前任务:{self.notes['current_task']}\n事实:{self.notes['facts']}"
memory_str = "\n".join(memories)
prompt = f"""
关于你的记忆:
{memory_str}
当前会话笔记:
{notes_str}
用户:{user_input}
助手:
"""
# 3. 调用LLM
response = self.llm.complete(prompt)
# 4. 更新长期记忆(存储本次交互)
self._add_to_ltm(f"用户问:{user_input},回答:{response}")
# 5. 可选:更新笔记(用LLM提取偏好等)
# self._update_notes(user_input, response)
return response

最后

回顾过去半年的发展,一个清晰的趋势是:记忆正在从“模型附属”走向“独立系统资源”

短期来看,Observational Memory这样简洁高效的方案最适合快速落地;中期来看,Graph-based和Memora代表的“关系+语义”融合路线可能成为主流;长期来看,EverMemOS代表的“生物启发+主动演化”范式,可能是通往真正智能体的必经之路。

记忆技术的战火刚刚点燃。2026年,这个领域的创新只会更快。我们会持续关注,带来最新进展。

普通人如何抓住AI大模型的风口?

领取方式在文末

为什么要学习大模型?

目前AI大模型的技术岗位与能力培养随着人工智能技术的迅速发展和应用 , 大模型作为其中的重要组成部分 , 正逐渐成为推动人工智能发展的重要引擎 。大模型以其强大的数据处理和模式识别能力, 广泛应用于自然语言处理 、计算机视觉 、 智能推荐等领域 ,为各行各业带来了革命性的改变和机遇 。

目前,开源人工智能大模型已应用于医疗、政务、法律、汽车、娱乐、金融、互联网、教育、制造业、企业服务等多个场景,其中,应用于金融、企业服务、制造业和法律领域的大模型在本次调研中占比超过 30%。
在这里插入图片描述

随着AI大模型技术的迅速发展,相关岗位的需求也日益增加。大模型产业链催生了一批高薪新职业:
在这里插入图片描述

人工智能大潮已来,不加入就可能被淘汰。如果你是技术人,尤其是互联网从业者,现在就开始学习AI大模型技术,真的是给你的人生一个重要建议!

最后

只要你真心想学习AI大模型技术,这份精心整理的学习资料我愿意无偿分享给你,但是想学技术去乱搞的人别来找我!

在当前这个人工智能高速发展的时代,AI大模型正在深刻改变各行各业。我国对高水平AI人才的需求也日益增长,真正懂技术、能落地的人才依旧紧缺。我也希望通过这份资料,能够帮助更多有志于AI领域的朋友入门并深入学习。

真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发

【附赠一节免费的直播讲座,技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等,欢迎大家~】
在这里插入图片描述

大模型全套学习资料展示

自我们与MoPaaS魔泊云合作以来,我们不断打磨课程体系与技术内容,在细节上精益求精,同时在技术层面也新增了许多前沿且实用的内容,力求为大家带来更系统、更实战、更落地的大模型学习体验。

图片

希望这份系统、实用的大模型学习路径,能够帮助你从零入门,进阶到实战,真正掌握AI时代的核心技能!

01 教学内容

在这里插入图片描述

  • 从零到精通完整闭环:【基础理论 →RAG开发 → Agent设计 → 模型微调与私有化部署调→热门技术】5大模块,内容比传统教材更贴近企业实战!

  • 大量真实项目案例: 带你亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事‌!

02适学人群

应届毕业生‌: 无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。

零基础转型‌: 非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界‌。

业务赋能突破瓶颈: 传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型‌。

image.png

vx扫描下方二维码即可
【附赠一节免费的直播讲座,技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等,欢迎大家~】
在这里插入图片描述

本教程比较珍贵,仅限大家自行学习,不要传播!更严禁商用!

03 入门到进阶学习路线图

大模型学习路线图,整体分为5个大的阶段:
图片

04 视频和书籍PDF合集

图片

从0到掌握主流大模型技术视频教程(涵盖模型训练、微调、RAG、LangChain、Agent开发等实战方向)

图片

新手必备的大模型学习PDF书单来了!全是硬核知识,帮你少走弯路(不吹牛,真有用)
图片

05 行业报告+白皮书合集

收集70+报告与白皮书,了解行业最新动态!
图片

06 90+份面试题/经验

AI大模型岗位面试经验总结(谁学技术不是为了赚$呢,找个好的岗位很重要)图片
在这里插入图片描述

07 deepseek部署包+技巧大全

在这里插入图片描述

由于篇幅有限

只展示部分资料

并且还在持续更新中…

真诚无偿分享!!!
vx扫描下方二维码即可
加上后会一个个给大家发

【附赠一节免费的直播讲座,技术大佬带你学习大模型的相关知识、学习思路、就业前景以及怎么结合当前的工作发展方向等,欢迎大家~】
在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐