RAG 索引增量更新

rag_incremental_index_recovery2026-09-06 22:57:48

RAG 索引增量更新

增量更新是根据资料变化维护检索索引,使未变化内容不必重复处理。原始文档是知识来源,向量、片段和摘要等索引数据是派生物。

更新哪些内容

变化 索引处理
新增资料 解析、切分并加入索引
修改资料 更新受影响片段、向量和元数据,移除失效片段
删除资料 移除或停用对应索引记录
未变化 在配置兼容的前提下跳过重复处理

删除不能遗漏,否则检索仍可能返回已经撤回的资料。对于存在生效时间的知识,应区分历史版本保留与当前可检索版本。

如何识别变化

可以对比文件内容哈希、来源版本号或变更事件。只依赖修改时间可能出现漏判或误判。内容未变也不代表无需更新:标题、权限、状态和上级背景等依赖数据发生变化时,相关索引元数据可能仍需刷新。

“扫描全部资料以检测变化”和“重新处理全部资料”是两件事。系统可以检查完整清单,但只解析和写入受影响内容。

文件级与片段级复用

文件级更新把文档作为处理单位;片段级复用进一步识别修改文档中没有变化的输入,减少重复 Embedding 调用。

安全复用需要模型与编码配置兼容,且实际输入一致。仅向量维度相同不代表不同模型兼容。更换 Embedding 或处理规则时,应重新判断兼容范围;只更换回答模型通常不影响已有文档向量。

节省向量化不等于节省全部工作。如果仍把所有片段复制到新索引,数据库读写和磁盘占用仍会增加。

两类一致性策略

构建新版本后切换:旧索引继续完整可用,新索引准备好后再切换读取版本。发布边界清晰,但可能需要更多空间与复制工作。

更新现有索引:只增删受影响记录,工作量较小,但多步写入失败时可能混合新旧内容。需要使用存储事务、版本过滤、恢复日志或其他一致性机制,并明确更新期间读请求可见什么。

选择哪种方式取决于数据量、更新频率、可用性和存储能力,不应把其中一种写成所有系统的固定做法。

失败与恢复

可靠更新应能重复执行而不产生重复或遗漏,并有办法识别未完成任务。保存旧版本或恢复依据、记录提交状态、验证更新结果,都是可采用的设计要素。

进程内“任务已完成”标记不能替代持久化提交记录。恢复后仍要检查索引与当前来源是否一致;数据库可以连接也不表示知识一定最新。

相关基础见检索增强生成(RAG)与向量数据库。

本页目录