Qdrant 发布全新过滤策略:为何摒弃预过滤与后过滤?
在向量数据库的搜索优化中,如何高效处理元数据过滤(Metadata Filtering)一直是开发者面临的挑战。传统的做法通常局限于两种策略:预过滤(Pre-Filtering)和后过滤(Post-Filtering)。然而,Qdrant 团队在其最新技术文章中指出,这两种策略在中间地带均存在明显缺陷,因此 Qdrant 选择了一条全新的道路——将过滤逻辑内嵌于搜索过程之中(In-Place Filtering)。
传统策略的局限性
预过滤的代价
预过滤策略要求引擎在向量搜索前,先计算出一组通过过滤条件的点集(通常作为掩码)。虽然这保证了结果的精确性,但其成本随数据量线性增长。对于宽泛的过滤条件,预过滤会退化为全量扫描(Brute Force),导致性能急剧下降。
后过滤的困境
后过滤策略先执行最近邻搜索,再对返回结果进行筛选。为了弥补这一点,引擎通常需要进行“过度获取”(Over-fetching),即请求比实际需求更多的结果。然而,如何确定请求数量是一个难题:请求过少会导致结果不完整,请求过多则意味着浪费了计算资源,重新回到了全量扫描的低效状态。
Qdrant 的解决方案:内嵌过滤
Qdrant 的核心创新在于在搜索过程中直接应用过滤。其工作流程如下:
- 图遍历与实时过滤:查询在 HNSW(Hierarchical Navigable Small World)图结构中遍历,每到达一个候选点,立即检查其是否满足过滤条件。不满足的点直接跳过,无需计算相似度分数。
- Filterable HNSW (2019):在索引构建阶段,为共享相同元数据值的点之间添加额外的边。这使得过滤后的图结构依然保持连通性,确保搜索路径不会断裂。
- ACORN (2024):针对上述架构的补充,ACORN 算法在查询时修复遍历路径,允许搜索通过那些虽然不满足过滤条件但能通往有效结果的邻居节点,从而解决“死胡同”问题。
智能路由与性能突破
Qdrant 引入了查询规划器(Query Planner),它会根据过滤条件的具体特征,动态选择四种执行路径之一:
- Filterable HNSW 图:适用于大多数通用过滤场景。
- ACORN 增强图:处理复杂或边缘情况。
- Payload 索引直接查询:当过滤条件非常明确且匹配点较少时,直接读取预计算的索引,成本极低。
- 全量扫描:作为最后的兜底方案。
在基准测试中,对于两个宽泛值的 AND 过滤组合,传统方法导致召回率降至 39.7%,而启用 ACORN 后,召回率恢复至 100%,同时保持了极低的延迟。对于匹配率仅为 1% 的复杂过滤查询,Qdrant 能够智能地将 471 次请求路由至高效的 Payload 索引路径,仅 29 次请求才需要遍历图结构。
“过滤属于搜索的一部分,引擎需要足够的上下文来做出最佳路径选择。” —— Qdrant 技术团队
核心价值总结
- 消除性能瓶颈:彻底解决了宽泛过滤导致的性能退化问题。
- 动态自适应:不再依赖固定的预/后过滤策略,而是根据查询负载实时调整执行计划。
- 高召回率保障:通过 ACORN 算法,确保在复杂过滤条件下不丢失有效结果。
对于追求极致搜索体验的开发者而言,Qdrant 的这一架构革新标志着向量检索从“静态索引”向“动态智能路由”的重大演进。