Repolode
lmcinnes

lmcinnes/pynndescent

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.

Estrelas
975
Forks
116
Issues abertas
90
Último commit
há 16 horas

O que é?

O PyNNDescent constrói um grafo de k vizinhos mais próximos e responde a consultas aproximadas de vizinhos mais próximos com base nele. Ele implementa Nearest Neighbor Descent, usando árvores de projeção aleatória na inicialização e podando arestas longas de triângulos no grafo para melhorar o resultado. É voltado a cargas de trabalho que exigem alta precisão, com recall de aproximadamente 80% a 100%.

A interface é simples: crie um índice com NNDescent(data) e depois chame index.query(query_data, k=15). É possível salvar os índices em disco com pickle. A biblioteca oferece suporte a várias métricas prontas para uso, incluindo Euclidean, Manhattan, cosine, Hamming, Jaccard e Wasserstein, além de funções de distância definidas pelo usuário.

A instalação pode ser feita com pip ou conda, e a biblioteca se integra ao scikit-learn, inclusive com um KNeighborTransformer que pode substituir outros componentes de busca por vizinhos mais próximos.

Recursos principais

  • 01Constrói grafos de k vizinhos mais próximos com Nearest Neighbor Descent e inicialização por árvores de projeção aleatória.
  • 02Oferece suporte a várias métricas de distância integradas, incluindo métricas binárias e de probabilidade.
  • 03Aceita funções de distância personalizadas, definidas pelo usuário.
  • 04Oferece uma API mínima para criar índices e fazer consultas de k-NN.
  • 05Integra-se ao scikit-learn como KNeighborTransformer.

Casos de uso

  • Encontrar itens semelhantes em vetores de embeddings de alta dimensionalidade para busca ou recomendação.
  • Executar cálculos de vizinhos mais próximos em pipelines do scikit-learn.
  • Construir grafos de k-NN para tarefas posteriores, como clustering ou aprendizado de variedades.
  • Fazer buscas com métricas não euclidianas, como cosine, Jaccard ou distância de Wasserstein.

Início rápido

  1. 1

    Instale o pacote com pip

    pip install pynndescent
  2. 2

    Crie um índice de busca com seus dados e consulte os 15 vizinhos mais próximos

Antes de usar

  • O README informa que o projeto ainda é recente e que sua documentação continua em expansão.
  • Ele é voltado para busca aproximada de alta precisão (80% a 100%), não para busca exata.

Tópicos

#approximate-nearest-neighbor#nearest-neighbor-search#knn-graph#similarity-search#scikit-learn#numba#approximate-nearest-neighbor-search#knn-graphs

Perguntas frequentes

O que é pynndescent?
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. O PyNNDescent constrói um grafo de k vizinhos mais próximos e responde a consultas aproximadas de vizinhos mais próximos com base nele. Ele implementa Nearest Neighbor Descent, usando árvores de projeção aleatória na inicialização e podando arestas longas de triângulos no grafo para melhorar o resultado. É voltado a cargas de trabalho que exigem alta precisão, com recall de aproximadamente 80% a 100%.
pynndescent é gratuito? Qual é a licença?
pynndescent é open source sob a licença BSD-2-Clause. Confira os termos da licença antes de usá-lo em produtos comerciais.
pynndescent ainda é mantido?
Manutenção ativa. O último commit de pynndescent foi em 6 de nov. de 2026.
Para que posso usar pynndescent?
Encontrar itens semelhantes em vetores de embeddings de alta dimensionalidade para busca ou recomendação. Executar cálculos de vizinhos mais próximos em pipelines do scikit-learn. Construir grafos de k-NN para tarefas posteriores, como clustering ou aprendizado de variedades. Fazer buscas com métricas não euclidianas, como cosine, Jaccard ou distância de Wasserstein.
Como instalar pynndescent?
Instale o pacote com pip: pip install pynndescent Crie um índice de busca com seus dados e consulte os 15 vizinhos mais próximos
Onde consigo pynndescent?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/lmcinnes/pynndescent

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados