DotVector v1.0.0 发布:面向 .NET 10 的嵌入式向量数据库

单目录持久化、进程内运行、零外部依赖,现已覆盖 Flat / HNSW / IVF / Vamana 五大索引、SQ8 / PQ / OPQ / RQ 全量化管线,以及本地 Native AOT CLI / C / Python 连接器。


版本概览

DotVector v1.0.0 是一个功能完整的嵌入式向量数据库引擎,以 NuGet 包、本地 CLI 和连接器产物发布。核心引擎 DotVector.Core 可以直接嵌入 .NET 应用进程内运行,无需任何外部数据库进程。独立 gRPC Server / Docker 服务端形态已删除;需要服务端 endpoint 时由 SonnetDB 承载。

发布产物 获取方式
DotVector.Core (引擎) dotnet add package DotVector.Core
DotVector (客户端 SDK) dotnet add package DotVector
DotVector.Cli (命令行) dotnet tool install -g DotVector.Cli
C / Python connector GitHub Release assets

索引引擎:五种索引覆盖全场景

所有索引均支持 L2 / Cosine / InnerProduct / DotProduct 四种距离度量,以及 ReaderWriterLockSlim 并发读写。


量化管线:从 SQ8 到 RQ 的完整覆盖

v1.0.0 完成了 IVectorQuantizer 统一量化抽象,提供四种量化器:

量化器 压缩率 特点
SQ8 (ScalarQuantizer8) 4× (32→8 bit) 逐维 min/max 量化,零额外分配
PQ (ProductQuantizer) 4×–16× 子空间 K-Means 编码 + ADC LUT 距离查表
OPQ (OptimizedProductQuantizer) 4×–16× 旋转矩阵优化 + PQ 联合训练,纯托管 Jacobi SVD
RQ (ResidualQuantizer) 4×–32× 多级残差编码,更高级数严格降低 MSE

所有量化器通过 QuantizerSerializer 实现自描述二进制持久化(quantizer.bin sidecar),与 Segment 格式向后兼容。新增 QuantizedFlatIndex<TKey> 支持量化后的线性扫描索引。


持久化层:WAL + Segment + mmap

持久化模型采用 .dvec/ 单目录结构,与 LanceDB、Qdrant 的 Segment 粒度设计一致。


标量过滤:Payload + B-tree 索引


本地 CLI 与连接器


生态集成


路线图状态

M0–M7 M8 M9–M11 M12 M13 M14 M16
✅ 完成 ⏳ 基准 ✅ 完成 ✅ 完成 ✅ 完成 ✅ 完成 ⏳ 进行中

当前已完成 M0–M14(除 M8 基准体系),M16 开发体验补强进行中,覆盖 Code-First 建模、本地数据库生命周期、本地 CLI、调试界面和多语言快速开始。


快速开始

# NuGet 嵌入式
dotnet add package DotVector.Core

# CLI 本地数据库
dotnet tool install -g DotVector.Cli
dotvector ping --data ./data.dvec
using DotVector.Api;
using DotVector.Model;

using var db = new VectorDatabase();
var coll = db.CreateCollection<string>("docs", dimensions: 4, metric: Metric.Cosine);
coll.Insert(new VectorRecord<string>("id-1", [0.95f, 0.10f, 0.08f, 0.02f]));
var results = coll.Search([0.92f, 0.12f, 0.07f, 0.03f], topK: 5);

相关链接