Repolode
lmcinnes

lmcinnes/pynndescent

Biblioteca de búsqueda aproximada de vecinos más cercanos, escrita íntegramente en Python y basada en Nearest Neighbor Descent, con amplia compatibilidad con métricas de distancia.

Estrellas
975
Forks
116
Issues abiertos
90
Último commit
hace 12 horas

¿Qué es?

PyNNDescent construye un grafo de k vecinos más cercanos y responde consultas aproximadas de vecinos más cercanos sobre él. Implementa Nearest Neighbor Descent, utiliza árboles de proyección aleatoria para la inicialización y elimina aristas largas de triángulos del grafo para mejorar los resultados. Está pensada para cargas de trabajo que requieren una precisión alta, con un recall aproximado del 80 % al 100 %.

La interfaz es sencilla: crea un índice con NNDescent(data) y luego llama a index.query(query_data, k=15). Los índices se pueden guardar en disco mediante pickle. La biblioteca admite de fábrica una amplia variedad de métricas, como Euclidean, Manhattan, cosine, Hamming, Jaccard y Wasserstein, además de funciones de distancia definidas por el usuario.

Se puede instalar con pip o conda y se integra con scikit-learn, incluido KNeighborTransformer, que puede sustituir a otros componentes de búsqueda de vecinos más cercanos.

Funciones clave

  • 01Construye grafos de k vecinos más cercanos con Nearest Neighbor Descent y árboles de proyección aleatoria para la inicialización.
  • 02Admite muchas métricas de distancia integradas, incluidas métricas binarias y de probabilidad.
  • 03Acepta funciones de distancia personalizadas definidas por el usuario.
  • 04Ofrece una API minimalista para crear índices y realizar consultas de k vecinos más cercanos.
  • 05Se integra con scikit-learn mediante KNeighborTransformer.

Casos de uso

  • Encontrar elementos similares en vectores de embeddings de alta dimensión para búsquedas o recomendaciones.
  • Realizar cálculos de vecinos más cercanos dentro de pipelines de scikit-learn.
  • Construir grafos de k vecinos más cercanos para tareas posteriores, como clustering o aprendizaje de variedades.
  • Buscar con métricas no euclidianas, como cosine, Jaccard o la distancia Wasserstein.

Inicio rápido

  1. 1

    Instala el paquete con pip

    pip install pynndescent
  2. 2

    Crea un índice de búsqueda con tus datos y consulta los 15 vecinos más cercanos

Antes de usarlo

  • El README indica que el proyecto aún es joven y que su documentación sigue creciendo.
  • Está orientado a búsquedas aproximadas de alta precisión (80 %-100 %), no a búsquedas exactas.

Temas

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

Preguntas frecuentes

¿Qué es pynndescent?
Biblioteca de búsqueda aproximada de vecinos más cercanos, escrita íntegramente en Python y basada en Nearest Neighbor Descent, con amplia compatibilidad con métricas de distancia. PyNNDescent construye un grafo de k vecinos más cercanos y responde consultas aproximadas de vecinos más cercanos sobre él. Implementa Nearest Neighbor Descent, utiliza árboles de proyección aleatoria para la inicialización y elimina aristas largas de triángulos del grafo para mejorar los resultados. Está pensada para cargas de trabajo que requieren una precisión alta, con un recall aproximado del 80 % al 100 %.
¿pynndescent es gratuito? ¿Qué licencia tiene?
pynndescent es open source bajo la licencia BSD-2-Clause. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿pynndescent sigue mantenido?
Mantenimiento activo. El último commit de pynndescent fue el 6 nov 2026.
¿Para qué puedo usar pynndescent?
Encontrar elementos similares en vectores de embeddings de alta dimensión para búsquedas o recomendaciones. Realizar cálculos de vecinos más cercanos dentro de pipelines de scikit-learn. Construir grafos de k vecinos más cercanos para tareas posteriores, como clustering o aprendizaje de variedades. Buscar con métricas no euclidianas, como cosine, Jaccard o la distancia Wasserstein.
¿Cómo se instala pynndescent?
Instala el paquete con pip: pip install pynndescent Crea un índice de búsqueda con tus datos y consulta los 15 vecinos más cercanos
¿Dónde consigo pynndescent?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/lmcinnes/pynndescent

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados