Repolode
NGT-labs

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

    Instalar no macOS com Homebrew

    brew install ngt
  2. 2

    Baixar o arquivo do código-fonte na página Releases

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

#approximate-nearest-neighbor-search#vector-search#knn#high-dimensional-data#c-plus-plus#indexing#k-nearest-neighbors#knn-search#nearest-neighbor-search#nearest-neighbors

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