pgvector 与 Qdrant 怎么选
结论先行
已经有 PostgreSQL、数据量中等、希望减少组件和事务一致性,选 pgvector。需要大规模向量、强过滤、独立扩缩容和高性能检索,选 Qdrant。
原型阶段优先 pgvector;向量规模和数据增长到 PostgreSQL 吃力时再迁移到 Qdrant。
核心差异
| 维度 |
pgvector |
Qdrant |
| 部署 |
PostgreSQL 扩展 |
独立服务 |
| 事务 |
与业务数据同库事务 |
最终一致 |
| 规模 |
百万到千万级较稳 |
千万到亿级 |
| 索引 |
HNSW/IVFFlat |
HNSW 等 |
| 过滤 |
SQL WHERE |
payload filter |
| 运维 |
复用 PostgreSQL |
新增一个组件 |
| 扩缩容 |
跟数据库走 |
独立水平扩展 |
| 适用场景 |
已有 PG、中小规模 RAG |
大规模向量、推荐 |
怎么选
- 已有 PostgreSQL 且向量数据与业务数据强关联:pgvector。
- 数据量在百万级、查询并发不高:pgvector。
- 需要独立扩缩容和高吞吐向量检索:Qdrant。
- 需要复杂 payload 过滤和多租户:Qdrant。
- 希望减少运维组件:pgvector。
- 向量规模增长快、不想影响主库:Qdrant。
注意
- 向量维度、距离函数和归一化必须与 embedding 模型一致。
- pgvector 的 HNSW 索引构建慢且占内存,生产前评估。
- 先过滤再排序可能导致索引失效,检查执行计划。
- Qdrant 的 payload 字段要建索引,否则过滤性能差。
- 两者都要做备份和恢复演练。
相关命令