版本混在一起,是检索里的"慢性病"
文档会改版:政策更新、接口变更、产品迭代 ✔。如果索引里**旧版与新版并存** ✗,
检索会同时召回两者 ✔,模型就可能把旧规则当成现行规则讲出来 ✗ —— 而且**很难被发现** ✗。
**要求**:每个片段都能回答"**它属于哪个版本**" ✔,并且**默认只检索现行版本** ✔。
一、索引里要带的版本字段
```
doc_id(同一份文档的稳定标识 ✔)
version(版本号或日期 ✔)
status(current / superseded / draft ✔)
effective_from / effective_to(生效区间 ✔)
```
**要点**:`doc_id` 要在改版前后**保持不变** ✗ ✔(否则无法判断"这两段是同一文档的新旧版" ✔)。
二、检索时的默认行为
**关键**:默认安全、放宽显式 ✗→✔。
三、迁移与失效怎么处理
四、三个常见坑
1. **同一文档多次入库**(改版时新插入而不是更新 ✗)→ 索引膨胀且新旧并存 ✔;
2. **`effective_to` 缺失** ✗ → 无法判断过期 ✔(至少给 `superseded` 标记 ✔);
3. **版本字段不参与过滤** ✗ → 检索到旧版却浑然不觉 ✔(与权限过滤同一个错误类型 ✔)。
五、怎么验证
一条判据
> 随机抽 10 条回答,能否说出"它依据的是哪个版本" ✔?
> 说不出,说明版本还没有进入检索链路 ✗。