检查项
期望的功能描述
在切换 embedding 模型后,希望系统能自动重建向量;退一步,至少要把"向量通道已降级"变成醒目提示。
现状
把 [model_task_config.embedding].model_list 换到另一个同维度(1024)的 embedding 模型后,A_Memorix 的双池向量通道会被静默停用:
[记忆内核] 双池 ready manifest embedding 指纹不匹配,保持单池降级:
manifest=sha256:78ae…(旧模型), current=sha256:8724…(新模型)
[记忆内核] 向量通道暂不可用,已保持原文件并降级运行: code=v2_fingerprint_mismatch
此时管理接口(POST /api/webui/memory/runtime/vectors/rebuild,dry_run: true)明确知道需要重建:
{
"embedding_fingerprint_status": "mismatched",
"vector_rebuild_required": true,
"degraded": true,
"retrieval_mode": "sparse_graph",
"available_channels": ["metadata", "sparse", "graph", "embedding"],
"unavailable_channels": ["vector_read", "vector_write"],
"vector_health": { "state": "incompatible", "error_code": "v2_fingerprint_mismatch", "recovery_stage": "rebuild_required" }
}
影响
- 长期记忆的语义检索实际停摆,只剩 BM25 稀疏检索 + 图谱召回;
- 但聊天看上去一切正常,日志只有
level: warning,WebUI 也没有醒目提示 —— 不看日志几乎发现不了;
- 只有手动调用一次
rebuild_all_vectors(非 dry_run)才能恢复。
期望
- 自动修复:配置热重载 / 启动后检测到
vector_rebuild_required == true 时,自动执行一次 rebuild_all_vectors(本机实测:3489 条 ≈ 133.8 秒、0 失败,代价可接受,且是幂等的);
- 若担心开销,至少在 WebUI 记忆页把该状态做成显著提示 + 一键重建按钮,并把对应的日志级别从 warning 提到 error;
- 可选:把"指纹不一致导致向量通道停用"作为一条可见的运行时事件推给前端。
与 #2010 的区别(避免误判为重复)
补充信息
我目前的缓解方式(供参考,不算上游应有的方案):
- 每 5 分钟跑一次健康探针,读取上面那个 dry_run 响应,发现
mismatched / degraded / 不可用通道 就通过聊天通道告警;
- 每天凌晨 03:30 的定时任务在探针发现异常时自动执行重建。
本报告来自一台真实部署的机器;日志中的密钥、QQ 号、主机名与个人目录路径均已移除,仅保留状态字段与版本号。
检查项
期望的功能描述
在切换 embedding 模型后,希望系统能自动重建向量;退一步,至少要把"向量通道已降级"变成醒目提示。
现状
把
[model_task_config.embedding].model_list换到另一个同维度(1024)的 embedding 模型后,A_Memorix 的双池向量通道会被静默停用:此时管理接口(
POST /api/webui/memory/runtime/vectors/rebuild,dry_run: true)明确知道需要重建:{ "embedding_fingerprint_status": "mismatched", "vector_rebuild_required": true, "degraded": true, "retrieval_mode": "sparse_graph", "available_channels": ["metadata", "sparse", "graph", "embedding"], "unavailable_channels": ["vector_read", "vector_write"], "vector_health": { "state": "incompatible", "error_code": "v2_fingerprint_mismatch", "recovery_stage": "rebuild_required" } }影响
level: warning,WebUI 也没有醒目提示 —— 不看日志几乎发现不了;rebuild_all_vectors(非 dry_run)才能恢复。期望
vector_rebuild_required == true时,自动执行一次rebuild_all_vectors(本机实测:3489 条 ≈ 133.8 秒、0 失败,代价可接受,且是幂等的);与 #2010 的区别(避免误判为重复)
embedding_fingerprint_unavailable(source=configured),由内核热重建 + 进程内 embedding 缓存引起,重启进程才能恢复;v2_fingerprint_mismatch(新旧指纹都是source=observed),由用户更换 embedding 模型引起,rebuild_all_vectors即可恢复;补充信息
我目前的缓解方式(供参考,不算上游应有的方案):
mismatched / degraded / 不可用通道就通过聊天通道告警;