我如何在向量存储之上构建图数据库,以支持1000个代理运行2个月,因为仅凭向量搜索在用户偏好随时间变化时会失效。

Reddit r/AI_Agents 工具

摘要

一份详细的架构指南,介绍如何构建长期运行的AI代理,通过结合向量存储、图数据库和时间边缘(temporal edges)来处理随时间变化的用户偏好,而不是覆盖数据。

大多数代理记忆模式天然围绕短命的聊天会话设计。其重点很简单:跟踪活跃线程,保留基本用户画像,会话结束后重置上下文。但当你在生产环境中长时间运行AI代理时,架构需求完全改变。这些代理不会被重置。它们连续工作数周,在执行循环之间交接任务,并面临一个巨大的现实障碍:**事实随时间变化。** 如果用户今天使用Gmail,下个月改用Outlook,代理需要同时追踪两者。它必须知道当前使用的是哪个,切换发生的具体时间,并且不能表现得旧事实仍然有效。标准向量数据库的相似度评分无法理解时间衰减或事实覆盖。长期运行代理中的记忆不是单一数据库。它需要跨多种数据库类型并行运行的不同层次。在处理这个问题一段时间后,以下是我最终采用的7层架构: **1. Working Memory** 每轮活跃的暂存区。我在这里强制执行严格的执行边界,以便临时推理或过渡性令牌不会泄露到长期存储中。 **2. Conversation Memory** 即时线程历史,由动态摘要中间件管理,避免超出令牌上下文阈值。 **3. Episodic Memory** 过去运行的时间索引日志,尤其是失败记录。这使得代理具有自身执行历史的连续性,从而不会重复过去的错误。 **4. Semantic Memory** 缓慢变化的确定性事实。我将其分为一个人工可编辑的markdown文件(用于显式用户配置)和一个LLM提取的图谱。如果存在分歧,人工笔记明确优先。 **5. Knowledge Graph** 关系结构。语义记忆保存原始事实,而这一层映射实体之间的结构边。向量存储将数据视为孤岛;图谱则通过上下文将它们连接起来。 **6. Procedural Memory** 行为和执行机制,而非事实。这存储了代理在其自动化循环中复现的具体习惯、工具使用技能和工作流模式。 **7. Checkpoints** 状态快照。这决定了当pod崩溃时,是从头开始一个40分钟的多步骤任务,还是在第33分钟顺利恢复。 # 核心突破:时间边 最大的胜利是当偏好或环境变化时**停止删除或覆盖数据**。相反,语义和图谱层中的每个提取事实都需要一个`valid_at`和`invalid_at`时间戳。当今天的会话与昨天的状态矛盾时,管道会使旧边失效,而不是擦除它。这保留了干净、不可变的审计线索,并允许LLM逻辑推理偏好或基础设施在*何时*发生了变化。
查看原文

相似文章