我如何在向量存储之上构建图数据库,以支持1000个代理运行2个月,因为仅凭向量搜索在用户偏好随时间变化时会失效。
摘要
一份详细的架构指南,介绍如何构建长期运行的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逻辑推理偏好或基础设施在*何时*发生了变化。
相似文章
为什么向量RAG在大规模AI编程代理中失败(以及我如何使用Neo4j图来解决它)
一款名为Writ的新开源工具采用混合检索流程,结合BM25、本地ONNX向量和Neo4j图遍历,为AI编程代理提供上下文规则,将令牌膨胀减少726倍,并通过bash钩子强制计划审批。
我为AI编码代理构建了一个开源持久记忆层
一个为AI编码代理设计的开源持久记忆层,使用Postgres和pgvector存储和检索项目决策与上下文,旨在减少上下文窗口大小并提高代理的一致性。
我们给 AI 智能体配备了工具和向量存储。那网络呢?
本文讨论了为 AI 智能体添加网络层的概念,即在现有工具和向量存储的基础上,实现智能体之间更好的协调和通信。
我不再与AI记忆问题对抗,而是开始对其建模
作者详细讲述了从平面向量存储转向图数据库(FalkorDB)以构建AI记忆的过程,在其LocalClaw项目中实现了多跳推理、时间查询和溯源追踪。
如何让代理运行数小时,以及哪些架构真正对代理友好?#深度探讨 #氛围程序员问题
作者探讨了AI编码代理的两个关键挑战:确保长时间自主执行(数小时)以及为本地应用设计对代理友好的架构。他们提出在规划和执行之前,增加一个显式的知识组织阶段来管理混乱的上下文。