1. 文档新增、更新、删除和权限变化如何传播到索引,并保证最终一致性与可回滚
当知识库中的文档发生新增、更新、删除或权限变化时,这些变更应如何传播到向量索引?如何保证索引与源数据之间的最终一致性,并支持安全回滚?
- 变更事件如何从源系统传播到索引(CDC、消息队列)
- 索引层的最终一致性保证机制(版本号、墓碑、双写)
- 回滚与版本管理策略
变更传播通常采用事件驱动架构:源系统(CMS、Wiki、数据库)产生变更事件后,通过 CDC(变更数据捕获)或消息队列(如 Kafka)通知索引服务,索引服务对变更文档执行重新解析、分块、Embedding,写入新向量并同步更新标量元数据。为保证最终一致性,需要引入"版本号 + 墓碑(tombstone)"机制:每个文档持有单调递增的版本号,新版本写入时覆盖旧版本,检索侧只返回最新版本;删除操作不物理删除向量,而是打删除墓碑标记,检索时过滤掉墓碑文档,从而避免删除传播失败导致的残留召回。为避免大规模回填引发索引震荡,可采用"双写 + 影子索引":新内容先写入影子索引并与旧索引并行验证,确认无误后切换主索引。回滚依赖按版本构建的索引快照,一旦新版本出现质量问题,可整体回退到上一版本并重放事件流。权限变化同样作为一等事件传播:更新文档在索引中的 ACL 元数据,检索阶段按 ACL 实时过滤,保证删除与降权即时生效。
本题的核心难点是"上游变更与下游索引的非原子性":文档系统与向量索引是两套独立存储,无法保证强一致,只能通过事件队列、版本号、墓碑与快照在业务可容忍的延迟内收敛到最终一致。答题时应先讲清传播链路(事件驱动 + 队列削峰),再讲一致性机制(版本号与墓碑),最后落到可回滚性(双写 + 快照切换),体现生产级 RAG 数据治理的完整闭环。