基于 Nearest Neighbor Descent 的纯 Python 近似最近邻搜索库,支持多种距离度量。
microsoft/SPTAG
一个 C++ 大规模近似最近邻向量检索库,提供索引构建、搜索和分布式在线服务工具。
- Star
- 5,021
- Fork
- 625
- 未关闭 Issue
- 143
- 最近提交
- 昨天
这是什么?
SPTAG(Space Partition Tree And Graph)是一个面向向量近似最近邻搜索的 C++ 库,常用于语义检索、推荐等需要在海量向量中快速找相似项的场景。给定查询向量,它返回距离最小(L2 或余弦距离)的已存向量,以少量精度换取远快于暴力比对的速度。
它提供两种索引方案:SPTAG-KDT 基于 kd-tree,索引构建成本较低;SPTAG-BKT 基于平衡 k-means 树,适合超高维数据上更高的搜索精度。两者都将空间划分树与相对邻域图结合,搜索时在树和图之间迭代。
该库支持在线插入和删除向量而无需完全重建索引,并可把搜索分布到多台机器上。项目提供 Python 封装,支持 Linux、Windows 和 Docker 构建。
核心功能
- 01支持 L2 和余弦距离的向量相似度计算。
- 02提供基于 kd-tree 的 SPTAG-KDT 和基于平衡 k-means 树的 SPTAG-BKT 两种索引。
- 03支持在线插入和删除向量,无需重建整个索引。
- 04可将搜索分布到多台机器上进行在线服务。
- 05提供 Python 封装及构建向量检索服务的教程。
适用场景
- 为embedding 向量构建大规模语义检索后端。
- 为推荐或图像相似度查询提供最近邻检索服务。
- 索引频繁变化、需要在线更新的数据集。
- 单机索引容量不足时,将向量搜索分布到多台机器上。
快速上手
- 1
克隆仓库及其子模块
git clone --recurse-submodules https://github.com/microsoft/SPTAG - 2
在 build 目录中使用 CMake 构建(需要 swig、cmake 和 boost)
mkdir build && cd build && cmake -DSPDK=OFF -DROCKSDB=OFF .. && make - 3
在 Release 文件夹中运行 SPTAGTest 以验证构建
使用前须知
- 从源码构建需要 swig、cmake 和 boost,且 Linux 与 Windows 的步骤不同。
- 快速克隆依赖 Git LFS 和子模块。
收录于专题
标签
#vector-search#approximate-nearest-neighbor#similarity-search#distributed-systems#cpp#indexing#approximate-nearest-neighbor-search#distributed-serving#fresh-update#neighborhood-graph
常见问题
- SPTAG 是什么?
- 一个 C++ 大规模近似最近邻向量检索库,提供索引构建、搜索和分布式在线服务工具。 SPTAG(Space Partition Tree And Graph)是一个面向向量近似最近邻搜索的 C++ 库,常用于语义检索、推荐等需要在海量向量中快速找相似项的场景。给定查询向量,它返回距离最小(L2 或余弦距离)的已存向量,以少量精度换取远快于暴力比对的速度。
- SPTAG 可以免费使用吗?用的什么许可证?
- SPTAG 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- SPTAG 还在维护吗?
- 活跃维护中。SPTAG 最近一次提交是在 2026年11月6日。
- SPTAG 适合用来做什么?
- 为embedding 向量构建大规模语义检索后端。 为推荐或图像相似度查询提供最近邻检索服务。 索引频繁变化、需要在线更新的数据集。 单机索引容量不足时,将向量搜索分布到多台机器上。
- SPTAG 怎么安装和运行?
- 克隆仓库及其子模块: git clone --recurse-submodules https://github.com/microsoft/SPTAG 在 build 目录中使用 CMake 构建(需要 swig、cmake 和 boost): mkdir build && cd build && cmake -DSPDK=OFF -DROCKSDB=OFF .. && make 在 Release 文件夹中运行 SPTAGTest 以验证构建
- 在哪里获取 SPTAG?
- 源代码和安装说明在 GitHub 上:https://github.com/microsoft/SPTAG
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
AI 与机器学习#approximate-nearest-neighbor#nearest-neighbor-search#knn-graph#similarity-search#scikit-learn
975+1 本周116PythonBSD-2-Clause更新于 21小时前
基于 HNSW 图算法的近似最近邻搜索库,提供 C++ 头文件实现和 Python 绑定。
5364+2 本周862C++Apache-2.0更新于 2个月前
基于图与树索引的 C++ 高维向量近似最近邻搜索库及命令行工具。
1376133C++Apache-2.0维护活跃更新于 昨天
单文件 C++ 向量近似最近邻搜索与聚类引擎,提供 Python、JavaScript、Rust 等多语言绑定。
4372+8 本周372C++Apache-2.0维护活跃更新于 7天前
基于 Rust 的 Postgres 扩展,在 pgvector 之上提供 DiskANN 索引和标签过滤,用于更快、更省成本的向量检索。
3161+5 本周160RustPostgreSQL更新于 24天前
为 Postgres 提供向量相似度搜索的开源扩展,可与关系型数据存放在一起。
2.4万+65 本周1384COther维护活跃更新于 前天