diff --git a/docs/演示用/知识库向量对账与清理-2026-09-15.md b/docs/演示用/知识库向量对账与清理-2026-09-15.md index 488b4cf..26054fe 100644 --- a/docs/演示用/知识库向量对账与清理-2026-09-15.md +++ b/docs/演示用/知识库向量对账与清理-2026-09-15.md @@ -86,6 +86,27 @@ Outbox 幂等语义一个都不绕。 问:基金申购后多久能确认 → 处置:直接回答 top1=0.8453 次优=0.6336 gap=0.2117(高置信) ``` +### ③ 的"检测 → 修复 → 复核"闭环也实测过 + +对账当时报 0 条死向量,`--apply` 路径**没有真实样本可跑**。为了不把一个没跑过的分支交出去, +手工造了一个**真实的死向量**:上传一份测试文档 → 等 Worker 写好向量 → **直接改库**把它的 +`status` 置为 `expired` 且**不投**删除事件(这正是历史上那批行的真实形态)。 + +``` +$ python tools/purge_expired_knowledge_vectors.py +对账发现 1 条已过期知识仍有向量(检索侧不看 status,它们仍在参与排序): + · fin_product_collection: 1 条 → ['206'] +[dry-run] 未投递。加 --apply 真投(每条一次 POST /api/v1/knowledge/{id}/vector-cleanups)。 + +$ python tools/purge_expired_knowledge_vectors.py --apply --wait 20 +投递完成:成功 1 / 失败 0 +等 20 秒让 Worker 消费删除事件 … +复核:仍有向量的已过期行 0 条 ← 向量确实被清掉了 +``` + +⇒ "对账发现问题 → 批量补投 → 复核归零"整条链路可用。验证用的测试行(id 204/205/206) +是**已过期且无向量**的行,既不影响检索也不影响对账结论(`死向量 0` 就是证据)。 + --- ## 3. 对账结果:`python tools/reconcile_knowledge_vectors.py`