最近在搭一个知识库问答系统,文档量不大,大概几万条chunk,用OpenAI embedding转成1536维向量。目前本地测试先用pgvector跑通了,查起来也还行。但看社区都在推Milvus或者Qdrant,说pgvector到后期数据量大了性能不行。我这边后续可能会加到几十万条,而且要做metadata过滤(按用户ID、时间范围过滤)。想问问大家实际生产环境里用过哪个?pgvector在什么量级下会开始明显变慢?如果迁移到Milvus,部署和运维成本会不会高很多?我是一人开发,没太多精力折腾基础设施。
RAG里向量数据库选型,用Milvus还是pgvector?有点纠结
全部回复
共 69 条几万条chunk用pgvector完全没问题,几十万条带过滤其实也还好,我生产环境跑到过百万级,只要索引调好、过滤条件走普通字段索引,延迟基本在可接受范围。Milvus部署确实费心思,尤其你一个人搞,光那些组件就够折腾的。建议先继续用pgvector,真到扛不住再换也不迟,到时候数据迁移也有成熟工具。你metadata过滤如果很频繁,倒是可以提前给那些字段建好索引试试。
几十万条加过滤的话pgvector确实悬,Milvus部署能用docker compose顶住,就是调参得花几天。
几万条chunk用pgvector完全够,我朋友在production跑过二十万条加metadata过滤,延迟还在可接受范围,主要看你的QPS和索引类型。Milvus部署确实重,但如果你后续真要上几十万条且过滤条件复杂,pgvector的filter和向量检索组合起来会有点难受。建议先压测一下pgvector,用IVFFlat或者HNSW调参看看,真到了瓶颈再考虑迁移也不迟。一个人开发的话,运维成本也得算进去。
几万到几十万这个量级,pgvector其实完全扛得住,配合HNSW索引和合适的ef_search参数,性能不会崩。我实测过50万条1536维的,带metadata过滤查询基本在几十毫秒,前提是索引和过滤字段建好。Milvus运维确实重一些,etcd、MinIO一堆组件,一个人搞有点累,你要真到几百万再考虑迁移也不迟。
几万到几十万这个量级pgvector其实扛得住,主要还是看过滤条件复杂度和QPS。我之前有个项目40万chunk加metadata过滤,单机pgvector查询基本在几十毫秒,但并发一上来就明显掉。Milvus功能强但组件多,一人维护确实累,Qdrant单二进制部署会轻不少,可以顺手试试。真要省心,先把pgvector的HNSW索引和分区调好,等真扛不住再迁也不迟。
几十万条pgvector完全扛得住,metadata过滤建好索引就行,一人开发别上Milvus折腾运维。
几万到几十万这个量级,pgvector其实没那么不堪,尤其是你已经有metadata过滤需求。pgvector配合B-tree索引做user_id和时间的预过滤,再走HNSW或IVFFlat,几十万条1536维一般还能扛,真正开始难受通常是几百万向量往上,或者QPS要求高、并发一上来内存吃紧的时候。Milvus功能确实全,但单机部署虽然能用docker-compose跑起来,调参、监控、升级这些隐形成本对一个人来说挺烦的,出问题排查也麻烦。Qdrant倒是介于两者之间,单二进制部署简单,过滤性能也不错,可以顺手试一下。我的建议是先把pgvector压测一下,用你真实的数据分布和过滤条件跑,看P99延迟和召回能不能接受,能撑就别急着换。真到了瓶颈再迁,向量和metadata都能导出,迁移成本没想象中高,反倒是过早引入一套分布式组件更耗精力。
几万到几十万chunk这个量级,pgvector其实完全扛得住,别被社区焦虑带偏了。我之前有个项目差不多30万条1536维的向量,Postgres 16加pgvector 0.5,建HNSW索引之后查询延迟稳定在几十毫秒,metadata过滤直接用SQL写where条件,反而比一些专用向量库的filter实现更灵活。真正开始难受大概要到几百万甚至上千万级别,或者并发QPS很高的时候,那时候索引构建和内存占用才会成为瓶颈。Milvus功能确实强,但你是单人开发,光是etcd、minio、pulsar这套依赖就够折腾的了,运维心智负担不小。Qdrant倒是轻量很多,单二进制部署,filter也做得不错,如果哪天真要换可以优先考虑它。我的建议是先把pgvector用到痛为止,毕竟你现在的瓶颈大概率不在检索层,而在chunk质量和prompt上。
几万到几十万这个量级pgvector其实扛得住,关键看你怎么建索引。HNSW加上合理的ef_search参数,几十万条带metadata过滤延迟基本在几十毫秒,真正拉胯是上千万以后的事。你一人开发的话,Milvus那套etcd+minio+集群的运维确实够折腾,不如先压测下pgvector的实际表现再决定。Qdrant单机部署比Milvus轻不少,也可以当备选看看。