Skip to content

fix: 优化唤醒缓存与向量相似度计算 - #69

Merged
chentaiyan-fullive merged 1 commit into
devfrom
fix/somni-wake-cache-vectorized-similarity
Aug 27, 2026
Merged

fix: 优化唤醒缓存与向量相似度计算#69
chentaiyan-fullive merged 1 commit into
devfrom
fix/somni-wake-cache-vectorized-similarity

Conversation

@chentaiyan-fullive

Copy link
Copy Markdown
Collaborator

背景

Somni 唤醒检索使用“唤醒”阶段,但阶段缓存预热仍写成“清醒”;缓存 miss 还会触发四阶段全量重建。同时标签粗排通过 Python 嵌套循环重复执行大量 1024 维余弦计算,成为并发检索的主要 CPU 耗时。

改动

  • 缓存阶段修正为 放松/入睡/守护/唤醒,刷新时兼容清理旧“清醒”键。
  • 缓存 miss 只加载缺失阶段;同进程并发 miss 合并为一次 ES 加载,并与全量清理/预热互斥。
  • 内容准入、厌恶过滤和自动标签提取改为 NumPy float64 批量余弦矩阵;请求内共享相似度快照。
  • 保持精确标签优先、颜色噪音互斥、阈值、排序、HTTP 请求和响应结构不变。

验证

  • uv run --no-sync pytest -q:264 passed。
  • 目标文件 ruff checkruff format --check:通过。
  • python -m compileall -q app tests:通过。
  • 12 组脱敏 1024 维微基准:标量 579.38ms,矩阵 38.23ms,结果一致,计算 wall time 降低 93.4%。
  • 全仓 Ruff 仍有 dev 基线既存问题(51 个 lint、26 个待格式化文件),本 PR 未扩大范围处理。

结构与契约

  • 仅修改缓存、检索实现和对应测试。
  • 不修改 HTTP/ES schema、Redis key 前缀、DeepHealth、Proto、DB 或部署配置。
  • 不涉及 LLM。

风险与回滚

  • single-flight 仅覆盖单进程;多实例仍依赖 Redis 缓存收敛。
  • NumPy 使用 float64,并以标量参考测试验证阈值行为;可通过回滚本提交恢复旧计算路径。

后续

ES 精确标签前置粗筛及向量聚类不在本 PR 范围;建议先做召回 diff 和真实流量基准后再决定。

@chentaiyan-fullive
chentaiyan-fullive merged commit 312e282 into dev Aug 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant