Repolode
nmslib

nmslib/hnswlib

Biblioteca C++ header-only con bindings para Python que permite buscar vecinos aproximados rápidamente mediante el algoritmo de grafos HNSW.

Estrellas
5,364
Forks
862
Issues abiertos
311
Último commit
hace 2 meses

¿Qué es?

Hnswlib es una implementación en C++ header-only de grafos Hierarchical Navigable Small World (HNSW) para buscar vecinos aproximados. Indexa vectores de alta dimensionalidad para encontrar las coincidencias más cercanas a un vector de consulta mucho más rápido que con una comparación por fuerza bruta, a cambio de devolver resultados que son aproximados, no necesariamente los más cercanos exactos.

La biblioteca incluye bindings para Python compatibles con arrays de NumPy y admite distancias L2, de producto interno y coseno. Los índices se pueden crear de forma incremental, actualizar volviendo a insertar etiquetas, marcar como eliminados y guardar o cargar desde el disco. También se pueden serializar con pickle los índices de Python. En C++ se pueden proporcionar funciones de distancia personalizadas.

El núcleo de C++ no tiene dependencias aparte de C++11. Las versiones recientes incorporan operaciones de guardado y carga basadas en streams y una API opcional sin excepciones para compilaciones con -fno-exceptions.

Funciones clave

  • 01Implementación en C++ header-only, sin dependencias aparte de C++11.
  • 02Bindings para Python compatibles con arrays de NumPy y distancias L2, de producto interno y coseno.
  • 03Inserción incremental, actualización de etiquetas existentes y marcado de elementos como eliminados.
  • 04Guardado y carga de índices desde el disco, además de compatibilidad con pickle en Python.
  • 05Búsqueda filtrada mediante una función booleana y distancias personalizadas en C++.

Casos de uso

  • Crear un backend de búsqueda semántica o recomendaciones con vectores de embeddings.
  • Encontrar imágenes o productos similares a partir de sus vectores de características.
  • Añadir un índice rápido de vecinos más cercanos a una aplicación en C++ sin incorporar una dependencia grande.
  • Mantener un índice vectorial cuyos elementos se agregan, actualizan o eliminan con frecuencia.

Antes de usarlo

  • El README describe la versión 0.10.0rc2, una versión candidata que no debe considerarse estable.
  • La búsqueda filtrada en Python está limitada por el GIL y funciona lentamente en modo multihilo.

En colecciones

Temas

Preguntas frecuentes

¿Qué es hnswlib?
Biblioteca C++ header-only con bindings para Python que permite buscar vecinos aproximados rápidamente mediante el algoritmo de grafos HNSW. Hnswlib es una implementación en C++ header-only de grafos Hierarchical Navigable Small World (HNSW) para buscar vecinos aproximados. Indexa vectores de alta dimensionalidad para encontrar las coincidencias más cercanas a un vector de consulta mucho más rápido que con una comparación por fuerza bruta, a cambio de devolver resultados que son aproximados, no necesariamente los más cercanos exactos.
¿hnswlib es gratuito? ¿Qué licencia tiene?
hnswlib es open source bajo la licencia Apache-2.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿hnswlib sigue mantenido?
Actualizado en los últimos 6 meses. El último commit de hnswlib fue el 15 sept 2026.
¿Para qué puedo usar hnswlib?
Crear un backend de búsqueda semántica o recomendaciones con vectores de embeddings. Encontrar imágenes o productos similares a partir de sus vectores de características. Añadir un índice rápido de vecinos más cercanos a una aplicación en C++ sin incorporar una dependencia grande. Mantener un índice vectorial cuyos elementos se agregan, actualizan o eliminan con frecuencia.
¿Dónde consigo hnswlib?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/nmslib/hnswlib

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

Proyectos relacionados