[请教]pgvector 的性能问题 - V2EX
fox0001
·
2025-05-17
·
via PostgreSQL
这是一个创建于 394 天前的主题,其中的信息可能已经有所发展或是发生改变。
背景:
- 创建了一个商品推荐系统,商品信息按对应的分类( 100 个左右)生成不同维度的向量,并且按分类创建表(就是 100 个左右的表),保存商品的向量。
- 向量的索引采用
hnsw,向量类型halfvec,m取 16 ,ef_construction为 100 ,距离计算L2 distance。
- 连接 PostgreSQL 的驱动采用
asyncpg,即基于 Python 异步 IO 的驱动。
- PostSQL 和 pgvector 参数全部默认。
问题:
使用 48 个不同分类的向量,分别搜索对应分类的相似商品向量。异步 IO 同时发送 48 个查询向量的 SQL 时,查询很慢,约 700ms~1600ms ,而且 48 个查询几乎同时返回。
简单优化:
改为每次同时发送 4 个查询,约 200ms 完成 48 个查询。
疑问:
- PostgreSQL 的并发查询能力应该没这么差,是不是参数未调优?
- 还是 pgvector 的问题?其向量查询的并发处理能力不足?
 |
|
1
nasmatic 2025 年 5 月 17 日
pg 的向量查询我记得是适用小规模的。你可以把数据导入 milvus,Qdrant 对比试试
|
 |
|
2
fox0001 2025 年 5 月 18 日 via Android
@nasmatic #1 每个表数据不多,最多那个是 10 万级别,其它都是 1 万级别或以下。 已试过 Milvus ,没有问题。
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。