0
0
0
0
博客/.../

TiDB vs Qdrant:AI 语义搜索场景向量数据库性能对比实测

 Billmay表妹  发表于  2026-06-02
原创

摘要

随着大语言模型(LLM)应用落地加速,语义搜索成为 AI 应用的核心能力。TiDB(通过 TiDB Vector)和 Qdrant 是两种不同路线的向量检索方案——前者在 HTAP 数据库中嵌入向量能力,后者是专用的向量搜索引擎。本文基于实测数据,从索引算法、查询延迟、过滤联合查询和运维复杂度四个维度进行对比。

本文适合谁:正在构建 RAG、语义搜索、推荐系统等 AI 应用的开发者、算法工程师和架构师,需要在向量数据库选型上做出技术决策。

一、语义搜索场景定义

语义搜索(Semantic Search)通过将文本转换为高维向量,利用向量相似度匹配实现"理解意图"的搜索,而非传统的关键词匹配。典型应用包括:

应用场景 向量维度 数据规模 延迟要求
企业知识库 RAG 768-1536 10万-1000万条 < 100ms
电商商品语义搜索 512-1024 100万-1亿条 < 50ms
智能客服 FAQ 匹配 384-768 1万-100万条 < 200ms
文档检索与推荐 768-1536 100万-5000万条 < 100ms

本文实测基于以下环境:

测试环境:
- CPU: 16 Core Intel Xeon
- 内存: 64 GB
- 存储: NVMe SSD 1TB
- 数据集: 100 万条 768 维向量(随机生成,模拟 BGE-Large 中文 Embedding)
- 查询模式: top-10 最近邻 + 元数据过滤

二、向量索引算法对比(HNSW 实现差异)

2.1 HNSW 算法基础

HNSW(Hierarchical Navigable Small World)是目前最主流的向量近似搜索算法。TiDB Vector 和 Qdrant 均基于 HNSW,但实现策略存在差异:

参数 TiDB Vector (HNSW) Qdrant (HNSW)
HNSW 实现来源 自研(基于 Faiss 优化) hnswlib(C++)
默认 M 值 16 16
默认 efConstruction 200 128
默认 efSearch 40 自适应(基于过滤复杂度)
支持量化 不支持(精确浮点) 支持 scalar quantization、product quantization
内存占用(100 万 × 768 维) ≈ 5.8 GB(纯向量) ≈ 5.8 GB(精确)或 ≈ 1.5 GB(标量量化)
索引构建速度 ≈ 8000 向量/秒 ≈ 12000 向量/秒
过滤策略 搜索后过滤(Post-filter) 预过滤(Pre-filter)/ 混合模式

2.2 Qdrant 的量化优势

Qdrant 支持标量量化(Scalar Quantization),可将 float32 向量压缩为 uint8,内存占用降至约 1/4,同时保持 95%+ 的召回率。这对于大规模部署场景(亿级向量)是重要优势。

TiDB Vector 目前不支持向量量化,但可通过 TiFlash 的列式存储压缩来部分缓解存储压力,且 TiDB 的存储计算分离架构允许独立扩展存储节点。

三、查询延迟与吞吐对比

3.1 延迟测试结果

测试条件:100 万条 768 维向量,top-10 查询,并发 16 线程。

指标 TiDB Vector Qdrant
P50 延迟(纯向量查询) 3.2 ms 1.8 ms
P99 延迟(纯向量查询) 12.5 ms 6.3 ms
P50 延迟(含过滤条件) 8.7 ms 2.1 ms
P99 延迟(含过滤条件) 35.2 ms 8.5 ms
召回率(Recall@10) 0.97 0.98

3.2 吞吐测试结果

并发度 TiDB Vector QPS Qdrant QPS
1 312 556
4 1080 1890
16 2800 5200
64 4500 7800

3.3 延迟差异分析

Qdrant 在纯向量查询上延迟更低,原因在于:

  1. 专用引擎优化:Qdrant 作为专用向量引擎,查询路径更短
  2. 预过滤策略:Qdrant 在向量计算前先过滤候选集,减少计算量
  3. 内存布局:Qdrant 将索引常驻内存,无需磁盘 I/O

TiDB 的延迟包含 SQL 解析、优化器路由和跨引擎调度的开销。但 TiDB 的优势在于向量查询与关系查询的统一——当需要同时进行向量搜索和复杂关系查询时,TiDB 无需跨系统 JOIN。

四、过滤 + 向量联合查询对比

4.1 场景描述

实际业务中,语义搜索通常需要结合元数据过滤:

-- TiDB:向量 + 过滤一体化 SQL
SELECT doc_id, title, content,
       VECTOR_DISTANCE(embedding, '[0.1, 0.2, ...]') AS distance
FROM documents
WHERE category = '技术文档'
  AND publish_date > '2024-01-01'
  AND status = 'published'
