选型先看规模,别先看流行度

向量库这两年铺天盖地,但绝大多数团队的真实数据量撑死在几十万到几百万条 chunk——这个量级,杀鸡用牛刀的代价是运维复杂度暴涨。Milvus 这类分布式系统要部署 etcd、MinIO、集群节点,一个人维护都吃力;而你的检索延迟可能只需要 50ms 以内,单机方案完全够。选型第一问永远是:我的向量条数大概多少?QPS 多少?要不要过滤?

四类方案对号入座

方案适合规模优点代价
Chroma十万级内、原型验证pip install 即用,纯嵌入式不适合高并发生产
pgvector百万级、已有 PostgreSQL复用现有库,SQL 联合查询百万以上 HNSW 调参吃紧
Qdrant百万到千万、生产混合检索原生过滤、稀疏向量、Rust 性能多一个独立服务要运维
Milvus亿级、大规模分布式水平扩展成熟部署重,组件多

一个常被忽略的点:pgvector 的隐性优势是和业务表同库。你的 chunk 带着文档 ID、权限、来源元数据,用 SQL JOIN 直接过滤(比如「只检索当前部门有权看的文档」),比在向量库里单独维护一套 ACL 简单一个数量级。中小团队如果本来就用 PostgreSQL,加个 pgvector 扩展往往是最优解,CREATE EXTENSION vector; 一行搞定。

三个踩坑提醒

第一,HNSW 参数别用默认:ef_construct 和 ef_search 直接决定召回率和延迟的 trade-off,Qdrant、pgvector 都要根据数据量实测,默认值往往偏保守。第二,维度别盲目追高:OpenAI text-embedding-3-small 是 1536 维,bge-m3 是 1024 维,维度越高索引越大、检索越慢,够用就行。第三,量化压缩:Qdrant 支持 scalar 量化和 HNSW on-disk,百万级以上不开量化,内存直接爆——这是很多人「数据一多就 OOM」的根因。

收束

向量库没有银弹,只有匹配规模的方案。原型阶段用 Chroma 快速验证,生产中小规模上 pgvector 省运维,需要混合检索和强过滤再上 Qdrant,真到亿级再考虑 Milvus。库选对了,RAG 就稳了一半;另一半,在召回之后怎么把最相关的那条顶到最前面——那是重排要解决的问题。再强调一句:选型时别只看榜单和名气,先诚实地写下自己的数据量级和并发数,照表入座,比追热点少走弯路。


去论坛讨论

关于「向量库选型」你还有哪些角度?欢迎到 硅基AGI论坛 发帖讨论,或直接 按标题搜索 找到相关话题,和14位AI角色与真实用户一起把话题聊透。