向量数据库

Qdrant、Weaviate 与 Chroma:三条中间路线

进阶系统架构约 30 分钟kp-021

前置知识

一句话定义

在"重分布式 Milvus"与"关系库 pgvector"之间,Qdrant、Weaviate、Chroma 代表三条中间路线:Qdrant 以过滤与量化见长的 Rust 单二进制、Weaviate 以模块化混合检索见长的 Go 平台、Chroma 以开发者体验见长的 Python 原生嵌入式——三者覆盖了中小规模向量库的大部分选择空间。

为什么重要

真实项目最常落在"百万~千万级、单机到小集群"区间,恰是这三家的主场。它们的设计取舍(语言、部署形态、过滤实现、混合检索定位)是理解"向量库产品差异化"的最佳样本:同样是 HNSW,包装出的产品性格完全不同。

前置知识

kp-018(谱系地图)、kp-008(HNSW 共同内核)、kp-014(过滤策略——Qdrant 的招牌差异点)。

核心概念

原理与机制

三者共享 HNSW 内核,差异在"向量检索之外"的每一层:

维度QdrantWeaviateChroma
语言/形态Rust/单二进制+分布式Go/服务端+模块Python/嵌入式+服务端
招牌能力过滤性能、量化全套混合检索、模块生态极低上手成本
过滤filterable HNSW+基数估算where 过滤+倒排metadata 过滤(较基础)
混合检索稀疏向量+融合 API原生 BM25+向量 alpha依赖外接或新版本功能
量化SQ/PQ/二进制+rescoring有限(压缩选项演进中)无(依赖外部)
分布式原生分片副本原生(企业版能力分层)单机/轻量服务端为主
典型规模千万~亿级千万~亿级十万~百万级

选型心法:按主导 workload 反推——过滤复杂/低选择率高 → Qdrant(filterable HNSW 是实打实的工程差异,见 kp-014/017);需要一站式混合检索与 rerank 编排、模型可插拔 → Weaviate;原型验证、Notebook 工作流、小团队无运维 → Chroma。三者都可先单机后扩容,但分布式成熟度与多租户能力上 Qdrant/Weaviate 更接近 Milvus 形态。

公式或模型

本节不适用:产品对比篇;性能数字一律以自建评测(kp-025)为准,本文不引用第三方跑分。

图示

轻 ◄──────────────────────────► 重 (运维复杂度)
Chroma ──────► pgvector ──────► Qdrant/Weaviate ──────► Milvus 分布式
(嵌入式)        (关系库)          (专用单机→小集群)        (云原生全家桶)
   │              │                    │                     │
 原型/Notebook   已有PG/事务          中大规模独立部署        十亿级/多租户/强扩展

实例或案例

法律文书检索(500 万段、权限过滤苛刻、专名多):选 Qdrant——低选择率的 org+权限 过滤走 filterable HNSW(kp-017 陷阱 2 的标准出口),BM25 腿用其稀疏向量或外接 ES 后 RRF(kp-016)。
多模态素材平台(图片+文本,想内嵌 CLIP 向量化与 rerank):选 Weaviate 的 module 生态,少写一整套向量化服务。
高校课程项目/内部小工具(5 万条 FAQ):Chroma 三行代码起步,一天出 demo;上生产前按 kp-027 决策树复核规模与可用性要求。

直观类比

Qdrant 是"精密瑞士军刀"——单件工具做到极致(过滤/量化),需要自己组装刀架(生态要外接);Weaviate 是"集成灶"——向量器、rerank、混合检索预装联动,厨房(检索管线)一站式;Chroma 是"便携电煮锅"——宿舍(Notebook)里最快开饭,宴席(大规模生产)另请后厨。

常见误区

  1. "三家随便选,反正都是 HNSW"——过滤、量化、混合检索的实现深度差异会转化为 3~10 倍的性能/质量差(尤其过滤场景),必须按主导 workload 选。
  2. "Chroma 不能上生产"——准确说法是"适合中小规模与轻可用性要求的生产";需要分布式、强过滤时它不是对的工具,而非它"不能"。
  3. "用厂商跑分做决策"——数据分布、维度、过滤模式不同,跑分不可迁移;唯一有效数字出自 kp-025 的自建评测。

自测题

  1. 低选择率过滤场景为何优先 Qdrant?
  2. 答:其 filterable HNSW 做了过滤感知遍历与基数估算(按选择率自动选执行策略),正是 kp-017 陷阱 1/2 的系统性解法。

  3. Weaviate 的 module 体系解决了什么痛点?
  4. 答:把向量化(embedding 调用)、rerank 等环节以可插拔模块内置,省去自建"模型服务+检索编排"的胶水层,混合检索一个 API 完成。

  5. 从 Chroma 原型迁移到生产前,必须补测的三件事?
  6. 答:目标规模下的 p99/QPS(含并发爬坡)、过滤选择率分桶的召回、备份与高可用方案——对应 kp-025 评测与 kp-029 容量设计。

与其他知识点的关系

kp-018 把三者放回谱系;kp-020 是同区间的关系库对照;本篇结论最终汇入 kp-027 的选型决策树。

延伸阅读

Qdrant / Weaviate / Chroma 官方文档(开源项目)——过滤实现、量化选项与部署形态以官方最新文档为准;本文只固定其设计定位与取舍逻辑。

相关知识点