两种过滤方式
| 方式 | 执行顺序 | 典型风险 |
|---|---|---|
| 前置过滤(pre) | 先筛条件再算距离 | 过滤集稀疏时召回下降、延迟上升 |
| 后置过滤(post) | 先算距离再筛条件 | 过滤条件强时 top-k 结果不足 |
后置过滤的超采样补偿
后置过滤的超采样补偿
hits = vector_store.search(q_vec, top_k=k * 5)
kept = [h for h in hits if h.payload.get("tenant") == tenant_id]
kept = kept[:k] # 过滤后截断
assert len(kept) == k or kept, "命中不足时降级为仅过滤检索"Qdrant、Milvus 等对带过滤检索有专门实现与参数;上线前用最差分布(小租户)压测。