Repolode
microsoft

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. 1

    克隆仓库及其子模块

    git clone --recurse-submodules https://github.com/microsoft/SPTAG
  2. 2

    在 build 目录中使用 CMake 构建(需要 swig、cmake 和 boost)

    mkdir build && cd build && cmake -DSPDK=OFF -DROCKSDB=OFF .. && make
  3. 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 数据每日更新。

相关项目