#大模型#RAG

向量数据库选型:pgvector vs Qdrant vs Milvus 实测思路

做 RAG / 语义搜索,逃不开"选哪个向量库"。本文不讲跑分榜单,讲选型逻辑:按数据规模、延迟、运维成本、混合检索四个维度,把 pgvector / Qdrant / Milvus / Chroma / Pinecone 放到真实场景里对比,给出"什么时候选谁"的明确建议。

本文要点

  • 主题聚焦:大模型、RAG
  • 适合人群:独立开发者、全栈工程师、AI 应用开发者
  • 核心价值:快速理解背景、实践路径、常见误区和工程建议
作者 @admin·发布于 2026年6月30日·更新于 2026年7月23日

做 RAG 的人,十个有九个在"用哪个向量数据库"上纠结过。市面上的横评文章大多罗列一堆 benchmark 跑分,看完更糊涂——因为脱离你的场景谈跑分,没意义。这篇不讲谁最快,讲怎么按你的场景选。

一、先问自己三个问题

选型前,先回答这三件事,答案直接砍掉一半候选:

  1. 数据规模量级? 1 万条、100 万条、还是 1 亿条?这决定了能不能用轻量方案。
  2. 谁运维? 你愿意自己搭/管一套,还是只想调 API?这决定了自建 vs 托管。
  3. 要不要混合检索(向量 + 关键词)? 生产级 RAG 几乎都要。这把"只支持纯向量"的工具排除。

带着这三问看下面。

二、五个主流选项的定位

向量库形态甜区短板
pgvectorPostgreSQL 扩展已有 PG、中小规模、要和业务数据一起查超大规模(千万级以上)召回延迟和索引构建偏弱
Qdrant独立服务(Rust)中大规模、低延迟、过滤强多了一个服务要运维
Milvus分布式(Go/C++)海量(亿级)、高吞吐、可分布式运维复杂、资源占用大
Chroma嵌入式原型、本地、小项目规模/性能天花板低,不适合生产高负载
Pinecone全托管 SaaS不想运维、要弹性、企业级贵、数据出境/合规、供应商锁定

注意它们不是互斥的——很多团队是"开发用 Chroma/pgvector,生产上 Qdrant"。

三、按场景给结论

场景 A:个人项目 / 内部工具 / 数据 < 100 万

→ pgvector。如果你已经在用 PostgreSQL,别犹豫。一个扩展 CREATE EXTENSION vector 就有向量检索,还能和业务表 JOIN("只在我自己写的、未发布的笔记里做语义搜索"这种过滤,pgvector 一条 SQL 搞定,纯向量库要折腾 metadata 过滤)。

100 万条以内、召回延迟几十毫秒,pgvector 完全够用。混合检索用 PG 自带的全文检索 + RRF 融合,零额外组件。

场景 B:中等规模(百万–千万)、要低延迟和强过滤

→ Qdrant。Rust 写的,延迟稳、内存占用友好,payload 过滤(按 metadata 筛选再向量检索)是强项——这恰好是生产 RAG 最常用的模式。单机扛千万级轻松,集群也有。API 顺手,Docker 一行起。

场景 C:海量(亿级)、高写入、要分布式

→ Milvus。当你真的到了亿级向量、或者写入吞吐高到单机扛不住,Milvus 的分布式架构是正确选择。代价是部署运维重(etcd/MinIO/依赖一堆),小团队吃不消。不到这个量别上——杀鸡用牛刀,运维成本远超收益。

场景 D:不想运维、要弹性、预算够

→ Pinecone(或同类托管向量服务)。调 API 就行,弹性扩容、不用管索引重建。适合企业里"快速上线、不想养基础设施"的团队。注意:贵(按 pod/用量计费),数据出境合规要确认,且锁定供应商。

场景 E:原型 / 本地实验

→ Chroma 或干脆 SQLite + sqlite-vec。几行代码起来,不用起服务。只在原型阶段用,上了规模/生产就迁走。

四、被忽视的选型维度:混合检索的支持度

生产 RAG 几乎都需要向量 + 关键词混合检索(纯向量召回精确串不行)。各库对它的支持差异很大:

  • pgvector:配 PG 全文检索,原生融合(同一库,一条 SQL)。
  • Qdrant:支持稀疏向量(sparse vectors),可在同一库做 dense + sparse。
  • Milvus:支持混合检索。
  • Chroma / Pinecone:混合检索支持相对弱或需外挂。

如果你确定要混合检索(应该要),这一项就能砍掉几个候选。

五、一个务实的迁移路径

很多人卡在"选错了以后迁移难"。其实向量库的抽象层很薄,建议:

  • 业务代码只依赖一层抽象接口(search(query, k) → hits),底层是 pgvector 还是 Qdrant 实现细节。
  • embedding 向量是标准资产——它和具体向量库无关,迁库时向量可复用,只需重新灌入。
  • 数据源(原始文档)始终保留,迁库最坏情况是从原始文档重建索引,不是灾难。

这样从 pgvector 起步,到了瓶颈再迁 Qdrant/Milvus,成本可控。

六、别踩的坑

  1. 盲目追"最快的"。 向量检索在 RAG 全链路里通常不是瓶颈,切分和 rerank 影响更大。为一个快 5ms 的库换一套运维体系,得不偿失。
  2. 忽视过滤性能。 很多真实查询是"带过滤的向量检索"(只查某个用户/某个时间段)。有些库过滤后性能暴跌,benchmark 看不出来。
  3. 过度分布式。 单机能搞定的量,别上分布式。分布式向量库的运维复杂度是指数级上升的。

小结

向量库选型的正确姿势:先定场景(规模/运维/混合检索),再选库。

  • 已有 PG、中小规模 → pgvector
  • 中大规模、要延迟和过滤 → Qdrant
  • 亿级、高吞吐 → Milvus
  • 不想运维、预算够 → Pinecone
  • 原型 → Chroma / sqlite-vec

最被低估的是 pgvector——大多数项目的数据量根本没到它的天花板,却一开始就上了更重的向量库,平添运维负担。从一个你能轻松 hold 住的方案起步,业务真的需要时再升级,比一上来就"为未来设计"聪明得多。

Related

相关推荐