DotVector 与同类产品对比

本表从多个维度对比 DotVector 与主流向量数据库,帮助用户选择合适的工具。


综合对比表

维度 DotVector Milvus pgvector Qdrant LanceDB Chroma
定位 .NET 嵌入式 分布式云原生 PG 向量扩展 高性能单机/集群 嵌入式列存 开发者友好嵌入式
实现语言 C# / .NET Go + C++ C Rust Rust Python
部署方式 嵌入式 NuGet 独立集群 PostgreSQL 插件 独立进程 嵌入式 / 服务 嵌入式 / 服务
外部依赖 Etcd、MinIO、Pulsar PostgreSQL
.NET 原生集成 ✅ 完整原生 ❌ 仅客户端 ❌ Npgsql 客户端 ❌ 仅客户端 ❌ 仅客户端 ❌ 仅客户端
Native AOT ✅(Rust)
单目录持久化 .dvec/(M5) ✅ 目录 ✅ 目录 ✅ 目录
索引:Flat/Brute ✅(M2) ✅ FLAT
索引:HNSW ✅(M3) ✅(v0.5+)
索引:IVF ✅(M4) ✅ IVF_FLAT ✅(v0.5+)
量化 PQ/SQ ✅ SQ8 / PQ / OPQ / RQ(M13) ✅ IVF_PQ、SQ8 ✅ SQ ✅ PQ
DiskANN ✅ Vamana(M12) ✅ DISKANN ✅(实验)
标量过滤 ✅(M6) ✅ SQL WHERE ✅ Payload 有限
多向量字段 计划
持久化方式 单目录 mmap(M5).dvec/ 分布式对象存储 PG heap 本地目录 Lance 列存 SQLite / 内存
WAL/崩溃恢复 ✅(M5) ✅ PG WAL
水平扩展 ❌ 单机 ✅ 分片 + 副本 有限(PG 分区) ✅(Qdrant Cloud) 有限
VectorData 集成 ✅ 原生(M7) 适配层 适配层 适配层 适配层 适配层
Semantic Kernel ✅ 直接支持 需插件 需插件 需插件 需插件 需插件
gRPC API ❌(服务端模式进入 SonnetDB)
容器镜像大小 不发布服务端镜像 ~500 MB ~500 MB(含 PG) ~50 MB ~100 MB ~200 MB
启动时间 进程内加载;CLI NativeAOT 毫秒级 ~30 s(集群) ~5 s(PG) ~1 s < 100 ms < 500 ms
许可证 MIT Apache 2.0 PostgreSQL Apache 2.0 Apache 2.0 Apache 2.0

使用场景对照

场景 1:.NET 桌面/移动应用本地 AI 助手

推荐:✅ DotVector

原因:

场景 2:ASP.NET Core + Semantic Kernel RAG Pipeline

推荐:✅ DotVector(嵌入式场景)或 ❓ Qdrant(高并发生产)

原因:

场景 3:已有 PostgreSQL 基础设施

推荐:❓ pgvector

原因:pgvector 直接集成到 PG,利用 SQL 过滤能力,DotVector 无法替代这个场景。

场景 4:Python/Jupyter 快速原型

推荐:❓ Chroma / LanceDB(Python 优先生态)或 ✅ DotVector Python Connector(需要复用 DotVector 嵌入式引擎时)

原因:DotVector 已提供 Python ctypes Native 客户端基础,但 Python 生态的一站式体验仍在 M16 多语言快速开始中继续补强。

场景 5:十亿级向量生产系统

推荐:❓ Milvus(分布式)或 Qdrant(单机超大规模)

原因:DotVector 定位嵌入式/单机服务,不支持水平扩展;M15 才考虑分布式分片。

场景 6:Kubernetes Sidecar / Serverless Function

推荐:✅ DotVector CLI / 嵌入式客户端(NativeAOT);需要服务端时使用 SonnetDB

原因:


性能预期(M3 HNSW,与 Qdrant 对比)

以下为预期目标(将在 M8 基准测试后填入实测数据):

指标 DotVector M3 Qdrant 差距
构建速度(10万条/128维) ~ 5s ~ 3s < 2x
KNN 搜索 P50(1M条/128维) ~ 2ms ~ 1ms < 2x
KNN 搜索 P99 ~ 10ms ~ 5ms < 2x
Recall@10(M=16, ef=200) ≥ 0.95 ≥ 0.97 相当
内存占用(10万条/128维) ~ 60 MB ~ 50 MB ~ 1.2x

注:DotVector 的目标是 .NET 生态内的最优选择,对比 Qdrant(Rust)差距控制在 2x 以内为合理目标。


版本历史

版本 内容
M0(本 PR) 初始对比表(基于目标定位,无实测数据)
M8 填入 BenchmarkDotNet 实测数据