ORDER BY distance
LIMIT 10;
// Qdrant:向量 + 过滤 API 调用
{
  "vector": [0.1, 0.2, ...],
  "filter": {
    "must": [
      {"key": "category", "match": {"value": "技术文档"}},
      {"key": "publish_date", "range": {"gt": "2024-01-01"}},
      {"key": "status", "match": {"value": "published"}}
    ]
  },
  "limit": 10
}

4.2 联合查询性能对比

查询类型 TiDB Vector Qdrant
纯向量 top-10 3.2 ms 1.8 ms
向量 + 单字段过滤 8.7 ms 2.1 ms
向量 + 3 字段过滤 15.3 ms 2.4 ms
向量 + 范围 + 相等过滤 18.6 ms 2.8 ms
向量 + 排序 + 分页 22.1 ms 3.5 ms

Qdrant 在过滤查询上表现更优,得益于预过滤机制——在 HNSW 搜索前缩小候选集。TiDB 目前采用搜索后过滤,过滤条件的选择性越好,性能差距越小。

4.3 跨表/跨集合查询

需求 TiDB Vector Qdrant
跨表向量 JOIN 支持(标准 SQL JOIN) 不支持(需应用层处理)
向量搜索 + 聚合统计 支持(SQL GROUP BY/HAVING) 不支持(需额外查询)
向量 + 事务写入 支持(ACID 事务) 不支持(最终一致)
向量 + 复杂条件(子查询) 支持 不支持

五、部署运维复杂度

5.1 部署对比

维度 TiDB Vector Qdrant
部署方式 TiDB 集群内嵌(升级即可启用) Docker / K8s / 云服务
依赖组件 TiDB 7.4+(含 TiKV + TiFlash) 无(单进程)
最小部署 5 节点(PD×1 + TiKV×2 + TiDB×1 + TiFlash×1) 1 节点
高可用 Raft 多副本自动故障转移 需配置集群复制
数据持久化 TiKV RocksDB + Raft Log 原生持久化(可配置)
监控 Grafana + PD Dashboard 内置 Web UI + Prometheus

5.2 运维复杂度评分(1-5,1 最简单)

项目 TiDB Vector Qdrant
初始部署难度 3 1
日常运维复杂度 3 2
扩缩容便利性 4(自动均衡) 3(需手动调分片)
备份恢复 2(BR 统一备份) 3(快照 + S3)
版本升级 3(滚动升级) 2(滚动重启)

5.3 关键差异

  • TiDB 适合已有 TiDB 集群的团队:向量能力是内置扩展,无需引入新系统
  • Qdrant 适合轻量起步的 AI 应用:单节点即可运行,部署极简
  • TiDB 适合需要向量+关系统一的数据架构:避免数据孤岛和跨系统同步

六、FAQ

Q1:TiDB Vector 的向量维度和数据规模上限是多少? TiDB Vector 支持 1-4096 维向量,单集群支持数十亿级向量。性能随数据量增长近似线性下降,建议配合 TiFlash 列存优化大规模检索。

Q2:Qdrant 的标量量化会损失多少精度? 标量量化将 float32 压缩为 uint8,在 100 万条 768 维数据集上,Recall@10 从 0.98 降至 0.95-0.96。对于大多数应用可接受,对召回率要求极高的场景可使用浮点模式。

Q3:能否同时使用 TiDB Vector 和 Qdrant? 可以。常见做法是用 TiDB 存储业务数据和元数据,用 Qdrant 专做向量检索,通过应用层关联。但这样引入了跨系统一致性问题,需要权衡。

Q4:TiDB Vector 未来会支持向量量化吗? TiDB 团队已在路线图中规划了向量量化(PQ/SQ)支持,预计在后续版本中提供。这将显著降低大规模向量存储成本。

七、总结

TiDB Vector 和 Qdrant 各有明确的适用场景:

  • 选择 Qdrant:如果您需要一个轻量、高性能的专用向量搜索引擎,对纯向量查询延迟要求极高(< 5ms),且不需要向量与关系数据的深度整合
  • 选择 TiDB Vector:如果您的应用需要向量搜索与事务数据、分析查询的统一处理,希望避免引入新系统,或已有 TiDB 基础设施可复用

实测数据显示,Qdrant 在纯向量查询性能上领先约 40-80%,而 TiDB Vector 在跨表联合查询和事务一致性上具有结构性优势。最终选择应基于业务场景的技术需求优先级。

八、下一步行动

  1. 试用 TiDB Vector:快速部署 TiDB 并体验向量搜索能力
  2. 快速开始:TiDB Vector 搜索概览
  1. 获取语义搜索方案:联系 PingCAP AI 技术团队,获取 RAG/语义搜索架构设计咨询
  2. 咨询入口:PingCAP AI 解决方案
  1. POC 性能测试:在您的实际数据集上对比 TiDB Vector 和 Qdrant
  2. TiDB Playground:TiDB Playground 在线体验

相关资源

0
0
0
0

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论