最近的一项基准测试显示,一种双层内存设计——基于 RAM 的暂存区(scratchpad)加上本地 SQLite-vec 存储库——在实现低于 100 毫秒的中位查询时间的同时,还消除了与某流行云端向量存储相关的每月 135 美元的账单。构建自主 AI 智能体的开发者可以运行纯本地部署的方案,在基准测试中,该方案速度更快且无需支付月费。
为什么现有的内存方法力不从心
AI 智能体通常需要在紧凑的响应窗口内回忆起数千次过去的交互、事实或工具调用结果。大多数团队将每个嵌入(embedding)都推送到托管向量数据库中,并依赖远程向量搜索进行每次查询。这种模式虽然可以扩展,但它迫使每次查询都必须经过网络,从而增加了往返时间(round-trip time)和每月支出。在基准测试中,云服务的查询中位延迟为 127 毫秒,当月账单超过 135 美元;测试期间还记录到一次停机。
将内存分为两个层级
双层架构将“工作记忆”与“长期存储”分离:
L1 暂存区 (RAM)
- 完全驻留在进程内存中。
- 保存当前任务上下文和最近的工具调用。
- 存储原始字符串;不生成嵌入。
- 返回结果时间低于 3 毫秒,可与 CPU 缓存相媲美。
L2 存储库 (SQLite-vec)
- 将所有其他嵌入持久化存储在扩展了向量搜索功能的本地 SQLite 数据库中。
- 处理基准测试中使用的全部 14,726 条记忆。
- 返回匹配结果的时间约为 94 毫秒,轻松低于许多实时智能体 100 毫秒的目标。
- 除了宿主机的存储成本外,几乎零成本。
SQLite-vec 是一个开源扩展,为标准的关系型文件增加了近似最近邻(ANN)搜索功能。由于数据库与智能体位于同一台机器上,因此不存在网络跳转,且引擎通过复用现有的 SQLite 索引技巧来保持查询的高速。
关键数据
| 系统 | 中位延迟 | 每月成本 | 报告的可靠性 |
|---|---|---|---|
| 云端向量存储 (Pinecone) | 127 ms | ~$135 | 观察到停机 |
| 本地 SQLite-vec 存储库 | 94 ms | $0 | 100% 正常运行 |
成本差异为每月 0 美元对比约 135 美元。
保持存储库整洁
简单地倾倒所有嵌入可能会稀释相关性。基准测试的作者引入了一种衰减系统,根据时效性和频率对记忆进行评分:
- 新的或频繁访问的项目获得更高的权重。
- 一段时间未被触及的项目权重会逐渐降低。
- 加权衰减将“检索噪声”(即不相关的匹配)减少了 34%。
通过修剪低分条目或在索引中降低其优先级,智能体可以避免使用陈旧数据,同时保持存储库足够精简,以确保性能的一致性。
总结
对于必须在紧迫期限内处理数千条记忆的 AI 智能体来说,将“RAM 优先”的暂存区与本地 SQLite-vec 存储库相结合,是替代全云端向量存储的一种务实方案。这种方法缩短了响应时间,消除了持续的云端费用,并提供了不间断的服务,同时保留了修剪无关数据的能力。因此,采用这种双层模型可以使智能体运行得更快、更便宜、更可靠。
