Qdrant 向量数据库综合解析

5 阅读3分钟

1. Qdrant 简介

Qdrant 是一个高性能的 向量数据库(Vector Database) ,专注于 近似最近邻搜索(ANN, Approximate Nearest Neighbor)多向量 / 多条件混合召回,广泛用于文本、图像、音频等多模态检索场景。

核心特性:

  • 支持多向量字段(text vector、image vector 等)
  • 支持 metadata(payload)过滤
  • 高性能 ANN 索引(HNSW / Flat)
  • 支持多向量混合召回(score fusion)
  • 可扩展到百万级甚至亿级向量

2. Metadata(Payload)检索

2.1 Payload 定义

Qdrant 中,每条向量记录除了向量本身,还可以携带 JSON 形式的 metadata(称为 payload):

{
  "id": 123,
  "vector": [...],
  "payload": {
    "category": "sports",
    "language": "en",
    "tags": ["basketball", "nba"],
    "timestamp": 1735461000
  }
}

支持的数据类型:

  • String / Number / Boolean / List / Timestamp / Nested JSON
  • Geo 位置数据(支持 geo search)
  • 可选轻量 full-text

2.2 Metadata 检索能力

Qdrant 支持多种 payload filter:

  • 精确匹配(match)category == "sports"
  • 数值范围(range)timestamp > 1700000000 AND timestamp < 1800000000
  • 多值包含(contains)tags contains "nba"
  • 逻辑组合(AND / OR) :组合多条件
  • 嵌套 JSON 查询profile.age > 18
  • 地理位置过滤:点在多边形内等
  • 轻量 full-text(最近版本支持)

2.3 Metadata 检索机制

  • 使用 Payload Index(Keyword / Integer / Float / Geo / Full-text)
  • 先过滤再向量搜索:过滤候选集 → 在候选集上执行 ANN
  • 高性能:位图(bitset)快速过滤,搜索复杂度接近无 filter

3. HNSW 图简介

3.1 定义

**HNSW(Hierarchical Navigable Small World Graph)**是 Qdrant 内置的 ANN 索引结构,用于高维向量快速检索。

3.2 核心原理

  • 小世界图:节点为向量,边为相似邻居

  • 分层设计:

    • 上层稀疏 → 快速远距离跳跃
    • 下层密集 → 精确局部搜索
  • 查询流程:从顶层入口 → 贪心搜索 → 层层下降 → 底层 top-k 返回

3.3 优势

  • 高召回率(>95%)
  • 支持动态插入向量
  • 查询复杂度低
  • 支持百万到亿级向量

4. 混合召回(Hybrid Retrieval)

4.1 定义

Qdrant 的混合召回是 向量检索 + metadata 筛选 +(可选)多向量融合 的组合检索方式。
不同于 Weaviate 的 keyword hybrid,Qdrant 主要是 向量 + metadata + 多向量融合

4.2 混合召回流程

  1. Metadata 过滤

    • 使用 payload index 得到 candidate IDs
    • Bitset 记录是否允许节点参与搜索
  2. 向量 ANN 搜索

    • 在 HNSW 图中动态跳过不符合 metadata 的节点(filtered traversal)
    • 获得候选的向量相似度 score
  3. 多向量融合(可选)

    • 多向量字段分别做 ANN
    • 得分归一化
    • 按权重融合:
FinalScore = Σ ( weight_i * normalized_score_i )
  1. 最终排序返回

    • 按 FinalScore 排序
    • Metadata filter 仅用于候选选择,不参与排序

4.3 关键优化

  • 动态过滤:搜索过程中直接跳过不符合 filter 的节点,无需构建子图
  • 多向量独立 HNSW 图:每个向量字段有独立索引
  • 并行 ANN 搜索 + 分数融合:融合多个向量字段结果

5. 多向量混合召回逻辑

  • 每个向量字段有独立 HNSW 图,维度和距离函数可不同

  • 查询时可指定:

    • 单向量搜索 → 指定 vector field
    • 多向量融合 → 指定多个 vector field + 权重
  • 内部流程:

    1. 每个向量字段分别做 ANN
    2. 归一化分数
    3. 按权重融合
    4. 排序返回

注意:不构建统一图,也不动态构建子图,性能高且可扩展。

6. 性能特点

  • Metadata filter 命中率 20% → 性能下降 <10%
  • 命中率小 → 搜索更快(搜索空间小)
  • 支持百万到亿级向量库
  • 动态插入向量无需重建索引

7. 总结

Qdrant 的混合召回体系是:

  1. 多向量独立 HNSW 图 → 高维 ANN
  2. Metadata 先过滤 → 动态跳过不符合节点
  3. 可选多向量融合 → weighted sum 得分
  4. 最终排序 → 高性能混合召回

适用场景:

  • 文本 + 图像多模态检索
  • 分类 / tag + 向量混合筛选
  • 大规模知识库 / 推荐系统 / RAG 系统