首页 › AI Agent实战项目案例库 › 智能客服实战项目 › Agent项目:智谱智能问答系统 › 基于智谱Agent智能问答系统的“记忆机制”

基于智谱Agent智能问答系统的“记忆机制”

​

📌

“记忆机制”是其能否在复杂、长期的企业任务中表现出色的核心​

​

​

飞书文档 - 图片

​

​

解决大模型“金鱼记忆”(上下文窗口有限)和“无状态”(每次对话独立)痛点。​

​

​

CoCo的记忆机制可以看作一个分层、结构化、可动态更新和调用的智能记忆体系。​

​

记忆的组成:三种核心记忆类型​

a. 短期记忆​

•

对应概念: 等同于大模型的上下文窗口。​

•

功能: 存储当前对话轮次中的信息,包括用户的当前查询、CoCo的思考过程、执行工具的结果等。​

​

📌

•

特点:​

◦

容量有限: 受限于模型的最大上下文长度(例如,128K tokens)。​

◦

高度相关: 包含了处理当前任务最直接需要的所有信息。​

◦

易失性: 当对话超过上下文窗口时,最早的信息会被“遗忘”(挤出窗口)。​

​

​

技术实现与工作机制​

上下文窗口:​

这是短期记忆的物理载体。​

​

​

​

例如,一个拥有128K上下文窗口的模型,可以一次性处理长达12.8万个英文字符(约6万汉字)的文本。所有在这个窗口内的信息,模型都可以“看到”并利用。​

50%

​

​

​

飞书文档 - 图片

​

50%

​

​

​

​

注意力机制:​

短期记忆的有效性依赖于Transformer架构的核心——注意力机制。​

​

该机制允许模型在处理当前词句时,动态地关注上下文窗口中所有相关的历史信息,无论其位置远近,从而实现对长距离依赖关系的理解。​

​

​

内容填充:​

短期记忆的内容由每次交互的输入动态构成。​

​

​

📌

通常遵循以下结构:​

​

系统指令:定义Agent的角色、能力和行为准则。​

对话历史:当前会话中所有交替出现的用户查询和Agent回复。​

工具返回结果:当Agent调用外部API或数据库时,返回的数据会被插入到上下文中。​

当前查询:用户最新提出的问题或指令。​

​

​

​

b. 长期记忆​

这是CoCo记忆机制中最具价值的部分,它像一个不断成长的企业专属知识库。​

•

功能: 存储在多次对话和任务中积累的有价值的信息,供未来检索和使用。​

​

📌

•

存储内容:​

◦

用户偏好: 例如,某位分析师喜欢用图表来呈现数据,某位经理需要报告用英文撰写。​

◦

对话历史摘要: 将重要的长对话总结成简洁的核心要点,存入长期记忆。​

◦

任务结果: 例如,上次生成的某个销售数据分析报告的关键结论。​

◦

实体信息: 在与用户交互中提取出的关键实体及其关系,如“客户A的联系人是李经理,他偏好每周五开会”。​

​

​

•

实现方式: 通常使用向量数据库 来存储这些记忆的嵌入向量,从而实现基于语义相似度的快速检索。​

​

技术实现与工作机制​

长期记忆的实现不依赖于模型的上下文窗口,而是通过外部系统构建。​

​

存储​

存储什么:并非所有短期记忆中的信息都值得长期保存。通常由特定策略决定,例如:​

​

📌

用户指令:如“请记住我的生日是X月X日”。​

Agent自动摘要:Agent在会话结束时,自动生成本次会话的摘要(例如,“用户计划了去巴黎的旅行,对印象派艺术感兴趣”),并将摘要存入长期记忆。​

​

​

📌

关键事实提取:从对话中提取出实体(人名、地点)和关系。​

如何存储:信息通常被存储在向量数据库或其他类型的数据库中。现代Agent系统普遍采用向量化存储:将文本信息通过嵌入模型转换为高维向量(一组数字),这个向量捕捉了文本的语义含义。​

​

​

检索​

当新的会话开始时,Agent不会加载整个长期记忆库(那样会瞬间爆满短期记忆)。​

​

相反,它会根据当前的用户查询和短期记忆的上下文,去长期记忆库中寻找最相关的信息。​

​

​

​

📌

这个过程通过向量相似性搜索实现:​

​

将当前查询也转换为向量,然后在向量数据库中计算其与所有存储向量的相似度(如余弦相似度),返回最相似的几条记忆。​

​

​

​

整合​

检索到的相关记忆片段会被动态地、有选择地插入到当前的短期记忆(上下文窗口)中。​

​

