直接回答:按数据规模与团队现状选:百万级以下、已有 PostgreSQL,直接用 pgvector,少维护一个系统,还能做向量与业务字段的混合过滤;千万到亿级、高 QPS,选 Milvus 或 Qdrant 这类专用库(HNSW 索引成熟、支持分片与 GPU 加速);已有 Elasticsearch 集群且检索以关键词为主向量为辅,用 ES 的 dense_vector 做混合检索最省事。索引算法层面 HNSW 是默认答案,召回率与延迟平衡最好。

展开解析:评估清单:一是标量过滤能力——真实业务几乎都要“向量相似 + 元数据条件”,要确认过滤是在索引内做(pre/post-filtering 策略)而不是查完再滤,否则过滤比例高时召回暴跌;二是更新与删除的开销,HNSW 删除是标记式的,频繁更新的场景要看压实策略;三是运维成本——专用库意味着多一套集群、备份与监控,小团队常被低估;四是多租户隔离方式(collection、partition key、独立索引)。性能测试必须用自己的数据分布与过滤条件跑,厂商 benchmark 不可比。还有一个常被忽略的选项:数据量小且只读的场景,FAISS/磁盘索引 + 普通服务可能比引入向量库更简单可靠。

追问方向:标量过滤的 pre-filter 与 post-filter 各有什么坑?HNSW 的参数怎么调?

(约 470 字)