ARTICLE · 1318732
文档已经更新,AI为什么还在回答旧价格?
价目表从100元改成120元,如果AI还是答100元,先看这次检索拿到了什么:是旧价目表,还是更新后的内容?
检索结果里还有旧价格,就先查知识库更新;检索结果已经是新价格,再查回答过程。下面把这两类问题分开。
新的一版进来了,旧的一版可能还在
文档通常会拆成多个片段后再存入知识库,这些片段也叫分片。
本次用Spring AI的SimpleVectorStore做了一个本地对照:同一份价目表的旧版v1写100元,新版v2写120元,两个片段使用不同ID。只添加v2后,检索结果里新旧两版都在。
实验给片段设置相同的测试向量,让它们的检索相似度保持一致,只检查新增、过滤和删除是否生效。没有调用真实嵌入模型或大模型,也没有让AI实际生成回答。
所以,“上传成功”还不能说明更新完成。需要继续核对:新版片段是否已写入,这次查询是否还会拿到旧版。

只写version=v2,也不一定够
实验里还放了一份其他课程的v2文档。两份文档都叫v2,只按版本筛选,就会把它们一起查出来。还要限定具体是哪份文档,才能只留下本次需要的片段。
这里的“来源”就是文档标识,版本号表示这份文档更新到了哪一版。实际项目还要根据用户权限确定可检索的文档,不能只相信请求传来的来源。
另一种处理办法,是按事先保存的旧片段ID删除旧版内容。本次删除v1后,不加版本限制也只查到当前来源的v2,其他来源的文档仍在。这里没有把整库清空重建。
回答旧内容,先把证据找出来
排查时,先记录这次请求、文档来源、当前版本,以及实际检索到的片段ID和原文。这样才能判断:旧内容没清掉,还是查询少了筛选条件;检索结果没问题时,再查缓存和回答过程。
如果采用版本切换,应先确认新版片段已经写入,而且按来源和版本能查到,再让后续请求改用新版。远端检索服务写入后多久能查到,需要单独验证;本次内存实验不能保证它也立即生效。
如果检索原文只有120元,回答却还是100元,就继续检查回答阶段。此时只清理旧片段,未必能解决问题。
你现在更新知识库,是沿用原来的片段ID,还是给新版另建ID?如果另建,在哪一步删除旧ID或让查询跳过旧版?把这一步写清楚,才能查出AI这次用了哪份资料。















































































