一句话:过滤下推(Filter Pushdown)是把权限、时间、分类等过滤条件“推”到向量检索执行过程的前面,先缩小候选范围,再计算或边算边筛相似度,而不是先搜出海量结果再删。
普通向量检索会先把查询转成向量,在近似最近邻(Approximate Nearest Neighbor, ANN)索引里找最相似的 Top-K,然后才用元数据(metadata)过滤。这像找餐厅:先取“离我最近的 100 家”,再剔除已打烊的;如果附近大多数都打烊,最后可能只剩几家,甚至不够用。过滤下推则先按“营业中、可停车、在我所在城市”缩小范围,再按距离排序。它减少无效计算,也避免过滤后结果数量骤降。
它和相邻概念的区别可以这样看:
| 做法 | 执行顺序 | 特点 |
|---|---|---|
| 后过滤(post-filtering) | 先向量 Top-K,再过滤 | 实现简单,但可能结果不足、召回下降,过滤条件很严时尤其明显 |
| 过滤下推(filter pushdown) | 过滤条件进入检索计划,先缩范围或边遍历边筛 | 减少候选集,通常更稳;效果依赖索引对过滤字段的支持 |
| 纯前过滤再暴力算 | 先过滤,再逐条算相似度 | 结果准,但数据量大时计算代价高 |
对从业者,关键是把可过滤字段设计清楚,让查询规划器真正用上过滤条件;权限过滤尤其应放在检索链路内,而不是取回结果后在应用层删,否则既低效也有越权风险。对普通人,它的意义是:在“我的文档”“最近半年”“我有权限看的项目”里搜索时,结果更符合范围,也更快、更不容易漏。
