Skip to content

[Feature] 切换 embedding 模型后自动重建向量,或至少把「向量通道已降级」变成醒目提示 #2083

Description

@acfuak1

检查项

  • 我确认在Issues列表中并无其他人已经建议过相似的功能
  • 这个新功能可以解决目前存在的某个问题或BUG
  • 你已经更新了最新的dev分支,但是你的问题依然没有被解决

期望的功能描述

在切换 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)才能恢复。

期望

  1. 自动修复:配置热重载 / 启动后检测到 vector_rebuild_required == true 时,自动执行一次 rebuild_all_vectors(本机实测:3489 条 ≈ 133.8 秒、0 失败,代价可接受,且是幂等的);
  2. 若担心开销,至少在 WebUI 记忆页把该状态做成显著提示 + 一键重建按钮,并把对应的日志级别从 warning 提到 error;
  3. 可选:把"指纹不一致导致向量通道停用"作为一条可见的运行时事件推给前端。

与 #2010 的区别(避免误判为重复)

补充信息

我目前的缓解方式(供参考,不算上游应有的方案):

  • 每 5 分钟跑一次健康探针,读取上面那个 dry_run 响应,发现 mismatched / degraded / 不可用通道 就通过聊天通道告警;
  • 每天凌晨 03:30 的定时任务在探针发现异常时自动执行重建。

本报告来自一台真实部署的机器;日志中的密钥、QQ 号、主机名与个人目录路径均已移除,仅保留状态字段与版本号。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions