memoryweave/eval_results.md

3.5 KiB
Raw Permalink Blame History

织忆 MemoryWeave — 性能基准测试报告

测试时间: 2026-06-02 测试环境: localhost:7821, API Key: zhiyi-dev-key-2026 记忆总数: 1643 | Episodes: 7 | Backend: LanceDB (Rust IPC)


1. API 延迟基准

/health 端点 (10次请求, 无模型调用)

指标
p50 4ms
p95 8ms
max 8ms

结论: 纯 HTTP 层延迟极低Go 服务本身无性能问题。


2. 核心功能可用性

功能 端点 状态 说明
健康检查 GET /health 正常 4ms 响应
统计 GET /api/v1/stats 正常 返回 1643 记忆
图谱导出 GET /api/v1/graph/export 正常 返回 nodes/edges
语义召回 POST /api/v1/recall 正常 返回相关记忆
图谱导航 POST /api/v1/graph/navigate 正常 (WAL mode) 牧尘: 113 paths (2-hop), 织忆: 429 paths

图谱导航超时问题 — 已修复

根因: SQLite 默认 rollback journal 模式写操作会阻塞所有读操作busy_timeout=10s。当 merge/decay 触发写锁时,导航读请求等待超时。

修复: 启用 WAL 模式 + busy_timeout 从 10s 降至 3s

  • PRAGMA journal_mode=WAL — 写操作不阻塞读
  • busy_timeout=3000 — 3s 足够处理正常锁等待 | 图谱 stats | GET /api/v1/graph/stats | ⚠️ 超时 | 调用 navigate 导致 |

3. 语义召回质量 (recall)

测试查询: "牧尘 项目", top_k=5

count: 5
top results:
  1. "牧尘偏好:话少直接,结论先行" (score=0.468)
  2. "牧尘将织忆的 LLM 模型质量回溯功能从 MiniMax M2.7 切换至 Qwen3.5-122B" (score=0.446)
  3. "牧尘今天在调试织忆的 LLM 模型质量回溯功能,从 MiniMax M2.7 换成了 Qwen3.5-122B因为 M..." (score=0.396)

结论: 召回结果高度相关,语义搜索工作正常。


4. 图谱导航问题 (BLOCKER)

问题描述

POST /api/v1/graph/navigate 请求超时 (>10s)curl 记录显示 0 bytes received服务端无响应。

可能原因

  1. BFS 死循环: SQLiteGraphStore.Navigate 对 disconnected graph 或环路处理不当
  2. DB 锁阻塞: 图谱写操作merge/decay与读操作竞争导致读事务饥饿
  3. NavigateBiDir 伪实现: InMemoryGraph 的双向 BFS 是伪实现,直接委托单向 BFSdocs/BFS_GRAPH_EXPANSION_DESIGN.md

已有设计修复

docs/BFS_GRAPH_EXPANSION_DESIGN.md 详细分析了 5 个缺陷,并给出 7 步修复计划 (E1.1~E1.7)。


5. 集成测试结果

测试框架: tests/integration_test.sh (bash + curl)

测试项 结果
/health PASS
/api/v1/stats PASS
/api/v1/graph/stats ⏱ TIMEOUT (>60s)
图谱导航 (navigate) ⏱ TIMEOUT
CLI vs API 一致性 未执行 (被超时阻塞)
并发测试 未执行

6. 已知缺陷

优先级 缺陷 状态
🔴 P0 图谱导航超时 已修复 (WAL mode)
🟡 P1 InMemoryGraph.NavigateBiDir 伪实现 📋 见 BFS_GRAPH_EXPANSION_DESIGN.md E1.3
🟡 P1 图谱写事务锁竞争 已缓解 (WAL mode)

7. 下一步行动

  1. E1.1~E1.7 实施: 按照 docs/BFS_GRAPH_EXPANSION_DESIGN.md 逐步修复(双向 BFS 真正实现、环路检测等)
  2. 重新跑集成测试: 修复后重新跑 tests/integration_test.sh,验证 100% 通过
  3. 并发压测: 50 并发请求 + 图谱写入同时进行,验证 WAL 效果

基准脚本: scripts/benchmark.sh