最近在搭一个知识库问答系统,用的是开源embedding模型转向量,然后存起来做相似度检索。看了一圈,发现大家都在推向量数据库(像Milvus、Qdrant),但也有不少人说ES的kNN功能其实够用了。我现在数据量大概几百万条,要求是毫秒级响应,还得支持复杂的过滤条件(比如按用户ID、时间范围筛)。有点纠结:如果直接用ES,是不是省掉一套运维?但听说向量数据库在高并发和召回率上更稳?有没有用过的老哥说说,实际生产环境里,这俩的差距到底有多大?另外,如果选了向量库,和原来的关系型数据库怎么配合比较合理?
楼主
8天前
向量数据库和ES都能做语义搜索,实际项目里到底怎么选?
请 登录 后发表回复
全部回复
共 21 条
2楼
5小时前
几百万条这个量级,ES的kNN其实完全能扛,尤其你还带用户ID、时间这种硬过滤条件,ES那边filter和search走同一个段,省一次网络往返。不过真要上高并发,比如每秒几百个查询,ES的瓶颈在内存和段合并,召回率倒不是问题,主要看你的embedding维度。我建议先压测ES,扛不住再上向量库,不然多一套Milvus还得同步数据,运维成本直接翻倍。至于和关系库配合,我一般是业务数据放MySQL,向量和元数据都扔向量库,按需回表查细节,别搞双写,容易出脏数据。