首页/AI/RAG 与向量库速查/前置过滤与后置过滤
本包目录(229 条)
架构与流程30 条解析与切分33 条
Embedding 与检索50 条
向量数据库49 条重排与生成32 条评估与优化35 条

前置过滤与后置过滤

向量检索带条件过滤(如租户、标签、时间)时有两条路:前置过滤只搜满足条件的向量,结果准确但可能变慢;后置过滤先检索再筛,速度快但 top-k 可能被筛空,需要用超采样或多取候选弥补。

RAG 与向量库速查AI更新于 2026-10-12

两种过滤方式

方式执行顺序典型风险
前置过滤(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 等对带过滤检索有专门实现与参数;上线前用最差分布(小租户)压测。

易错点

  • 强条件后过滤不超采样,返回条数比预期少却无明显报错
  • 过滤字段未建索引,服务在数据量上来后延迟恶化

数据来源与参考

  • Qdrant 官方文档(Filtering)
  • Milvus 官方文档(Filtered search)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