算法参考清单

本文列出 DotVector 在各 Milestone 计划学习和参考的向量索引算法,逐条注明出处、论文链接与源码链接。


1. HNSW(Hierarchical Navigable Small World)

计划 Milestone:M3

核心思想:在多层级的小世界图中进行贪心搜索,每一层图是下一层图的稀疏子图,查询时从顶层开始逐层向下精化。

学术论文

参考实现与差异分析

实现 语言 差异点
hnswlib C++ 论文原始实现,算法标准参考
Qdrant HNSW Rust 增加 payload 过滤、动态删除支持
Milvus HNSW C++ (knowhere) 基于 hnswlib,增加 GPU 支持
pgvector HNSW C 集成到 PG AM(访问方法)框架,支持 VACUUM

DotVector 借鉴点


2. IVF(Inverted File Index)

计划 Milestone:M4(IVF-Flat)

核心思想:用 K-Means 将向量空间划分为 nlist 个聚类,查询时只搜索最近的 nprobe 个聚类(倒排列表),大幅减少计算量。

学术论文

参考实现

DotVector 借鉴点


3. IVF-PQ(IVF + Product Quantization)

计划 Milestone:M4(IVF-PQ)

核心思想:在 IVF 基础上,对每个聚类中的残差向量做乘积量化(PQ)压缩,大幅降低内存占用(典型压缩比 8x~64x)。

学术论文

参考实现

DotVector 借鉴点


4. PQ / OPQ / SQ 量化

计划 Milestone:M13

乘积量化(Product Quantization, PQ)

优化乘积量化(Optimized PQ, OPQ)

标量量化(Scalar Quantization, SQ)

DotVector 借鉴点


5. DiskANN(Vamana 图索引)

计划 Milestone:M12

核心思想:专为 SSD 优化的图索引算法,通过 Vamana 图构建 + 压缩向量(PQ)的两阶段搜索,实现内存放不下的大规模数据集(十亿级)的高性能 ANN 搜索。

学术论文

参考实现

DotVector 借鉴点


6. SPTAG(Space Partition Tree and Graph)

计划 Milestone:M12+(参考)

核心思想:结合 KD-Tree 和 BKT(Balanced K-Means Tree)快速定位候选,再用图搜索精化,支持十亿级向量。

学术论文

参考实现

DotVector 参考价值:BKT 构建算法可作为 IVF K-Means 的替代选项。


7. ScaNN(Scalable Nearest Neighbors)

计划 Milestone:M13+(参考量化思路)

核心思想:各向异性向量量化(Anisotropic VQ),针对最大内积搜索(MIPS)优化量化误差,Google 内部大规模应用。

学术论文

参考实现

DotVector 参考价值:量化方向的参考,特别是 MIPS(内积搜索)场景的量化策略。


8. LSH(Locality Sensitive Hashing)系列

计划 Milestone:参考价值,暂不实现

核心思想:通过哈希函数将相似向量映射到相同桶,O(1) 近似检索,但召回率不如 HNSW/IVF。

代表论文

DotVector 参考价值:LSH 适合极高维稀疏向量(如 NLP 词袋),在 embedding 场景(密集 384-1536 维)性能不如 HNSW/IVF,暂不列入实现计划。


9. pgvector 的 ivfflat / hnsw 操作符

参考 Milestone:M3(HNSW)、M4(IVF)、M6(过滤)

核心设计:pgvector 将向量索引作为 PostgreSQL AM(访问方法)实现,支持标准 SQL WHERE 过滤。

参考点

DotVector 借鉴点


10. Milvus 的 Segment / Growing-Sealed 模型

参考 Milestone:M5(持久化层)

核心设计

参考链接

DotVector 借鉴点


11. Lance 的列式 + 二级索引模型

参考 Milestone:M5(持久化格式)、M4(量化)

核心设计

参考链接

DotVector 借鉴点


参考数据集

数据集 维度 向量数 用途
SIFT-1M 128 100 万 M3/M4 召回率基准
GloVe-1.2M 100 120 万 NLP embedding 场景
Deep-1B 96 10 亿 M12 DiskANN / Vamana 大规模测试
MNIST 784 60 万 低维测试

参考工具