向量数据库横评:7大开源引擎真实性能数据与选型建议

当我们为RAG系统选择向量数据库时,网上铺天盖地的”最快””最强大”宣传让人眼花缭乱。但这些营销话术背后,不同数据库在实际生产环境中的表现差异究竟有多大?近期,专注于AI技术评估的AIMultiple发布了一份重磅实测报告,对7大主流开源向量数据库进行了全面的基准测试,覆盖单线程速度、并发吞吐量、内存占用、过滤查询、混合搜索、写入性能和索引构建等7个维度。这份测试不仅给出了具体数字,还揭示了一些反直觉的结论——比如,在检索质量上,7个数据库几乎打平。

为什么公开展览的benchmark数据参考价值有限

在深入数据之前,有必要理解测试的方法论。向量数据库的核心是近似最近邻(ANN)搜索,通过调整搜索参数(ef或nprobe)在召回率和速度之间做权衡。问题在于,如果固定同一个参数值去比较两个数据库,可能并不公平——其中一个可能用了更高的搜索精度来换取速度。

这份基准测试采用了一种更科学的做法:将每个引擎的参数调到相同召回率水平(Recall@10 = 0.95)后再比速度。这样一来,速度的差异就真正反映了数据库本身的效率高低,而非参数设置的花招。测试使用了bge-m3嵌入模型(1024维,余弦相似度),在MedRAG-50k(5万条医学问答数据,154个查询)和TechQA-28k两个真实数据集上验证,同时还有一轮225万向量的大规模测试。

单线程性能:7倍差距,但无关紧要

在单线程、相同召回率设定下,7个数据库的吞吐量差异相当惊人。Redis以764 QPS拔得头筹,随后是Qdrant(377)、Milvus(342)、Weaviate(341)、pgvector(257)、Chroma(197),最后是LanceDB(70)。从第一名到最后一名,相差近11倍。

单线程 QPS 对比(Recall@10=0.95)

不过,作者特别指出一个关键点:对于大多数RAG应用来说,这个差距其实没那么重要。RAG系统的性能瓶颈通常不在向量检索,而在LLM生成环节——一次向量搜索可能只需几毫秒,但LLM生成答案可能需要几秒甚至十几秒。向量搜索从15ms优化到8ms,对于整个系统而言几乎是感知不到的。

真正值得关注的,是不同数据库在特定场景下的适用性。举个例子,如果你的系统需要低延迟的单一查询响应(比如面向终端用户的实时问答),Redis的低延迟优势就很有价值;但如果需要高并发吞吐量(比如后台批量处理),就需要看并发测试的结果。

并发性能:Weaviate称王,Redis掉队

单线程只能说明单个查询有多快,生产环境更关心多用户并发下的整体吞吐量。测试用32核CPU、1到512个并发请求来模拟真实场景,结果让人大跌眼镜。

高并发峰值吞吐量对比(32 进程)

在高并发场景下,Weaviate从单线程的垫底位置逆袭,一跃达到8330 QPS的峰值,超过了所有对手。Milvus以5063 QPS位居第二,pgvector也有4832 QPS的表现。Redis虽然单线程最快,但在高并发下反而表现最差——这与它的架构设计有关,RediSearch的查询线程池默认关闭,在高并发下无法充分利用多核。

这个结果对国内开发者很有参考价值。如果你计划在K8s集群上部署RAG服务,需要考虑数据库的横向扩展能力。Weaviate和Milvus在这种场景下明显更适合。

内存占用:Milvus在大规模下最省钱

在5万向量规模下,各数据库的内存占用差异巨大:Redis仅需559 MB(但关闭了持久化),Chroma需要1.8 GB,pgvector约2 GB,Weaviate约1.2 GB,Milvus最高达3.3 GB。

但到了225万向量规模,情况发生了翻转:Milvus反而最节省内存,只用17 GB,而Chroma暴增到62.4 GB。这是因为Milvus采用了类似DiskANN的架构,将索引卸载到磁盘,而其他全内存数据库的内存消耗随数据量线性增长。

这个发现对成本敏感的项目非常重要。国内很多团队使用云服务器自建向量检索服务,选择Milvus可以在大规模数据下显著降低内存成本。但如果数据量较小(50万向量以内),Redis的低内存优势则更为突出。

过滤查询:被忽视的性能杀手

很多RAG系统会结合元数据过滤(比如按时间、类别筛选后再向量搜索),但这个场景在大多数基准测试中被忽略了。测试发现,过滤查询对性能的影响远超预期。

在带元数据过滤的查询中,最差情况下的召回率保持在0.968(Redis)到1.00(Weaviate、pgvector、LanceDB)之间,召回率本身不是问题。但过滤后的吞吐量差距巨大:Milvus在各种过滤选择性下都能保持268到732 QPS,而Chroma和pgvector只有10到56 QPS——相差40倍以上。

对于需要频繁使用元数据过滤的RAG应用(如多租户系统、按时间范围检索等),Milvus和Weaviate是更稳妥的选择。

混合搜索:向量+关键词的协同效应

现代RAG系统越来越倾向于混合搜索——既做向量相似度匹配,又做BM25关键词匹配,然后通过倒数排名融合(RRF)合并结果。测试发现,混合搜索可以显著提升检索质量,nDCG提升幅度从0.030到0.067不等。

各引擎的原生混合搜索能力差异很大:

  • Qdrant:原生融合,nDCG提升+0.067(最大),134 QPS
  • Milvus:原生融合,最快340 QPS
  • pgvector:客户端融合,仅12 QPS(最慢)
  • Chroma:开源版完全没有关键词搜索功能
  • 如果你的RAG系统需要处理大量短查询和关键词匹配,原生混合搜索能力是关键考量。

    写入与实时更新:Redis和Milvus最擅长

    真实的RAG知识库需要持续更新——新增文档、修改内容、删除过期数据。测试模拟了持续写入场景,结果显示:

  • 单行写入吞吐量:Redis达到144 QPS,Milvus达到149 QPS,而LanceDB只有2.6 QPS,Chroma只有12 QPS——相差57倍
  • 读后写延迟(写入后多久可查询到):Redis仅2毫秒,Weaviate 4毫秒,Qdrant 9毫秒,Milvus 12毫秒
  • 删除与合并:pgvector需要53秒的VACUUM,Milvus仅需11秒
  • 对于需要高频实时更新的RAG系统(如动态知识库、用户行为分析),Redis和Milvus是首选。

    索引构建速度:13倍差距

    从零开始构建向量索引的时间差异巨大。在5万向量规模下,最快的是LanceDB(7秒),最慢的是pgvector(88秒)。到了225万向量规模,差距拉大到13倍:LanceDB和Milvus仅需7-8分钟,而pgvector需要92分钟。

    对于需要频繁重建索引的场景(如全量数据刷新),构建速度会显著影响运维体验。

    核心结论:数据库不是瓶颈,嵌入模型才是

    最重要的发现是:在相同召回率下,7个数据库的检索质量几乎相同。nDCG@10分数分布在0.803到0.817之间,差距仅为0.014。这意味着,选择向量数据库更多是选择运维特性(扩展性、写入性能、混合搜索能力),而非检索效果本身。

    更令人深思的是,当数据规模扩大到225万向量时,所有数据库的检索质量都出现了断崖式下降——nDCG@10从0.81骤降至约0.56。这不是数据库的问题,而是嵌入模型本身的局限性:正确答案被海量干扰数据淹没了。

    这也提醒国内开发者:过度优化向量数据库可能是浪费时间,把更多精力放在提升嵌入模型质量、引入重排序(Reranker)环节,可能对RAG效果提升更明显。


    小夏点评

  • 选型优先级:如果团队已经在使用Postgres,pgvector是最平滑的过渡选择;如果追求极致性能且有运维能力,Weaviate和Milvus是生产环境的首选;如果只是做原型或小规模实验,Chroma和LanceDB的入门门槛最低。
  • 避开营销陷阱:网上流传的”XX数据库比YY快10倍”大多是特定参数设置下的结果。这份实测告诉我们,在相同召回率下,各主流数据库的性能差距远没有宣传中那么夸张。把优化精力放在数据清洗、嵌入模型选择和查询改写上,回报更高。
  • 对中国IT运维/开发者的启示:国内很多团队使用云服务自建向量检索,成本控制是现实考量。Milvus在大规模下的低内存占用、原生混合搜索能力和较高的写入吞吐量,使其成为性价比较高的选择。如果你的RAG系统面临多租户、高并发、元数据过滤等复杂场景,建议优先考虑Milvus或Weaviate。

  • 原文参考

  • Vector Database Benchmark: 7 Open-Source Engines for RAG – AIMultiple, 2026年7月
  • 您可能还喜欢...

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注