Extensión de código abierto para buscar vectores similares en Postgres y almacenar y consultar embeddings junto con los datos relacionales.
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
Instala el paquete con pip
pip install pynndescent - 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
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
Biblioteca de recuperación y base de datos embebida para IA multimodal, con búsqueda vectorial, de texto completo y SQL sobre datos en formato Lance.
Biblioteca de C++ para búsquedas aproximadas de vecinos más cercanos a gran escala, con herramientas para crear índices, buscar y ofrecer servicio distribuido.
Biblioteca de C++ y herramienta de línea de comandos para buscar rápidamente vecinos más cercanos aproximados en vectores de alta dimensión mediante índices de grafos y árboles.
Biblioteca C++ header-only con bindings para Python que permite buscar vecinos aproximados rápidamente mediante el algoritmo de grafos HNSW.
Extensión de PostgreSQL escrita en Rust que añade un índice basado en DiskANN y filtros por etiquetas a pgvector para acelerar las búsquedas vectoriales y reducir su costo.