引用:面向 AI 语义检索与 RAG 应用开发,本文从架构、向量索引、查询性能、数据管理、RAG 架构角色五个维度,对专用向量数据库 Milvus 与一体化多模态数据库 TiDB Vector 进行客观对比分析,帮助技术决策者选择适合自身场景的向量检索方案。
本文适合谁:正在为 AI 语义检索或 RAG 系统选型的架构师、后端工程师、AI 工程师,以及需要同时处理结构化与向量数据的技术决策者。
1. 核心定位:专用向量库 vs 多模态数据库
| 维度 | Milvus | TiDB Vector |
|---|---|---|
| 定位 | 专用向量相似度检索引擎 | 分布式 SQL 多模态数据库(原生向量支持) |
| 数据模型 | 纯向量 + 标量过滤 | 关系表(行内向量列)+ 全 SQL 能力 |
| 协议 | gRPC / REST | MySQL 协议(兼容 5.7/8.0) |
| 部署形态 | 开源自建 / Milvus Lite / Zilliz Cloud | 开源自建 / TiDB Cloud(Serverless / Dedicated) |
| 开源协议 | Apache 2.0 | Apache 2.0 |
Milvus 从设计之初即为向量相似度搜索优化,采用存算分离架构,支持百亿级向量的毫秒级检索。TiDB Vector 则是在 TiDB 分布式关系数据库基础上扩展的原生向量能力,用户可在同一张表中同时存储业务数据和向量数据,用标准 SQL 完成混合查询。
2. 向量索引类型对比
Milvus 提供了业界最丰富的索引类型组合,TiDB Vector 通过 HNSW 索引实现高效的近似最近邻搜索。
索引类型对比表
| 索引类型 | Milvus 支持 | TiDB Vector 支持 | 典型场景 |
|---|---|---|---|
| HNSW | ✅ IVF_HNSW, HNSW | ✅ HNSW | 高召回率、低延迟 |
| IVF 系列 | ✅ IVF_FLAT, IVF_PQ, IVF_SQ8 | ❌ | 中等规模数据集 |
| ANNOY | ✅ | ❌ | 高维、低内存场景 |
| DiskANN | ✅ | ❌ | 大规模磁盘索引 |
| PQ / SQ | ✅ 独立 + 组合 | ❌ | 内存优化 |
| 标量索引 | ✅ inverted, bitmap, bloom | ✅ B-tree, Hash | 过滤条件加速 |
关键差异:Milvus 的索引策略更灵活,可针对不同数据规模和硬件条件选择不同索引类型。TiDB Vector 统一采用 HNSW,配置简单,适合中小规模(百万级以下)向量数据场景。当向量规模超过千万级时,Milvus 的 DiskANN 等磁盘索引方案在成本控制上更有优势。
3. 查询性能对比(纯向量检索)
以下为公开基准测试中的典型性能数据(仅供参考,实际性能受数据分布、硬件配置、并发量等因素影响):
百万级 768 维向量 QPS 对比
| 指标 | Milvus 2.x(HNSW, M=16, ef=64) | TiDB Vector(HNSW) |
|---|---|---|
| 单节点 QPS(top-10) | ~5,000-8,000 | ~2,000-4,000 |
| P99 延迟 | 1-5 ms | 5-15 ms |
| 召回率(ef=64) | >99% | >95% |
| 内存占用(百万向量) | ~3-4 GB | ~3-5 GB |
亿级向量场景
| 指标 | Milvus(集群模式) | TiDB Vector(集群模式) |
|---|---|---|
| 水平扩展 | 通过 Proxy + Worker 节点 | 通过 TiKV Region 自动分裂 |
| 最大支持规模 | 十亿+ | 千万-亿级(实测) |
| 扩展复杂度 | 需调优 Worker 配置 | 自动均衡,运维简单 |
Milvus 在纯向量检索场景下,尤其是大规模数据集(亿级以上),凭借丰富的索引类型和存算分离架构,在吞吐量和延迟上具有优势。TiDB Vector 在中小规模场景下性能表现良好,且优势在于与 SQL 查询的无缝集成。
4. 数据管理能力:关系查询 + 向量检索 vs 纯向量
这是两款产品最核心的差异所在。
TiDB:统一数据管理
TiDB Vector 允许在同一张表中存储向量列和业务列,一条 SQL 同时完成过滤 + 向量检索:
CREATE TABLE documents (
id BIGINT PRIMARY KEY AUTO_RANDOM,
title VARCHAR(256),
content TEXT,
category VARCHAR(64),
created_at TIMESTAMP,
embedding VECTOR(768)
);
-- 过滤 + 向量检索一步完成
SELECT id, title,
EUCLIDEAN_DISTANCE(embedding, '[0.1, 0.2, ...]') AS distance
FROM documents
WHERE category = '技术文档'
AND created_at > '2025-01-01'
ORDER BY distance
LIMIT 10;
Milvus:向量 + 标量过滤,需外部存储关联
Milvus 支持 Collection 的标量过滤,但复杂业务数据仍需外部数据库存储:
from pymilvus import Collection
results = collection.search(
data=[query_vector],
anns_field="embedding",
param={"metric_type": "L2", "params": {"ef": 64}},
limit=10,
expr='category == "技术文档" && created_at > 1714521600'
)
# 需要将结果中的 ID 再去外部数据库查询完整文档
数据管理能力对比
| 能力 | Milvus | TiDB Vector |
|---|---|---|
| 事务支持 | 无(仅 upsert/delete) | 完整 ACID 事务 |
| 多表关联 | 不支持 | 支持 JOIN |
| 聚合分析 | 不支持 | 支持 GROUP BY / 聚合函数 |
| 数据一致性 | 最终一致 | 强一致(Raft 协议) |
| CRUD 完整性 | 向量 + 标量 upsert | 标准 SQL DML |
| 备份恢复 | 通过 S3 导出导入 | BR(TiDB Backup & Restore) |
5. RAG 架构角色对比
方案 A:Milvus 在 RAG 中的角色
用户请求 → LLM → Embedding 模型 → Milvus(向量检索)
↓
外部数据库(文档内容查询)
↓
LLM(生成回答)→ 返回用户
Milvus 仅负责向量检索环节,文档原文、元数据、用户信息等存放在外部数据库(如 MySQL、PostgreSQL),架构中有两个数据存储组件需要维护。
方案 B:TiDB Vector 在 RAG 中的角色
用户请求 → LLM → Embedding 模型 → TiDB(向量 + 元数据 + 业务数据统一查询)
↓
LLM(生成回答)→ 返回用户
TiDB 作为单一数据存储,同时承载向量检索、元数据过滤和业务查询,减少了组件数量和数据同步复杂度。
RAG 架构维度对比
| 维度 | Milvus + 外部 DB | TiDB Vector 单库 |
|---|---|---|
| 组件数量 | 3+(Milvus + DB + Redis 等) | 1-2(TiDB 集群) |
| 数据同步 | 需要双写或 CDC 同步 | 原生一致 |
| 运维复杂度 | 高(多组件协调) | 中(TiDB 自带监控运维工具) |
| 扩展灵活性 | 向量检索和业务查询可独立扩展 | 统一扩展 |
| 适合团队 | 有专职向量引擎运维能力的团队 | 偏好简化架构的中小团队 |
FAQ
Q1:TiDB Vector 能替代 Milvus 吗?
不能完全替代。如果应用仅需纯向量检索且数据规模在亿级以上,Milvus 凭借丰富的索引类型和存算分离架构仍有优势。TiDB Vector 的核心优势在于"一个库搞定向量+业务",适合向量与业务数据紧密耦合的场景。
Q2:Milvus 的标量过滤能力能否替代关系数据库?
不能。Milvus 支持基础的标量过滤(等于、大于、范围、IN 等),但不支持 JOIN、事务、聚合等关系型操作。复杂业务逻辑仍需外部数据库。
Q3:TiDB Vector 支持哪些距离度量?
TiDB Vector 支持 L2 Distance(欧几里得)、Cosine Distance(余弦距离)、Inner Product(内积)三种主流距离度量,覆盖大多数语义检索场景。
Q4:Milvus 和 TiDB 可以一起使用吗?
可以。常见架构为 TiDB 作为主数据库存储业务数据和文档元数据,Milvus 专精向量检索,通过 CDC 或应用层双写保持数据同步。这种组合适合大规模向量检索 + 复杂业务查询并存的场景。
总结
Milvus 是面向大规模向量检索的专业工具,索引类型丰富、纯向量检索性能优异,适合向量数据规模大、检索需求单一的团队。TiDB Vector 则走"统一数据库"路线,将向量能力嵌入分布式 SQL 数据库中,适合希望简化架构、在同一系统内完成向量检索和业务数据管理的团队。选择取决于你的数据规模、架构复杂度容忍度和团队技术栈。
下一步行动
- 试用 TiDB Vector:TiDB Cloud 免费试用,创建 Serverless 集群即可体验向量检索能力,无需本地部署。
- 获取 AI 数据库方案:TiDB for AI 架构白皮书下载,了解 TiDB 在 RAG、语义检索等 AI 场景中的最佳实践。
- 体验 Milvus:Milvus 官网 下载开源版本或试用 Zilliz Cloud,对比纯向量检索性能。