AVM 多智能体基准测试:60 倍性能提升与记忆的真实价值
大约 5 分钟
今天我们运行了全面的基准测试,以衡量 AVM 对多智能体协作的影响。结果清楚地表明了持久记忆最能发挥价值的场景,以及我们在哪里实现了显著的性能优化。
TL;DR
多智能体准确率:
| 场景 | 基线 | AVM | 提升 |
|---|---|---|---|
| 上下文溢出 | 50% | 88% | +38% |
| 知识检索 | 47% | 67% | +20% |
| 完整协作 | 100% | 100% | — |
性能(优化后):
| 操作 | 优化前 | 优化后 | 加速比 |
|---|---|---|---|
| Recall | 4,300ms | 62ms | 70x |
| 写入 | 84ms | 4-8ms | 10-20x |
| 列目录 | 50ms | 0.6ms | 83x |
1. 多智能体基准测试设计
测试场景
我们在 5 个类别中创建了 48 个场景:
- 协作编程(10 个)— 多智能体软件开发
- 知识检索(15 个)— 跨智能体知识查询
- 信息同步(10 个)— 实时数据传播
- 实际案例(5 个)— 端到端工作流(交易、客服、DevOps)
- 上下文溢出(8 个)— 超出上下文限制的召回
测试方法
每个场景运行两次:
- 基线:智能体只能看到累积的对话上下文
- AVM:智能体可以从 AVM
recall并remember输出
我们使用 Claude Opus 执行智能体任务,4 线程并行以提高效率。
2. 结果:AVM 最能发挥价值的地方
上下文溢出:准确率 +38%
价值最高的场景。当智能体被「压缩」(丢失了详细上下文)时,AVM 能够召回特定细节。
场景:长对话召回
问题:"密码重置用什么邮箱?"
基线:"我没有关于邮箱地址的信息..."
AVM:"security@company.com" ✓(从 /decisions/security.md 召回)结果:4/8 → 7/8 正确(+38%)
知识检索:断言 +20%
跨智能体知识共享表现出明显改善:
场景:架构决策记录
任务:"我们应该拆分单体架构吗?团队从 10 人增长到 25 人。"
基线:关于微服务的通用建议
AVM:召回 ADR-007(原始单体决策),注意团队规模变化,
提供有上下文的建议 ✓结果:24/51 → 34/51 断言通过(+20%)
AVM 不起作用的场景
对于所有上下文都能装进对话窗口的场景,两种方法都能成功。AVM 增加了额外开销,但为未来会话提供了知识持久化。
3. 性能优化
问题:4.3 秒的 Recall
初始基准测试显示每次 recall 操作耗时 4.3 秒。瓶颈:每次 CLI 调用时都要加载嵌入模型。
$ time avm recall -a test "data analysis"
# 4.2 秒 (!)方案一:模型缓存
我们实现了在同一进程内跨实例持久化的类级别模型缓存:
class LocalEmbedding(EmbeddingBackend):
# 类级别缓存(跨实例持久化)
_model_cache: Dict[str, Any] = {}
def _load_model(self):
if self.model_name in LocalEmbedding._model_cache:
self._model = LocalEmbedding._model_cache[self.model_name]
else:
self._model = SentenceTransformer(self.model_name)
LocalEmbedding._model_cache[self.model_name] = self._model方案二:查询嵌入缓存
为查询嵌入添加 LRU 缓存(重复查询跳过嵌入计算):
def embed(self, text: str) -> List[float]:
cache_key = text[:200]
if cache_key in self._query_cache:
return self._query_cache[cache_key]
result = self._model.encode(text).tolist()
self._query_cache[cache_key] = result
return result方案三:智能 Recall 过滤
添加 min_relevance 阈值(默认 0.3),过滤低质量结果:
# 返回前过滤
if min_relevance > 0:
scored = [s for s in scored if s.relevance_score >= min_relevance]
# 无相关结果时提前返回
if not scored:
return "" # 零 token 浪费结果:快 70 倍
| 操作 | CLI(子进程) | 进程内 | 加速比 |
|---|---|---|---|
| 写入 | 84ms | 4-8ms | 10-20x |
| Recall(冷) | 4,300ms | 100ms | 43x |
| Recall(热) | — | 62ms | 70x |
| 列目录 | 50ms | 0.6ms | 83x |
| 统计 | 71ms | 1.4ms | 50x |
warmup 命令预加载模型:
$ avm warmup
✓ 嵌入模型加载完成,耗时 3779ms
模型:all-MiniLM-L6-v2
维度:3844. 使用建议
何时使用 AVM
✅ 高价值场景:
- 长对话(>50 轮)
- 跨会话项目
- 跨智能体知识共享
- 历史事件分析
- 法规/合规查询
⚠️ 中等价值场景:
- 复杂多步骤任务
- 有上下文的代码审查
- 会议综合
❌ 低价值场景(使用基线):
- 简单的一次性任务
- 自包含的对话
- 无需知识复用
优化建议
- 在高吞吐场景直接使用 Python API(避免 CLI 子进程开销)
- 在进程启动时调用一次
warmup - 设置合适的
min_relevance— 精度优先用 0.5+,召回优先用 0.2 - 使用批量操作 —
batch_remember()用于批量写入
5. 结论
AVM 的价值依赖于具体场景:
- 上下文溢出场景准确率 +38%
- 知识检索场景断言 +20%
- 简单任务 零改善(符合预期)
性能优化让 AVM 适合用于生产环境:
- 62ms recall(从 4.3s 降至)
- 批量写入吞吐 160 次/秒
- 列目录 1600 次/秒
基准测试验证了 AVM 的核心论点:当 LLM 上下文限制成为瓶颈时,持久记忆才真正重要。
复现
git clone https://github.com/aivmem/avm
cd avm/benchmarks
# 安装依赖
pip install tiktoken sentence-transformers
# 运行单元基准(不需要 LLM)
python run_unit_benchmark.py
# 运行多智能体基准(需要 Claude API)
python run_parallel.py
python run_context_overflow.py
python run_knowledge_retrieval.py结果保存到 results/*.json。
基准测试于 2026 年 3 月 23 日在 Apple M2 Pro 上进行,使用 Claude Opus 执行智能体任务。48 个场景,150+ 次智能体调用,80+ 并行任务。
