在关注智能体发展过程中,我发现很多基于大模型(LLM)的系统在实际使用时仍然存在“记不住用户”的问题,比如无法长期记忆用户偏好、行为习惯或历史交互内容,这与我们期望的“千人千面”智能体验还有一定差距。因此我开始关注智能体记忆架构是如何设计的,以及理论与工程之间如何落地。
我目前主要是在体验百度地图智能副驾、小度想想等智能体产品,同时也参考了一些关于大模型Agent架构的资料,包括Lilian Weng提出的智能体体系(LLM+感知+决策+记忆)等相关内容。
在尝试理解过程中,我了解过一些常见方案,比如通过Prompt拼接实现短期记忆、通过向量数据库实现长期记忆检索等,但对于完整的工程架构设计(例如API层、操作层、存储层如何协同、记忆写入与遗忘机制如何设计等)仍然缺乏系统认知。
因此我想进一步了解,从Lilian Weng的智能体理论出发,到百度地图在实际产品中的工程实践,是如何设计一套可扩展、可落地的智能体记忆架构,从而支撑真实用户场景下的个性化服务能力的。
智能体记忆架构如何设计?从Lilian Weng的智能体理论到百度地图的工程实践
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
5条回答 默认 最新
檀越@新空间 2026-04-17 16:49关注下午好🌅🌅🌅
本答案参考通义千问智能体记忆架构的设计是构建个性化、持续交互的AI系统的关键环节,尤其在像百度地图这样的实际产品中,需要兼顾长期记忆、短期记忆、上下文感知、遗忘机制、可扩展性等多个维度。从 Lilian Weng 的智能体理论(LLM + 感知 + 决策 + 记忆)出发,结合 百度地图等实际产品的工程实践,我们可以逐步拆解出一套完整的智能体记忆架构设计方法。
一、理解智能体记忆的核心概念
1.1 记忆类型分类
- 短期记忆(Short-term Memory):用于当前会话或任务中的上下文信息。
- 长期记忆(Long-term Memory):用于存储用户偏好、行为习惯、历史交互等持久数据。
- 工作记忆(Working Memory):用于推理和决策过程中的临时状态。
1.2 记忆的目标
- 个性化服务:根据用户历史行为提供定制化体验。
- 上下文感知:在多轮对话中保持一致性。
- 高效检索与更新:支持快速读取和写入。
二、Lilian Weng 的智能体理论框架
Lilian Weng 提出了一个基于大模型的智能体体系结构,其中“记忆模块”是核心组成部分之一。她的理论强调:
- 记忆模块应具备:
- 存储能力:记录用户行为、偏好、环境状态等。
- 检索能力:根据当前任务快速提取相关记忆。
- 更新机制:根据新信息动态更新记忆。
- 遗忘机制:避免记忆过载,提升效率。
三、百度地图的工程实践与智能体记忆架构设计
百度地图在智能副驾、小度想想等产品中,采用了一套分层、模块化、可扩展的记忆架构,以下是其典型设计思路:
3.1 架构分层结构
| 层级 | 功能描述 | |------|----------| | API层 | 提供对外接口,如用户身份识别、记忆查询、记忆更新等。 | | 操作层 | 负责处理业务逻辑,如用户行为分析、记忆匹配、决策建议等。 | | 存储层 | 存储用户长期记忆(如向量数据库、关系型数据库等)。 | | 记忆引擎 | 实现记忆的读取、写入、更新、遗忘等核心逻辑。 |
3.2 记忆写入与遗忘机制
-
写入机制:
- 用户行为日志(如搜索、点击、导航路径)被实时采集并编码为向量。
- 使用向量数据库(如 Faiss、Milvus)进行存储。
- 需要对用户身份进行绑定,确保记忆的用户隔离性。
-
遗忘机制:
- 基于时间衰减(Time Decay):旧记忆权重逐渐降低。
- 基于重要性评估(Importance Score):根据用户行为频率、场景重要性决定是否保留。
- 基于空间/时间范围限制(如只保留最近7天的导航记录)。
3.3 短期记忆与长期记忆协同
-
短期记忆:
- 使用 Prompt拼接 或 缓存机制,在单次会话中维持上下文。
- 如:在一次对话中,系统记住用户上一次提到的目的地,无需重复询问。
-
长期记忆:
- 通过 向量数据库 存储用户历史行为。
- 在后续对话中,通过相似度匹配检索相关记忆,实现个性化推荐。
四、完整智能体记忆架构设计方案(分步)
以下是一个从理论到工程落地的完整智能体记忆架构设计方案:
4.1 系统架构设计
-
API 层
- 提供 RESTful API 接口,用于外部调用记忆服务。
- 包括:
GET /memory,POST /memory,DELETE /memory等。 - 支持用户身份认证(如 Token、Session ID)。
-
操作层
- 实现记忆的逻辑处理,包括:
- 记忆匹配(根据当前上下文检索相关记忆)。
- 记忆更新(根据用户行为更新记忆库)。
- 记忆过滤(根据遗忘策略剔除不相关数据)。
- 实现记忆的逻辑处理,包括:
-
存储层
- 使用混合存储方式:
- 短期记忆:使用 Redis 缓存。
- 长期记忆:使用向量数据库(如 Milvus)+ 关系型数据库(如 MySQL)。
- 每条记忆包含:
- 用户 ID
- 时间戳
- 向量表示
- 权重值(用于遗忘机制)
- 使用混合存储方式:
-
记忆引擎
- 核心组件,负责:
- 记忆的读取、写入、更新、删除。
- 实现遗忘策略(如基于时间衰减或重要性评分)。
- 支持多模态数据(文本、图像、位置等)。
- 核心组件,负责:
4.2 记忆写入流程
- 用户行为触发:如用户输入搜索词、选择路线、点赞等。
- 行为编码:将行为转换为向量(可使用 BERT、Sentence-BERT、自定义模型)。
- 写入记忆库:将编码后的向量与用户 ID、时间戳一起存储。
- 更新权重:根据行为重要性调整该条记忆的权重。
示例代码(Python):
import numpy as np from milvus import connections, Collection # 连接 Milvus 数据库 connections.connect(host='localhost', port='19530') collection = Collection("user_memory") collection.load() # 示例:写入用户行为 user_id = "u123" behavior_vector = np.random.rand(768) # 假设是 BERT 向量 timestamp = int(time.time()) weight = 1.0 # 初始权重 # 插入到 Milvus collection.insert( data=[behavior_vector, [user_id], [timestamp], [weight]] )
4.3 记忆遗忘机制
-
时间衰减公式: $$ \text{weight} = \text{initial_weight} \times e^{-\lambda \cdot (t - t_0)} $$ 其中:
- $ t $ 是当前时间
- $ t_0 $ 是记忆创建时间
- $ \lambda $ 是衰减系数
-
重要性评分:
- 根据用户行为频率、场景优先级(如常去地点、高频搜索词)计算得分。
- 得分低的记录会被标记为“可遗忘”。
-
定期清理:
- 定时执行内存清理任务,移除权重低于阈值的记忆条目。
五、工程实践中的关键点
5.1 可扩展性
- 采用微服务架构,支持水平扩展。
- 使用分布式向量数据库(如 Milvus、Pinecone)处理大规模数据。
5.2 用户隐私与安全
- 所有用户数据需加密存储。
- 记忆访问需经过权限控制,防止数据泄露。
5.3 性能优化
- 使用缓存(如 Redis)加速短期记忆读取。
- 对长期记忆进行索引优化,提升检索效率。
六、总结
| 项目 | 内容 | |------|------| | 核心目标 | 实现个性化、持续交互的智能体验 | | 记忆类型 | 短期记忆 + 长期记忆 + 工作记忆 | | 架构分层 | API 层、操作层、存储层、记忆引擎 | | 关键机制 | 写入机制、遗忘机制、检索机制 | | 技术选型 | 向量数据库(Milvus)、Redis、BERT 等 | | 工程重点 | 可扩展性、安全性、性能优化 |
如果你希望进一步了解某一层的具体实现,比如 如何设计记忆引擎的遗忘算法 或 如何使用 Milvus 实现向量检索,我可以继续为你展开讲解。
解决 无用评论 打赏 举报