内容提要
文章比较了pgvector与专用向量数据库。pgvector是Postgres扩展,可在同一数据库内同时存储向量与关系数据,支持多种向量类型和距离函数。作者用Docker在本地对pgvector和Qdrant做基准测试,但10万向量的规模太小,难以得出结论。文章引用Tiger Data的5000万向量生产级测试:在99%召回率下,pgvector配合pgvectorscale吞吐达471 QPS,远超Qdrant的41 QPS;但Qdrant尾延迟更优,p99为38.71ms对74.60ms,索引构建也快约3.4倍。结论:千万级以下、需要事务一致性的场景选pgvector;超大规模、严格尾延迟SLA或零运维需求的场景选专用数据库。
延伸解读
本地基准的局限:规模太小,结论有限
文章用Docker在本地对pgvector和Qdrant做了10万向量的基准测试,但作者明确指出这个规模太小,难以得出生产结论。在笔记本电脑上,两者延迟都在低个位数到几十毫秒,差异不明显。本地测试更适合验证配置和熟悉流程,而非选型依据。真正需要关注的是数据量和查询负载增长后的表现,这需要生产级测试数据。
生产基准的关键前提:pgvector需搭配pgvectorscale
文章引用的Tiger Data 5000万向量测试中,pgvector一方实际是pgvector加pgvectorscale(Timescale的扩展,引入StreamingDiskANN索引),而非原生pgvector。这一区别在二手报道中常被模糊,但直接影响数字解读:471 QPS的吞吐优势来自组合方案。读者在参考该基准时,需注意自己是否愿意引入额外扩展。
吞吐与尾延迟的权衡:没有全面赢家
在99%召回率下,pgvector组合方案吞吐达471 QPS,远超Qdrant的41 QPS;但Qdrant的p99延迟为38.71ms,优于pgvector的74.60ms,索引构建也快约3.4倍。两者各有胜负,选择取决于工作负载更看重吞吐还是尾延迟。文章强调,双方在5000万向量规模下所有百分位延迟均低于100ms,这本身已打破“通用数据库撑不住”的假设。
选型分界线:规模、一致性与运维能力
文章给出具体分界:约500万到1000万向量以下、需要关系数据与向量的事务一致性、已有Postgres运维经验且并发中等的场景,pgvector足够。数亿到数十亿向量、严格尾延迟SLA(如p99需低于25-40ms)、需要GPU加速索引或零运维托管时,才应考虑专用数据库。选型应基于实际工作负载,而非厂商宣传。
Q&A
pgvector 和专用向量数据库在架构上有什么根本区别?
pgvector 是 Postgres 的开源扩展,直接在现有数据库内添加向量列类型和近似最近邻搜索,向量与关系数据存储在同一张表、同一行中,无需单独服务或网络跳转。专用向量数据库则是独立进程、专用存储引擎,围绕向量搜索从头设计,需要单独部署、监控、备份并与源数据同步。
在生产环境基准测试中,pgvector 和 Qdrant 的吞吐量与延迟表现如何?
根据 Tiger Data 的 5000 万向量测试(99% 召回率),pgvector 配合 pgvectorscale 吞吐达 471.57 QPS,远超 Qdrant 的 41.47 QPS;但 Qdrant 尾延迟更优,p99 为 38.71ms 对 74.60ms,且索引构建快约 3.4 倍(3.3 小时对 11.1 小时)。两者 p50 接近(31.07ms 对 30.75ms)。
在什么情况下应该选择 pgvector 而不是专用向量数据库?
当向量规模在 500 万到 1000 万以下、需要关系数据与向量的事务一致性(如原子更新文档和向量)、已有 Postgres 运维经验、查询并发量中等时,pgvector 是更合适的选择,只需添加扩展和索引,无需引入新系统。
哪些场景下专用向量数据库是更好的选择?
当向量规模达到数亿到数十亿、有严格的尾延迟 SLA(如 p99 需低于 25-40ms)且并发过滤搜索繁重、需要 GPU 加速索引(选 Milvus)、或团队希望零运维的全托管服务(选 Pinecone)时,专用向量数据库更合适。
如何在自己的机器上对 pgvector 和 Qdrant 进行基准测试?
使用 Docker 分别启动 pgvector(官方镜像 pgvector/pgvector:pg17)和 Qdrant(qdrant/qdrant),创建相同维度和距离度量的集合,生成 10 万个归一化向量并加载,构建参数一致的 HNSW 索引(m=16, ef_construction=64),然后用 200 个新查询向量测量 p50、p95、p99 延迟和 QPS。
本地小规模基准测试的结果能直接用于生产决策吗?
不能。文章指出,10 万向量在笔记本电脑上的测试只能帮助理解机制和验证设置,规模太小,两者延迟都在低个位数到几十毫秒,差异不明显,无法得出生产结论。真实决策需要参考生产规模(如 5000 万向量)的基准数据。