知识会变;没有“更新/过期/回滚策略”的 RAG,很快会失真。
🎯 文章目标
- 设计文档入库/更新/归档与回滚策略
- 定义一致性与可追溯要求
- 提供最小实现与观测点
📚 背景/前置
- 文档变化:新增/修改/删除/失效
- 需求:查询一致、可回滚、可解释(引用版本)
🔧 核心内容
1) 更新策略
- 增量更新:只处理变更文件;保留版本号
- 重建索引:批量构建 + 原子切换;大规模变更时使用
- 归档:过期文档移入 archive,保留引用
2) 可追溯
- 片段记录
- 回答引用“版本号/来源”,便于追责与对齐
3) 观测与检查
- 指标:更新率、失败率、重建耗时、最慢 5%
- 检查:随机抽查引用一致性;发现“陈旧引用”报警
💡 实战示例:版本化入库(Python)
python
from datetime import datetime
record = {
'docId': 'kb-001', 'version': '2025-03-01',
'source': 'handbook.md', 'updatedAt': datetime.utcnow().isoformat()
}
# 向量入库时保存 record,生成引用时带上版本信息
📊 对比/取舍(速查)
- 仅增量 vs 定期重建:规模小选增量,规模大选重建
- 引用版本 vs 不带版本:前者可追溯,后者体验更简洁
🧪 踩坑与经验
- 无版本:回答无法追责
- 混用旧新数据:导致“事实冲突”,需原子切换
📎 参考与延伸
- 索引重建/分片与热切换
- 文档生命周期管理
💭 总结
- 用“增量/重建 + 版本追踪 + 观测检查”确保 RAG 知识一致性与可回溯