通常以“以下是关于用户的一些背景信息:…”的形式呈现。这样,Agent在生成回答时,就能同时利用当前对话的上下文和过去的相关知识。​

​

​

短期记忆与长期记忆的核心区别与协同效应​

核心区别对比表​

​

​

​

协同工作:一个完整的智能体交互循环​

一个高效的智能体依赖于两种记忆的无缝协作,其工作流程如下:​

触发:用户发起一个新查询。​

​

📌

检索长期记忆:​

​

系统将当前查询与短期记忆的上下文结合,作为“检索键”,在长期记忆库中进行向量相似性搜索,找出相关记忆。​

​

构建增强的短期记忆:​

​

将检索到的长期记忆片段与当前的对话历史、系统指令等组合,形成一个增强的上下文窗口。​

​

推理与执行:​

​

LLM基于这个增强的上下文进行推理,可能需要调用工具,工具的结果也会被加入短期记忆。​

​

​

​

响应生成:LLM生成最终回答,返回给用户。​

更新长期记忆(可选):在会话的关键节点或结束时,系统根据预定策略(如用户反馈、自动摘要)决定是否将本次交互中的重要信息提炼并存入长期记忆。​

​

示例:​

​

📌

用户问:“推荐一本我可能会喜欢的书。”​

​

长期记忆检索:系统检索到过去记忆中“用户曾多次询问存在主义哲学书籍”和“用户讨厌言情小说”的信息。​

短期记忆构建:将这些信息与当前问题组合成提示:“用户问:‘推荐一本我可能会喜欢的书。’已知背景:用户喜欢存在主义哲学,讨厌言情小说。”​

推理与响应:LLM基于此上下文,推荐了加缪的《局外人》,而不是一本爱情小说。​

​

​

c. 工作记忆​

工作记忆是CoCo记忆机制中最活跃、最动态的部分,它是CoCo在执行当前具体任务时的“大脑工作台”或“思考草稿纸”。​

​

组成:​

核心指令与当前查询:用户当前提出的问题或指令。这是触发整个过程的起点。​

​

从长期记忆中检索出的相关片段:​

•

过程: 系统将当前查询转换为向量,并在向量数据库中进行语义搜索,找出最相关的“记忆片段”。​

​

📌

•

内容: 这些片段可能是:​

◦

用户偏好: “该用户喜欢接收Markdown格式的总结。”​

◦

历史事实: “上周与用户确认过,项目‘北极星’的KPI是用户增长率。”​

◦

过往结论: “上月销售数据分析显示,华东地区销量下滑了15%。”​

◦

实体关系: “客户A的首席技术官是王博士。”​

​

​

​

📌

短期记忆中的近期对话上下文:​

•

当前对话轮次中已发生的信息,例如用户刚刚说“不对,我需要的是2023年的数据”,那么CoCo的下一步推理就需要包含这个修正指令。​

​

系统指令与工具定义:​

•

CoCo的角色设定(“你是一个数据分析助手”)。​

•

可供调用的工具列表及其使用说明(如Python解释器、SQL查询工具等)。​

​

​

CoCo自身的思考过程与工具执行结果:​

​

​

•

推理链: CoCo在解决问题时的内部推理步骤(例如:“要回答这个问题,我需要先查询数据库A,再用工具B进行可视化”)。​

​

•

