百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
S

SPTAG

> 编程语言
开源

一个分布式近似最近邻搜索 (ANN) 库,提供高质量的向量索引构建、搜索和分布式在线服务工具

5.0K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

一个分布式近似最近邻搜索 (ANN) 库,提供高质量的向量索引构建、搜索和分布式在线服务工具

# SPTAG: A library for fast approximate nearest neighbor search ## **SPTAG** SPTAG (Space Partition Tree And Graph) is a library for large scale vector approximate nearest neighbor search scenario released by [Microsoft Research (MSR)](https://www.msra.cn/) and [Microsoft Bing](http://bing.com).

## What's NEW * Result Iterator with Relaxed Monotonicity Signal Support * New Research Paper [SPFresh: Incremental In-Place Update for Billion-Scale Vector Search](https://dl.acm.org/doi/10.1145/3600006.3613166) - _published in SOSP 2023_ * New Research Paper [VBASE: Unifying Online Vector Similarity Search and Relational Queries via Relaxed Monotonicity](https://www.usenix.org/system/files/osdi23-zhang-qianxi_1.pdf) - _published in OSDI 2023_ ## **Introduction** This library assumes that the samples are represented as vectors and that the vectors can be compared by L2 distances or cosine distances. Vectors returned for a query vector are the vectors that have smallest L2 distance or cosine distances with the query vector. SPTAG provides two methods: kd-tree and relative neighborhood graph (SPTAG-KDT) and balanced k-means tree and relative neighborhood graph (SPTAG-BKT). SPTAG-KDT is advantageous in index building cost, and SPTAG-BKT is advantageous in search accuracy in very high-dimensional data. ## **How it works** SPTAG is inspired by the NGS approach [[WangL12](#References)]. It contains two basic modules: index builder and searcher. The RNG is built on the k-nearest neighborhood graph [[WangWZTG12](#References), [WangWJLZZH14](#References)] for boosting the connectivity. Balanced k-means trees are used to replace kd-trees to avoid the inaccurate distance bound estimation in kd-trees for very high-dimensional vectors. The search begins with the search in the space partition trees for finding several seeds to start the search in the RNG. The searches in the trees and the graph are iteratively conducted. ## **Highlights** * Fresh update: Support online vector deletion and insertion * Distributed serving: Search over multiple machines ## **Build** ### **Requirements** * swig >= 4.0.2 * cmake >= 3.12.0 * boost >= 1.67.0 ### **Fast clone** ``` set GIT_LFS_SKIP_SMUDGE=1 git clone --recurse-submodules https://github.com/microsoft/SPTAG OR git config --global filter.lfs.smudge "git-lfs smudge --skip -- %f" git config --global filter.lfs.process "git-lfs filter-process --skip" ``` ### **Install** > For Linux: > Compile SPDK ```bash cd ThirdParty/spdk ./scripts/pkgdep.sh CC=gcc-9 ./configure CC=gcc-9 make -j ``` > Compile isal-l_crypto ```bash cd ThirdParty/isal-l_crypto ./autogen.sh ./configure make -j ``` > Build RocksDB ```bash mkdir build && cd build cmake -DUSE_RTTI=1 -DWITH_JEMALLOC=1 -DWITH_SNAPPY=1 -DCMAKE_C_COMPILER=gcc-7 -DCMAKE_CXX_COMPILER=g++-7 -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-fPIC" .. make -j sudo make install ``` > Build SPTAG ```bash mkdir build cd build && cmake -DSPDK=OFF -DROCKSDB=OFF .. && make ``` It will generate a Release folder in the code directory which contains all the build targets. > For Windows: ```bash mkdir build cd build && cmake -A x64 -DSPDK=OFF -DROCKSDB=OFF .. ``` It will generate a SPTAGLib.sln in the build directory. Compiling the ALL_BUILD project in the Visual Studio (at least 2019) will generate a Release directory which contains all the build targets. For detailed instructions on installing Windows binaries, please see [here](docs/WindowsInstallation.md) > Using Docker: ```bash docker build -t sptag . ``` Will build a docker container with binaries in `/app/Release/`. ### **Verify** Run the SPTAGTest (or Test.exe) in the Release folder to verify all the tests have passed. ### **Usage** The detailed usage can be found in [Get started](docs/GettingStart.md). There is also an end-to-end tutorial for building vector search online service using Python Wrapper in [Python Tutorial](docs/Tutorial.ipynb). The detailed parameters tunning can be found in [Parameters](docs/Parameters.md). ## **References** Please cite SPTAG in your publications if it helps your research: ``` … ``` ## **Contribute** This project welcomes contributions and suggestions from all the users. We use [GitHub issues](https://github.com/Microsoft/SPTAG/issues) for tracking suggestions and bugs. ## **License** The entire codebase is under [MIT license](https://github.com/Microsoft/SPTAG/blob/master/LICENSE)

GitHub Issues· 0 开放

在 GitHub 查看全部

暂无开放 Issues,或尚未同步最近议题。

核心特点

  • •Result Iterator with Relaxed Monotonicity Signal Support
  • •New Research Paper SPFresh: Incremental In-Place Update for Billion-Scale Vector Search - _published in SOSP 2023_
  • •New Research Paper VBASE: Unifying Online Vector Similarity Search and Relational Queries via Relaxed Monotonicity - _published in OSDI 2023_
  • •Fresh update: Support online vector deletion and insertion
  • •Distributed serving: Search over multiple machines
  • •swig >= 4.0.2
  • •cmake >= 3.12.0
  • •boost >= 1.67.0

> 标签

C++approximate-nearest-neighbor-searchdistributed-servingfresh-updateneighborhood-graph

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言