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.
NGT-labs/NGT
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.
- Estrelas
- 1,376
- Forks
- 133
- Issues abertas
- 29
- Último commit
- há 7 dias
O que é?
O NGT oferece comandos e uma biblioteca para busca aproximada de vizinhos mais próximos em grandes coleções de vetores de alta dimensionalidade, geralmente com dezenas a milhares de dimensões. Ele cria índices de grafo de vizinhança e de árvore para encontrar objetos semelhantes sem comparar a consulta com todos os itens armazenados.
O projeto oferece vários métodos: um índice baseado em grafo e árvore (NGT), um método de grafo quantizado (QG) e um método de grafo de blobs quantizados (QBG), voltado a conjuntos de dados muito grandes. As funções de distância compatíveis incluem L1, L2, cosseno, angular, Hamming, Jaccard, produto interno e distâncias hiperbólicas (Poincare e Lorentz). Os vetores podem ser armazenados como floats de 4 ou 2 bytes ou como inteiros sem sinal de 1 byte, e os índices podem ser armazenados em memória compartilhada mapeada em memória.
O NGT inclui uma CLI, uma API C++ e bindings para Python, Rust, Go, Ruby, PHP e JavaScript. É possível adicionar e remover objetos depois que o índice é criado. Há suporte a builds no Linux, macOS e Windows via MinGW-w64/MSYS2; QG e QBG exigem BLAS e LAPACK.
Recursos principais
- 01Busca aproximada de vizinhos mais próximos usando índices de grafo e árvore
- 02Compatibilidade com distâncias L1, L2, cosseno, angular, Hamming, Jaccard, produto interno e hiperbólicas
- 03Adição e remoção de objetos depois que o índice é criado
- 04Tipos de dados float32, float16 e uint8, além de quantização de produto e escalar para índices de grafo
- 05Opção de índice em memória compartilhada (arquivo mapeado em memória) para grandes conjuntos de dados
- 06Bindings para Python, Rust, Go, Ruby, PHP e JavaScript
Casos de uso
- Encontrar imagens, documentos ou embeddings semelhantes por similaridade vetorial em um serviço de busca personalizado
- Atender consultas de vizinhos mais próximos em vários processos que compartilham um índice na memória
- Executar buscas por similaridade em bilhões de vetores usando o método QBG
- Prototipar buscas vetoriais pela linha de comando ou em Python antes de escolher um sistema maior
Início rápido
- 1
Instalar no macOS com Homebrew
brew install ngt - 2
Baixar o arquivo do código-fonte na página Releases
- 3
Configurar a compilação no Linux sem QG e QBG
cmake -DNGT_QBG_DISABLED=ON ..
Antes de usar
- Compilações nativas com Microsoft Visual C++ (MSVC) não são compatíveis; atualmente, o Windows exige MinGW-w64 e a desativação do QBG.
- QG e QBG exigem as bibliotecas BLAS e LAPACK e são executados somente no Linux e no macOS.
Em coleções
Tópicos
Perguntas frequentes
- O que é NGT?
- 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. O NGT oferece comandos e uma biblioteca para busca aproximada de vizinhos mais próximos em grandes coleções de vetores de alta dimensionalidade, geralmente com dezenas a milhares de dimensões. Ele cria índices de grafo de vizinhança e de árvore para encontrar objetos semelhantes sem comparar a consulta com todos os itens armazenados.
- NGT é gratuito? Qual é a licença?
- NGT é open source sob a licença Apache-2.0. Confira os termos da licença antes de usá-lo em produtos comerciais.
- NGT ainda é mantido?
- Manutenção ativa. O último commit de NGT foi em 30 de out. de 2026.
- Para que posso usar NGT?
- Encontrar imagens, documentos ou embeddings semelhantes por similaridade vetorial em um serviço de busca personalizado Atender consultas de vizinhos mais próximos em vários processos que compartilham um índice na memória Executar buscas por similaridade em bilhões de vetores usando o método QBG Prototipar buscas vetoriais pela linha de comando ou em Python antes de escolher um sistema maior
- Como instalar NGT?
- Instalar no macOS com Homebrew: brew install ngt Baixar o arquivo do código-fonte na página Releases Configurar a compilação no Linux sem QG e QBG: cmake -DNGT_QBG_DISABLED=ON ..
- Onde consigo NGT?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/NGT-labs/NGT
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Extensão open source de busca por similaridade vetorial para Postgres, que armazena e consulta embeddings junto aos seus dados relacionais.
Uma biblioteca de recuperação e banco de dados embarcados para IA multimodal, com busca vetorial, full-text e SQL em dados armazenados no formato Lance.
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.
Biblioteca C++ header-only acelerada por CUDA, com wrappers em Python de primitivas reutilizáveis para machine learning, álgebra linear e recuperação de informação em GPUs NVIDIA.
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.