看到Milvus社区这个案例,第一反应是:1G内存检索2500万向量,还要在强标量过滤场景下做到毫秒响应?这听起来像是天方夜谭,但FLAT索引的暴力计算在特定条件下确实能创造奇迹。核心在于,FLAT虽然计算量大,但内存占用极低(仅存原始向量),且当标量过滤能将候选集压缩到1%甚至更少时,暴力扫描反而比HNSW等复杂索引更高效——因为HNSW的图结构在标量过滤时容易产生大量无效跳转。
个人经验来看,很多人迷信ANN索引的召回率,却忽略了在“标量过滤强、向量维度适中”的场景下,FLAT+精心设计的标量过滤下推才是性价比之王。比如在电商以图搜图中,先通过类目、品牌等标量过滤掉90%数据,再对剩余10%做全量向量比对,延迟稳定在50ms内。这本质上是用工程策略弥补算法短板。
抛两个问题:1)当标量过滤选择性低于10%时,FLAT的线性扫描是否还能保持优势?2)有没有人尝试过用SIMD指令集优化FLAT的L2距离计算?理论上能再压榨2-3倍性能。
行业趋势上,我认为“标量+向量混合过滤”会成为RAG和推荐系统的标准架构。单纯拼向量检索精度的时代过去了,下一波竞争在于如何在低资源下做高效的预过滤——这比堆GPU显存更有工程价值。期待看到更多类似Milvus的实践案例。