我如何在向量存储之上构建图数据库,以支持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智能体中使用仅具有逻辑隔离(元数据过滤器)的共享向量数据库可能会在无声无息中引发数据泄露,并提倡为每个用户提供物理隔离以确保零数据泄漏。
@tech_with_ram:你的 AI 技术栈有个数据库问题 你需要一个向量数据库来存嵌入。一个图数据库来处理关系。一个应用 …
HelixDB 是一款新的开源数据库,采用 Rust 构建,将向量、图和其他数据模型结合到单一引擎中,由 Y Combinator 支持。它旨在取代 AI 技术栈中独立的向量、图和应用数据库,提供原生向量搜索、图遍历和 MCP 支持。
大家是如何处理 AI 智能体的长期记忆 + 回放/调试问题的?
一位开发者探讨了当前 AI 智能体记忆系统的局限性,并提出了一款具有片段存储和回放调试功能的新记忆层工具,希望获得社区的验证。
"在什么情况下添加另一个代理实际上会损害您的系统?问这个是因为我的6代理流水线比旧的2代理流水线更慢且更不可靠"
一位开发者分享了使用AI编排框架(LangGraph, CrewAI, AutoGen)的真实体验,指出了原型设计便捷性与生产可靠性之间的权衡,并向社区询问如何处理失败、人机协同和Token成本问题。