工具调用结果: 执行代码、查询API等返回的具体数据(例如,从数据库查询得到的一张数据表。​

47%

​

​

​

​

53%

​

​

​

•

功能: 在执行一个具体任务时,从长期记忆中检索出的、与当前任务最相关的记忆片段,与短期记忆结合,共同构成当前的“思考空间”。​

​

•

特点:​

◦

动态组装: 对于每个新问题,CoCo会实时地从长期记忆中检索相关片段。​

◦

精准聚焦: 确保输入给大模型的上下文是高度相关且精简的,避免信息过载。​

​

场景: 一位市场总监想要一份“对比我们上个季度和‘启航’项目同期的主要社交媒体渠道表现报告”。​

​

触发与检索:​

◦

当前查询: “对比我们上个季度和‘启航’项目同期的主要社交媒体渠道表现报告。”​

◦

工作记忆组装:​

​

📌

•

从长期记忆中检索:​

◦

片段1: “ ‘启航’项目的时间范围是去年Q2(4月-6月)。”​

◦

片段2: “该用户定义的‘主要社交媒体渠道’包括:微博、微信视频号、小红书。”​

◦

片段3: “用户偏好报告包含‘互动率’和‘转化率’两个核心指标。”​

​

▪

从系统加载: CoCo作为数据分析Agent的角色指令和可用工具(Python, 数据库连接器)。​

​

推理与执行:​

◦

工作记忆内容(即输入给LLM的上下文)大致如下:​

​

•

【系统角色】你是一个数据分析助手...​

【长期记忆-用户偏好】用户需要报告包含互动率和转化率。​

【长期记忆-事实】“启航”项目期为去年Q4。​

【长期记忆-事实】“主要渠道”指微博、微信视频号、小红书。​

【当前查询】[用户的原话]​

【思考】用户需要对比本年度Q3和去年Q4的数据。我需要先从市场数据库查询这两个时间段、这三个渠道的互动率和转化率数据。​

◦

CoCo在工作记忆的支持下,生成SQL查询代码并执行。​

◦

查询结果(数据表)被添加到工作记忆中。​

​

​

生成与巩固:​

◦

CoCo基于得到的数据,在工作记忆的上下文内(包含了查询结果、用户偏好、历史事实)生成最终的报告。​

◦

任务结束后,系统可能会将“本次生成了Q3与‘启航’项目期社交媒体对比报告”这一事实摘要后存入长期记忆,以备后续查询。​

​

记忆的生命周期:如何运作?​

CoCo的记忆机制是一个动态循环的过程,可以用下图清晰地展示其工作流程:​

步骤解析:​

感知与编码:​

当用户与CoCo交互时,系统会实时分析对话内容,提取关键信息、实体和意图。​

原始信息摄入:​

​

​

​

飞书文档 - 图片

​

62%

​

​

​

•

输入源: 用户的自然语言查询、上传的文件、结构化数据、工具(如数据库、API)返回的执行结果。​

38%

​

​

​

理解与解析:​

​

▫️

•

CoCo运用大模型的能力对输入进行深度理解:​

​

​

价值评估与编码:​

◦

并非所有对话都需要记住。CoCo会根据预设规则和模型判断,评估信息的“记忆价值”:​

▪

高价值信息: 用户明确指令(“记住我的偏好”)、关键业务事实(项目决策、数据结论)、新建立的实体关系、用户反馈的问题解决方案。​

▪

低价值信息: 寒暄、一次性确认、过渡性语句。​

​

编码为记忆单元:​

◦

将高价值信息转化为结构化的“记忆片段”。​

◦

核心内容: 记忆片段的文本摘要。​

​

检索与组装:​

对于用户的新问题,CoCo会从长期记忆(向量数据库) 中检索语义上相关的记忆片段,并将其与当前的短期记忆(对话上下文) 组装成工作记忆。​

​

检索触发:​

◦

用户提出一个新的查询或指令。​

生成检索查询:​

◦

将当前查询(有时会结合短期记忆中的最近几句话)同样进行向量化,得到“查询向量”。​

向量相似度搜索:​

​

▫️

•

在长期记忆的向量数据库中,进行相似度计算(如余弦相似度)。​

•

找出与“查询向量”最相似的Top K个“记忆向量”所对应的记忆片段。​

•

优势: 这是语义搜索,即使关键字不匹配,只要意思相关就能被召回。例如,查询“我们之前说的那个市场推广项目”,即使没有提项目名,也能找到关于“北极星项目启动会”的记忆。​

​

结果重排与过滤:​

◦

对检索出的记忆片段进行二次加工,确保最相关:​

▪

时间加权: 近期记忆可能获得更高权重。​

▪

权限过滤: 在企业场景中,确保用户只能检索到自己有权访问的记忆。​

▪

去重: 合并内容高度相似的记忆片段。​

组装工作记忆:​

◦

将检索到的长期记忆片段、当前的用户查询、短期记忆中的对话上下文、系统指令和工具定义等,按特定模板拼接成一个完整的提示上下文。​

​

推理与执行:​

大模型基于组装好的工作记忆进行推理、规划,并调用相应的工具(如代码解释器、搜索引擎、内部API)来执行任务。​

​

规划与推理:​

◦

大模型基于工作记忆中的丰富上下文,进行逻辑推理和任务规划。​

◦

例如: “工作记忆中显示用户需要对比销售数据,并且包含了历史的数据查询方法。那么我第一步应该调用销售数据库API,第二步对结果进行可视化。”​

工具调用:​

◦

根据规划,CoCo会调用外部工具(函数)来执行具体任务。​

结果处理:​

◦

工具执行后返回的结果(如数据表格、图表、状态码)会被追加到工作记忆中。​

◦

此时,工作记忆得到了更新,包含了解决问题所需的最新信息。​

​

巩固与更新:​

任务执行完成后,系统会判断本次交互中是否有值得长期保留的信息。​

​

​

​

​

飞书文档 - 图片

​

64%

​

​

​

•

摘要生成: 将长对话总结成要点。​

​

•

关键提取: 提取新的用户偏好、任务成果等。​

​

•

向量化存储: 将这些新信息转换为向量,存入长期记忆中,完成记忆的更新。​

36%

​

​

​

在企业级场景中的应用​

CoCo的记忆机制使其从一个“一次性问答工具”进化成了一个“持续学习的智能同事”。​

​

实现连续、个性化的服务:​

◦

场景: 用户本周说:“帮我分析一下上季度的销售数据。” 下周又说:“把分析结果做成PPT,并用我们上周讨论的那个模板。” CoCo能记住“上季度的销售数据分析”和“上周讨论的模板”这些上下文,无需用户重复说明。​

积累和传承组织知识:​

◦

场景: 新员工询问某个项目的背景,CoCo可以根据与老员工的历史对话摘要,快速提供一份结构化的项目背景介绍,成为企业的“活知识库”。​

提升复杂任务处理能力:​

◦

场景: 一个复杂的市场调研报告可能需要分多天、多次交互来完成。CoCo能记住之前的进度、已分析的数据和已得出的结论,并在后续交互中无缝衔接,而不是每次都从头开始。降低沟通成本: 用户无需在每次对话中重复介绍背景信息和自己的偏好,交互效率大幅提升。​

​

典型场景​

场景一:销售与客户关系管理 - “永不掉线的智能销售助理”​

•

场景描述:​

销售总监张总正在准备与重要客户“环球科技”的续约谈判。他可以向CoCo询问客户情况、并要求准备谈判材料。​

​

•

工作记忆在行动:​

​

•

带来的企业价值:​

◦

缩短销售周期: 新销售接手客户时,能瞬间获得该客户的“前世今生”。​

◦

提升客户满意度: 每次交互都体现出了解和关怀,而非重复询问。​

◦

提高赢单率: 谈判策略基于历史数据,更具针对性。​

​

场景二:IT与技术支持 - “有经验的超级客服”​

•

场景描述:​

财务部小王报告:“系统导出的报表又出错了,和上周的问题一样。”​

​

•

工作记忆在行动:​

​

📌

查询: “小王报告报表导出错误。”​

◦

工作记忆组装:​

▪

检索: 从长期记忆中检索:​

•

“上周”为同一用户(或不同用户)处理类似问题的工单记录、解决方案(例如:“是数据库缓存未更新导致”)。​

•

小王所在“财务部”的常用报表清单及系统权限。​

▪

调用工具: 实时查询系统错误日志,寻找与“报表导出”相关的近期报错。​

◦

工作记忆内容: 包含了历史解决方案、当前用户背景和实时系统状态。​

◦

输出: CoCo不是从零开始分析,而是可以直接给出假设:“这很可能与上周的缓存问题有关。我已执行缓存刷新脚本,请小王再试一次。如果问题依旧,我将深入排查数据库连接。”​

​

​

•

带来的企业价值:​

◦

极大提升支持效率: 平均解决时间大幅下降。​

◦

知识沉淀与复用: 每个解决方案都通过工作记忆被验证和强化,并沉淀到长期记忆中,成为组织资产。​

◦

提升用户体验: 用户感觉系统“记住”了之前的问题,非常智能。​

​

场景三:运营与数据分析 - “会追问的分析师同事”​

•

场景描述:​

运营经理小李要求分析本季度用户活跃度下降的原因。​

​

•

工作记忆在行动:​

​

📌

查询1: “分析一下本季度DAU下降的原因。”​

◦

工作记忆组装: 检索历史分析报告、相关业务指标定义。调用数据分析工具执行查询。​

​

​

•

带来的企业价值:​

◦

深化数据分析洞察: 分析过程是连续和深入的,而非孤立的问答。​

◦

降低分析门槛: 业务人员可以通过自然语言进行复杂的数据探查。​

◦

自动生成数据叙事: 将分析过程自动转化为易于理解的报告。​

​

场景四:研发与项目管理 - “永不遗忘的项目管家”​

•

场景描述:​

一个跨职能团队在进行一个敏捷开发项目。新成员小赵加入,想了解某个功能模块的决策背景。​

​

•

工作记忆在行动:​

​

📌

查询: “为什么我们当初决定为‘用户画像’模块选择技术方案A而不是方案B?”​

◦

工作记忆组装:​

​

​

•

带来的企业价值:​

◦

加速新员工融入: 快速获取项目上下文,减少信息差。​