Repolode
microsoft

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

    Clone o repositório com seus submódulos

    git clone --recurse-submodules https://github.com/microsoft/SPTAG
  2. 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. 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

#vector-search#approximate-nearest-neighbor#similarity-search#distributed-systems#cpp#indexing#approximate-nearest-neighbor-search#distributed-serving#fresh-update#neighborhood-graph

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