向量数据库怎么选?Qdrant/Milvus/Supabase 对比

2026-06-17

RAG 知识库绕不开一个问题:向量怎么存、怎么查?这就要选一个向量数据库。市面上 Qdrant、Milvus、pgvector、Chroma 一堆名字,新手很容易被绕晕。这篇直接给结论:自己跑 demo / 小项目用 Chroma 或 pgvector,要上规模上生产用 Qdrant 或 Milvus。下面把四款拆开对比,帮你按自己的情况对号入座。

一句话选型结论

先给最直接的判断,不想看长文的看这段就够:

  • 已经在用 Postgres / Supabase → 直接上 pgvector,不引入新组件,运维成本最低。
  • 个人 demo、原型验证、几千到几万条数据Chroma,几行代码就能跑起来。
  • 要上线、数据量百万级以上、追求查询性能Qdrant,部署轻、性能强、上手快。
  • 企业级、千万/亿级向量、要分布式扩展Milvus,为大规模而生,但运维更重。

选型对比表

维度QdrantMilvuspgvector (Supabase)Chroma
定位专用向量库,性能/部署平衡企业级分布式向量库Postgres 扩展,复用现有库轻量嵌入式,开发者友好
适合规模百万~亿级千万~十亿级万~百万级几千~几十万级
易用度高,API 清晰中,组件较多很高(会 SQL 就会)很高,几行代码起步
部署形态自托管 / 云自托管 / 云(Zilliz)随 Postgres / Supabase 云本地 / 自托管
运维负担重(依赖较多)几乎为零(已有库的话)极轻
过滤+向量混合查询强(SQL 天然支持)一般
成本特点自托管省钱,云按量大规模摊薄好,小规模偏重边际成本近乎零免费自托管

表中具体的性能基准、价格档位会随版本变化,以各家官方文档为准,这里只给相对量级和适用判断。

先搞懂索引原理,选型才不会拍脑袋

四款背后基本都用同一套索引思路:HNSW(分层可导航小世界图),Milvus 额外支持 IVF 系列。搞懂几个关键参数,你才知道”性能强”到底强在哪、代价是什么:

  • m(每个节点的最大连接数):越大召回率越高,但内存占用和构建时间也越高。Qdrant/Milvus 默认多在 16 左右,百万级以内够用;如果你的召回率总卡在 90% 以下,先试着把 m 调到 32 再看效果,别急着换库。
  • ef_construction(建索引时的搜索宽度):只影响建库速度和索引质量,不影响查询期延迟。写入量大、追求高召回时可以调到 200 以上,代价是建库变慢。
  • ef / ef_search(查询时的搜索宽度):这个才是直接影响你线上查询延迟和召回率的旋钮。默认值往往是为了演示好看设的比较小,生产环境建议自己压测,在延迟和召回率之间找平衡点——从 64 开始往上加,边加边看 P99 延迟涨了多少。
  • 量化(Quantization):Qdrant 和 Milvus 都支持标量量化(Scalar Quantization)、乘积量化(PQ)把 float32 向量压缩成 int8 甚至更小,能省 4 倍以上内存,代价是召回率略降几个百分点。千万级以上向量、内存吃紧时这是必开选项,几千条的小项目完全不用管。

这几个参数不是配置项摆设——同一个库,参数没调对,“性能强”和”性能一般”能差出几倍延迟。选型只是第一步,调参才是决定生产体验的第二步。

逐款简评

Qdrant——用 Rust 写的专用向量数据库,部署轻、查询快、API 干净。单机就能扛百万级向量,带过滤的混合查询做得很好,文档清晰。短板是生态比 Postgres 系小,需要额外维护一个服务。适合:要上生产、又不想背 Milvus 那套重组件的中小团队。

Milvus——为超大规模而生的分布式向量数据库,支持十亿级向量、多种索引类型、水平扩展。后端能力是四款里最强的。短板是组件多、部署和运维偏重,小项目用它属于杀鸡用牛刀。适合:数据量极大、有专人运维、需要分布式弹性的企业。

pgvector (Supabase)——它不是独立产品,而是 Postgres 的一个向量扩展。如果你的业务数据本来就在 Postgres(或用 Supabase),装上 pgvector 就能在同一个库里存向量、做相似度检索,不用引入任何新组件,向量过滤直接用 SQL 写。短板是超大规模和极致性能不如专用库。适合:已有 Postgres 技术栈、数据量不算特别大的团队——这是性价比最高的起点。

Chroma——最轻量、最适合上手的嵌入式向量库,几行 Python 就能建库、写入、查询,本地跑零配置。短板是面向开发原型,生产级的高并发、大规模、高可用要打问号。适合:个人项目、demo、教学、RAG 原型验证。

落地怎么跑起来:四款的最短路径

选完型别只停在”我觉得该用哪个”,真正上手前先看一眼各家的起步成本,差异比想象中大。

Chromapip install chromadb,本地起一个 PersistentClient 指向文件夹,写入、查询全程不用装服务端,五分钟能跑通。缺点是本地模式不支持多进程并发写入,多个服务同时写同一个库容易踩坑,这也是它定位”原型验证”而非生产方案的原因。

