物化结果要按版本失效并增量刷新

**AI 生成的结果(洞察、相关推荐、摘要)不要二选一「实时算」或「生成一次就永久存」,而要当成「带版本的物化结果」:存下来、标版本、被触发条件作废、后台增量刷新。** 用户问的正是这个 —— 洞察是存一次,还是随时间刷新?

三个错误答案

  • 每次保存都算:笔记每 800ms 自动保存,写一句就分析一次 —— 又贵又抖,还会在用户没写完时过早下结论。
  • 每次打开页面都实时算:用户要等模型和向量计算,页面打开变慢。
  • 首次生成后永远不变:库越大,旧结论越不准。

正确形态:SWR 式物化

写入侧:停止编辑约 2 分钟 → 标记待处理 → Cron 生成 → 落库(带版本)
读取侧:打开页面 → 立即展示已存结果 → 若已 stale,后台刷新替换
手动侧:高优先级任务,走同一套队列,而不是同步请求

每条结果记录版本与失效依据,例如:noteId / noteVersion / kind / relatedSetHash / corpusRevision / promptVersion / model / generatedAt / supersededAt。触发失效的条件:正文变了、Top-K 相关内容明显变了、新内容与它建立高相似关系、prompt 或模型版本变了、用户手动要求重算。

关键约束:不能「每加一篇就重算全部」

正确做法是反向的:新内容先算向量 → 找出真正受影响的少数对象 → 更新关联 → 只把这几条标记 stale。作废要精确到「受影响的那几个」,刷新要留给下一次 Cron。

相关