详解为何标准向量 RAG 在真实工程中失效,并给出基于时间感知分桶+磁盘索引的 Memory Engine 架构方案,附完整 Go 实现。
过去一年间,随着开发者工作流向 Claude Code、Cursor 以及自定义 Agent 集群等自主编码 Agent 迁移,一个显而易见的技术短板变得无法回避:
AI Agent 患有全面失忆症。
每次会话结束或子 Agent 被唤醒时,模型的运行上下文就被清空。当第二天让 Agent 实现一个新功能时,它完全不记得:
为此,大多数团队默认采用标准"RAG 记忆"方案:
虽然这套演示在 3 页 PPT 上看起来很漂亮,但在真实软件工程场景中完全失效。
考虑这个真实场景:
当用"我们用什么数据库做认证?"查询时,这两句话的语义嵌入几乎相同。标准最近邻向量搜索会返回两个事实,且相似度得分几乎相等。LLM 产生困惑,将两者合并,或者虚构出一个错误的混合配置。
密集向量相似度本质上是概率性的。它在以下场景中表现不佳:
由于向量搜索缺乏精确性,开发者通过增加 top_k 候选数量或向提示中塞入庞大的 3000 行 .cursorrules 文件来弥补。
如果你的 Agent 每天执行 100 次查询,每轮都倾倒 6000 token 的原始历史记录,每天就浪费 600,000 token——每月在 LLM 账单上多花数百美元,却没有真正解决失忆问题。
为了从根本上解决 Agent 记忆问题,我们设计了 Nexusyn(https://nexusyn.ai)。Nexusyn 不是简单地在嵌入模型外层包一层外壳,而是一个专为 Agent 长期记忆设计的数据平面。
以下是它的工作原理架构解析。
┌─────────────────────────┐
│ AI Agent / IDE │
│ (Claude Code, Cursor, …)│
└────────────┬────────────┘
HTTP │ MCP (/v1/mcp)
▼
┌────────────────────────────────────────────────────────────────────────┐
│ NEXUSYN ENGINE │
│ │
│ POST /v1/ingest POST /v1/query │
│ │ │ │
│ ▼ ▼ │
│ [ Deduplication ] [ Sub-query Gen ] │
│ │ │ │
│ [ Chunker ] [ Hybrid Retrieval ] │
│ │ ├── Vector (DiskANN) │
│ ▼ ├── BM25 Full-Text │
│ [ River Queue (Async) ] ├── Entity Graph │
│ ├── Batch Embeddings └── Date Anchor Boost │
│ ├── Entity & Relation Extraction │ │
│ └── Wiki / Profile Compilation ▼ │
│ [ Reranker (Cross-Enc) ]│
│ │ │
│ ▼ │
│ [ Grounded Synthesizer ]│
└────────────────────────────────────────────────────────────────────────┘
我们选用了 Go 1.24 和 PostgreSQL 18(配合 pgvectorscale)。
传统 HNSW(Hierarchical Navigable Small World)向量索引消耗大量内存,因为整个图必须驻留在内存中。相比之下,DiskANN 将压缩后的向量表示存储在内存中,而将主图索引保留在 SSD/NVMe 上。
当 Agent 查询 Nexusyn 时,引擎在单个只读事务中执行混合搜索:
Nexusyn 中的每条记忆记录都携带两条独立的时间轴:
当 Agent 记录了一条与之前事实相矛盾或更新了之前事实的新决策时,引擎会将之前事实的 valid_to 标记为 now()。历史审计追踪保持完整,但活动查询永远不会将过时状态召回为当前事实。
记忆不是扁平的文本,而是由实体、决策和约束相互连接的网络。由 Go 的 River 队列(基于 Postgres)驱动的异步后台队列将命名实体和关系提取到双时间知识图谱中。
通过 get_related 工具,Agent 可以遍历多跳连接(例如将 API 速率限制追溯到强制执行它的安全审查)。
Nexusyn 没有强迫开发者编写定制的 SDK 封装,而是通过 Streamable HTTP(/v1/mcp)实现了官方的 Model Context Protocol(MCP)规范。
它向任何符合 MCP 协议的客户端直接暴露 7 个原生工具:
add_memory:保存事实、决策、偏好和经验教训。search_memory:执行混合检索并返回带引用来源的可靠答案。get_guideline:确定性检索组织标准。get_related:在知识图谱上探索 1-2 跳的关联关系。graph_overview:结构拓扑、中心节点和概念连接器。update_memory:原地记忆修正。delete_memory:双时间软删除。claude mcp add nexusyn --transport http \
"https://api.nexusyn.ai/v1/mcp" \
--header "Authorization: Bearer <YOUR_API_KEY>"
或通过 Smithery CLI:
npx -y @smithery/cli install @nexusyn/nexusyn --client claude
在 Cursor 中(.cursor/mcp.json):
{
"mcpServers": {
"nexusyn": {
"url": "https://api.nexusyn.ai/v1/mcp",
"headers": {
"Authorization": "Bearer <YOUR_API_KEY>"
}
}
}
}
为了验证该架构确实产生了实际效果,我们在公开的 LongMemEval-S 基准测试(350 个严格的多会话回忆和时间更新任务)以及 LoCoMo(1,986 个多轮推理问题)上对 Nexusyn 进行了评估:
赋予 AI Agent 长期记忆不是一种提示工程技巧——它需要专门的数据平面基础设施,能够理解时间、实体和混合检索。
你可以探索开源引擎、部署自托管版本,或使用托管云实例: