Appearance
4.3 知识库更新与索引维护
这一节讨论的是 RAG 从 Demo 走向长期可用系统时,几乎一定会遇到的问题:
- 知识库内容在变,索引怎么跟着变
- 旧数据怎么失效
- 删除和修改怎么同步
- 出错以后怎么回滚
很多团队在最开始做 RAG 时,只关注“第一次把资料建进索引”。但真实系统的问题,往往不是第一次建进去,而是后面不断变化时还能不能维持干净、稳定和可控。
也就是说,索引构建只是开始,索引维护才决定系统能不能长期可用。
为什么这一节很重要
如果知识库会变化,而索引维护机制又不清楚,系统很快就会出现这些问题:
- 新资料已经更新,检索结果还是旧内容
- 一篇文档改过多次,索引里留下多份旧 chunk
- 删除了源数据,但索引里还残留孤儿数据
- 同一主题在不同时间问,答案前后不一致
- 紧急修错后,无法快速回滚到上一个稳定版本
这些问题看起来像“检索偶尔不稳”,本质上其实是索引生命周期没有设计好。
学这一节时,最值得先建立的判断
- 生产环境里不能把“重建一次索引”当成唯一更新方式
- 新增、修改、删除三类变化,处理方式通常不同
- 增量更新的前提是稳定 ID、清晰版本和可追踪的变更来源
- 索引维护不只是写入动作,还包括删除、失效、回滚和脏数据清理
这一节会回答什么问题
- 知识库更新后,索引为什么不能只靠全量重建?
- 全量重建在生产环境里会带来什么问题?
- 增量更新索引通常怎么做?
- 新增、修改、删除数据分别怎么同步到索引?
- 如何避免旧 Chunk 残留、重复索引和脏数据?
- 如何做版本管理、回滚和失效控制?
读完这一节后,你最好能更稳地判断:
- 什么场景适合全量重建,什么场景必须增量更新
- 一条数据变化以后,索引侧应该触发哪些动作
- 系统不稳定时,应该优先检查新增链路、修改链路、删除链路,还是版本控制链路