Biblioteca de busca aproximada por vizinhos mais próximos, desenvolvida inteiramente em Python e baseada em Nearest Neighbor Descent, com suporte a diversas métricas de distância.
microsoft/SPTAG
Biblioteca C++ para busca aproximada de vizinhos mais próximos em vetores em larga escala, com ferramentas para criar índices, pesquisar e distribuir o serviço.
- Estrelas
- 5,022
- Forks
- 625
- Issues abertas
- 143
- Último commit
- anteontem
O que é?
SPTAG (Space Partition Tree And Graph) é uma biblioteca para busca aproximada de vizinhos mais próximos em vetores, usada em consultas como as de sistemas de busca semântica e recomendação. Dado um vetor de consulta, ela retorna os vetores armazenados com menor distância L2 ou cosseno, trocando uma pequena perda de precisão por consultas muito mais rápidas do que a comparação exaustiva.
A biblioteca oferece duas variantes de índice: SPTAG-KDT, que usa kd-trees e tem menor custo de criação do índice, e SPTAG-BKT, que usa árvores balanceadas de k-means e foi projetada para oferecer maior precisão de busca em dados de dimensionalidade muito alta. Ambas combinam uma árvore de particionamento do espaço com um grafo de vizinhança relativa, e a busca alterna entre os dois para encontrar resultados.
A biblioteca oferece suporte à inserção e remoção de vetores em tempo de execução, sem precisar reconstruir o índice por completo, e permite distribuir as buscas entre várias máquinas. Ela inclui um wrapper para Python e pode ser compilada no Linux, Windows e Docker.
Recursos principais
- 01Oferece suporte às distâncias L2 e cosseno para medir a similaridade entre vetores.
- 02Oferece variantes de índice com kd-tree (SPTAG-KDT) e árvore balanceada de k-means (SPTAG-BKT).
- 03Permite inserir e remover vetores em tempo de execução sem reconstruir o índice.
- 04Distribui as buscas entre várias máquinas para atender às consultas.
- 05Inclui um wrapper para Python e um tutorial para criar um serviço de busca vetorial online.
Casos de uso
- Criar um backend de busca semântica em larga escala sobre vetores de embeddings.
- Atender a consultas de vizinhos mais próximos para sistemas de recomendação ou busca por similaridade entre imagens.
- Indexar conjuntos de dados que mudam com frequência e precisam de atualizações online.
- Executar buscas vetoriais em várias máquinas quando um único índice é grande demais.
Início rápido
- 1
Clone o repositório com seus submódulos
git clone --recurse-submodules https://github.com/microsoft/SPTAG - 2
Compile com CMake a partir do diretório build (são necessários swig, cmake e boost)
mkdir build && cd build && cmake -DSPDK=OFF -DROCKSDB=OFF .. && make - 3
Execute o binário SPTAGTest na pasta Release para verificar a compilação
Antes de usar
- Para compilar a partir do código-fonte, são necessários swig, cmake e boost, e as etapas diferem entre Linux e Windows.
- A clonagem rápida do repositório depende do Git LFS e dos submódulos.
Em coleções
Tópicos
Perguntas frequentes
- O que é SPTAG?
- Biblioteca C++ para busca aproximada de vizinhos mais próximos em vetores em larga escala, com ferramentas para criar índices, pesquisar e distribuir o serviço. SPTAG (Space Partition Tree And Graph) é uma biblioteca para busca aproximada de vizinhos mais próximos em vetores, usada em consultas como as de sistemas de busca semântica e recomendação. Dado um vetor de consulta, ela retorna os vetores armazenados com menor distância L2 ou cosseno, trocando uma pequena perda de precisão por consultas muito mais rápidas do que a comparação exaustiva.
- SPTAG é gratuito? Qual é a licença?
- SPTAG é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
- SPTAG ainda é mantido?
- Manutenção ativa. O último commit de SPTAG foi em 4 de nov. de 2026.
- Para que posso usar SPTAG?
- Criar um backend de busca semântica em larga escala sobre vetores de embeddings. Atender a consultas de vizinhos mais próximos para sistemas de recomendação ou busca por similaridade entre imagens. Indexar conjuntos de dados que mudam com frequência e precisam de atualizações online. Executar buscas vetoriais em várias máquinas quando um único índice é grande demais.
- Como instalar SPTAG?
- Clone o repositório com seus submódulos: git clone --recurse-submodules https://github.com/microsoft/SPTAG Compile com CMake a partir do diretório build (são necessários swig, cmake e boost): mkdir build && cd build && cmake -DSPDK=OFF -DROCKSDB=OFF .. && make Execute o binário SPTAGTest na pasta Release para verificar a compilação
- Onde consigo SPTAG?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/microsoft/SPTAG
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Biblioteca C++ header-only com bindings para Python para busca aproximada e rápida de vizinhos mais próximos usando o algoritmo de grafo HNSW.
Biblioteca C++ e ferramenta de linha de comando para busca aproximada e rápida de vizinhos mais próximos em vetores de alta dimensionalidade, usando índices de grafo e árvore.
Biblioteca C++ de arquivo único para busca aproximada de vizinhos mais próximos e clustering de vetores, com bindings para Python, JavaScript, Rust, Java, Go, Swift e outras linguagens.
Extensão do PostgreSQL escrita em Rust que adiciona ao pgvector um índice baseado em DiskANN e filtros por rótulos para buscas vetoriais mais rápidas e baratas.
Extensão open source de busca por similaridade vetorial para Postgres, que armazena e consulta embeddings junto aos seus dados relacionais.