Extensão open source de busca por similaridade vetorial para Postgres, que armazena e consulta embeddings junto aos seus dados relacionais.
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
Instale o pacote com pip
pip install pynndescent - 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
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
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 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.
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++ header-only com bindings para Python para busca aproximada e rápida de vizinhos mais próximos usando o algoritmo de grafo HNSW.
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.