HNSW:分层小世界图的近似近邻搜索
从 NSW 到 HNSW,拆解随机层数、SEARCH-LAYER、启发式邻居选择与参数边界;对照 hnswlib、Faiss、Lucene、pgvector 源码默认值,并用可复现实验比较 simple 与 heuristic 邻居选择的召回成本。
Linux 内核、存储与网络、可观测性、系统架构与大模型基础设施的工程笔记:机制拆解、踩坑复盘与可核对证据,少空谈。
共 11 篇文章 · 返回首页
从 NSW 到 HNSW,拆解随机层数、SEARCH-LAYER、启发式邻居选择与参数边界;对照 hnswlib、Faiss、Lucene、pgvector 源码默认值,并用可复现实验比较 simple 与 heuristic 邻居选择的召回成本。
不重复 HNSW、PQ 和 DiskANN 细节,而是把向量检索放回引擎层:段式存储、墓碑删除、过滤搜索、mmap、并发快照与可复现召回评测。
划清 Neo4j FULLTEXT / VECTOR 索引相对 RANGE/TEXT 与拓扑 expand 的边界:二者均走 Lucene、吃 OS page cache;查询靠过程/SEARCH 而非自动计划;并链到站内 search-engine 与 vector-engine,不重写倒排与 ANN 全书。
存储工程视角的向量检索入门:L2/余弦/内积的几何意义与归一化等价、暴力基线、LSH/HNSW/量化直觉与 FAISS 选型;算法深度与生产引擎内核外链到 db-frontier 与 vector-engine。
把 HNSW、IVF、DiskANN、Flat 收成引擎侧 Train/Build/Load/Search 契约与构建期/查询期参数面;用生命周期图与召回–QPS–内存三角说明索引如何贴着 Segment,并与 db-frontier/08、第 8 篇 Knowhere 分工。
按官方 Knowhere 文档说明其在 Milvus 中的位置、相对 Faiss 的扩展(bitset、SIMD 选择、二进制度量)、VecIndex 类层次与 IDMAP/IVF/HNSW 等类型,用插件注册、CPU/GPU 分发与 bitset 进查询三张图钉住工程契约,并与 db-frontier/08 的算法细节分工。
对照 Qdrant 与本系列 Milvus 主线:Segment 内的向量/payload/id mapper 三件套、WAL+序号版本化、后台 optimizer 四类任务,以及 Raft 只管拓扑不管点操作的分布式模型;说明何时单进程/小集群更合适。
以 pgvector v0.8.0 源码钉住 Index AM、8KB 页上的 HNSW element/neighbor 元组与 iterative_scan;对照 Milvus Growing/Sealed 与 Knowhere,说明同进程 SQL 扩展买到的事务边界与付掉的页模型/资源争用代价。
补齐 ANN 算法与 RAG 应用之间的生产级向量引擎层:以 Milvus 2.6.x 为主线拆解 Segment、WAL、Segcore、Knowhere、混合过滤与一致性,并用 Qdrant、LanceDB、pgvector 对照选型。
从 HNSW、IVF-PQ、DiskANN 到 Milvus、Qdrant、pgvector;从稠密稀疏混合到 Microsoft GraphRAG 的工程实操。
系统拆解 HNSW、DiskANN/Vamana、SPANN 三类主流 ANN 索引的原理、构建算法、查询流程与工程参数,并覆盖 IVF-PQ、ScaNN 的位置,最后给出 FAISS/Milvus/pgvector/Qdrant 的选型与一份 200 行 numpy HNSW 复现。