产品手册改成第 3 版并重新入库,问答里仍然给出旧版的价格条款,检索命中的 chunk 内容看时间戳是两周前的,新版本文件确实已经上传成功。
一开始怀疑是「向量库写入成功但索引刷新有延迟」,查了一圈,方向不对。
这类报错背后常见的原因有几处,逐个排除就行。旧 chunk 没删,新旧两份同时参与检索。也可能是文档 id 变了但没有按来源去重。
少数情况下是缓存里存着上一版的检索结果。
上来先按来源统计集合里每个文档的 chunk 数
python -c "import json,collections;cs=[json.loads(l) for l in open('chunks.jsonl')];print(collections.Counter(c['source'] for c in cs).most_common(5))"
接着删除旧版本再写入新版本并校验条数
python ingest.py --file manual_v3.pdf --delete-by-source manual --verify
然后清掉检索缓存后重问同一问题
python cache_cli.py --prefix retrieve: --purge
等前面都确认过,再确认索引可见性,等刷新后再查一次
python retrieve.py --q '退款条款' --no-cache --topk 5
改完先别撤,确认这几项。同一问题的引用全部来自第 3 版文档,集合里每份来源只剩一份,价格条款与手册一致。
这里还有个坑。更新失败最常见的原因不是没写进去,而是旧数据没清,入库流程要按来源先删后写,并核对 chunk 总数。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