pgvector:Supabase 控制台一键启用扩展即可;自建 Postgres 执行 CREATE EXTENSION vector;,建表时把某列类型设为 vector(1536)(维度要和 embedding 模型输出对齐,比如 OpenAI text-embedding-3-small 是 1536 维),查询用 ORDER BY embedding <=> query_vector LIMIT 10 做相似度排序。记得给这一列建 HNSW 索引,不建索引的话数据量一上万查询就会全表扫描,慢到没法用。

Qdrantdocker run -p 6333:6333 qdrant/qdrant 起本地实例,或用 Qdrant Cloud 免费套餐(通常有 1GB 左右额度,够跑几十万条向量的小项目)。建 collection 时指定向量维度和距离度量(cosine/dot/euclidean),几十行代码能跑通全流程。混合查询(向量相似度 + 元数据过滤,比如”只在某用户的文档里搜”)原生支持,直接在查询体里加 filter 条件,不用自己拼 SQL。

Milvus:最省事的方式是用 Zilliz Cloud 的托管版,跳过自己搭 etcd、MinIO、Pulsar 这一堆依赖组件的过程;自托管则建议用官方给的 docker-compose 一键部署。Milvus 的分区(Partition)和分片(Shard)概念是为分布式扩展设计的,小项目用不上,但了解一下有助于判断这套架构复杂度值不值得为你的数据量买单。

迁移路径:选错了怎么补救

前面说过选错能换,具体怎么换给个实操顺序,别到时候临时抓瞎:

  1. 导出原始数据:向量库存的是”向量 + 元数据(原文片段、来源、时间戳等)“,先把这些原始字段导出成 JSON 或 CSV,别只导向量数字——没有原文你没法核对迁移是否正确。
  2. 判断要不要重新嵌入:如果新库支持的向量维度和旧库一致、embedding 模型没换,直接搬运向量数值就行;如果换了 embedding 模型(比如从 OpenAI 换成开源的 BGE),必须用新模型把原文重新跑一遍嵌入,向量数值不能跨模型混用。
  3. 建新库索引结构:新库建表/建 collection 时按上一节的参数思路来一遍,尤其是维度和距离度量要跟 embedding 模型匹配(大部分场景用 cosine,个别模型建议用 dot product,看模型文档)。
  4. 批量写入 + 抽样校验:写入完成后随机抽 20~30 条原文做相似度查询,核对返回结果是否合理,别只看写入条数对不对就当成功。
  5. 灰度切流量:先让新库跑一段时间只读查询,跟旧库结果做 diff,确认没有系统性偏差再切主流量。

不换模型的话,几十万条向量的迁移往往几个小时能搞定;换模型重新嵌入则要留意 API 成本和耗时,量大建议分批跑、留好断点续传。

按需求怎么选

把选型拆成几个问题,顺着问一遍就有答案:

  1. 你现在有 Postgres 吗? 有 → 优先 pgvector,少装一个东西就少一份运维。
  2. 是练手/原型还是要上线? 练手 → Chroma 最快;上线继续往下问。
  3. 数据量多大? 百万级以内 → pgvector 够用;百万到亿级 → Qdrant;亿级以上或要分布式弹性 → Milvus
  4. 团队有没有运维人手? 没有 → 躲开 Milvus,选托管 pgvector 或 Qdrant 云。

一个常见的稳妥路径:先用 pgvector 或 Chroma 把 RAG 跑通、验证效果,数据和并发涨上来了再迁到 Qdrant/Milvus。向量库不是越重越好,匹配当前阶段才是对的。

如果你是用工作流工具搭知识库,比如走 n8n 搭 RAG 知识库(规划中)这类低代码路线,往往内置或对接了上面某一款,重点反而不在选库,而在切分、嵌入和检索调优——这部分在 RAG 是什么里讲得更细。

常见问题

向量数据库和普通数据库有什么区别? 普通数据库按精确值匹配(“等于 X”),向量数据库按语义相似度匹配(“最像这段意思的几条”)。RAG 要做的就是”找最相关的内容”,所以需要向量库或带向量能力的库。

一定要用专门的向量数据库吗?用 pgvector 行不行? 小到中等规模完全行,pgvector 在百万级以内、又已有 Postgres 的场景下是最省事的选择。只有当数据量很大、对检索延迟很敏感时,专用库(Qdrant/Milvus)的优势才明显。

Qdrant 和 Milvus 到底怎么选? 看规模和运维。百万到亿级、想轻部署选 Qdrant;亿级以上、要分布式弹性且有运维人手选 Milvus。 中小团队多数情况 Qdrant 更划算。

用哪个最省钱? 自托管开源版(Chroma、pgvector、Qdrant、Milvus)软件本身都免费,成本主要在服务器和运维。已有 Postgres 时 pgvector 的边际成本几乎为零;用云托管则按量计费,具体价格以官方为准

选错了能换吗? 能。向量库存的就是向量和元数据,迁移主要是把数据重新写入新库(必要时重新嵌入)。所以前期不必纠结,先跑通再按需迁移是合理策略。

👉 看看 AI 数字员工落地指南,或了解 数字员工搭建实战课。需要为企业落地知识库方案,欢迎找我们聊 企业服务

想系统学会用 AI?报名体系课或加入会员,照着学、照着用。