K8.2 知识库会变:更新、失效与重建
一张没兑现的支票
整个中篇反复用同一个论据说明 RAG 为什么赢过微调:
改知识库比重训一次模型快几个数量级,改完立刻生效。
K0.1 用它说明为什么模型「记不住最新的事」,K7.3 用它说明为什么长上下文替代不了 RAG,上篇 5.9 也用它把「补事实」这类需求整个推给了 RAG。
这句话是对的。但它一直没说清楚:「改」到底是怎么改的,以及要付多少钱。
这一节把这张支票兑现——顺便告诉你,其中有一种「改」贵得会影响你的技术选型。
六种改法,代价差四五个数量级
请按顺序做四个实验:
实验 ①:从最便宜的开始。 库拖到「20 万块」(约一万份文档,一个中型企业库),点「新增一份文档」。要重嵌 20 块、费用四舍五入是 0 元、耗时不到一秒。这就是那句「改完立刻生效」的底气所在。
实验 ②:注意「改一句话」的陷阱。 点「改一份文档里的一句话」——要重嵌的还是 20 块,也就是整份文档,不是被改的那一块。为什么?回想 K2 的切块:块的边界是按字数/语义顺着文档切下来的。你在中间删了一句话,后面所有块的边界整体位移了。只更新「看起来被改到」的那一块,会留下一批错位的旧块。
实验 ③:找出那个几乎免费的。 点「改权限标签 / 元数据」——要重嵌 0 块。这条最容易被误判:很多人以为改了标签就得重建索引。不用,向量本身没变,改的只是挂在它旁边的字段。K8.1 那套权限过滤能实时生效,靠的正是这一点。
实验 ④:现在看那个贵的。 点「换嵌入模型」,然后把库规模从 20 万一路拖到 1000 万块。费用从 40 元涨到 2000 元,耗时从 7 分钟涨到 5.6 小时——而且这是全库 100% 重建,没有任何折中余地。
为什么换嵌入 模型没有折中
实验 ④ 那个「100%」值得单独解释,因为它是这一节最重要的一条工程约束。
一个非常自然的想法是:新文档用新模型嵌,老文档留着旧向量,慢慢过渡。
这行不通,而且不是「效果差一点」,是根本不能用。
回到 K1.1 的基本设定:语义检索靠的是「意思相近的文本,向量坐标也相近」。但这个坐标系是每个模型自己定的——同一句话,A 模型把它放在某个位置,B 模型放在完全不同的位置。两套坐标系之间没有任何对应关系。
所以混用的后果是:你拿新模型编码的查询向量,去和一半新、一半旧的库比距离。和旧向量算出来的那些距离是纯噪声——不是「不太准」,是完全没有意义。检索结果会变成新旧混杂的随机排序。
一句话记住:向量库里的向量必须全部来自同一个嵌入模型。 这是硬约束。
由此得到一条选型建议,我认为是中篇最实用的一条:
选嵌入模型要比选对话模型更谨慎。 对话模型可以随时换——换个 API 地址就行,历史数据不受影响。嵌入模型一旦上线就产生了迁移成本,而且库越大越难换。