Repolode
NGT-labs

NGT-labs/NGT

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.

Estrellas
1,376
Forks
133
Issues abiertos
29
Último commit
hace 7 días

¿Qué es?

NGT ofrece comandos y una biblioteca para buscar vecinos más cercanos aproximados en colecciones grandes de vectores de alta dimensión, normalmente de decenas a miles de dimensiones. Crea índices de grafos de vecindad y árboles para encontrar objetos similares sin comparar una consulta con todos los elementos almacenados.

El proyecto ofrece varios métodos: un índice basado en grafos y árboles (NGT), un método de grafos cuantizados (QG) y un método de grafos de bloques cuantizados (QBG), pensado para conjuntos de datos muy grandes. Las funciones de distancia compatibles incluyen L1, L2, coseno, angular, Hamming, Jaccard, producto interno e hiperbólica (distancias de Poincaré y Lorentz). Los vectores se pueden almacenar como números de punto flotante de 4 o 2 bytes, o como enteros sin signo de 1 byte; los índices también se pueden ubicar en memoria compartida con asignación de memoria.

NGT incluye una CLI, una API de C++ y bindings para Python, Rust, Go, Ruby, PHP y JavaScript. Es posible agregar y eliminar objetos después de crear un índice. Se puede compilar en Linux, macOS y Windows mediante MinGW-w64/MSYS2; QG y QBG requieren BLAS y LAPACK.

Funciones clave

  • 01Búsqueda aproximada de vecinos más cercanos mediante índices de grafos y árboles
  • 02Compatible con distancias L1, L2, coseno, angular, Hamming, Jaccard, producto interno e hiperbólica
  • 03Permite agregar y eliminar objetos después de crear el índice
  • 04Tipos de datos Float32, float16 y uint8, además de cuantización de producto y escalar para índices de grafos
  • 05Opción de índice en memoria compartida (archivo con asignación de memoria) para conjuntos de datos grandes
  • 06Bindings para Python, Rust, Go, Ruby, PHP y JavaScript

Casos de uso

  • Encontrar imágenes, documentos o embeddings similares según la similitud vectorial en un servicio de búsqueda propio
  • Atender consultas de vecinos más cercanos desde varios procesos que comparten un índice en memoria
  • Ejecutar búsquedas por similitud en miles de millones de vectores con el método QBG
  • Probar la búsqueda vectorial desde la línea de comandos o Python antes de elegir un sistema más grande

Inicio rápido

  1. 1

    Instalar en macOS con Homebrew

    brew install ngt
  2. 2

    Descargar el archivo del código fuente desde la página Releases

  3. 3

    Configurar la compilación en Linux sin QG ni QBG

    cmake -DNGT_QBG_DISABLED=ON ..

Antes de usarlo

  • No se admiten compilaciones nativas con Microsoft Visual C++ (MSVC); actualmente, Windows requiere MinGW-w64 y desactivar QBG.
  • QG y QBG requieren las bibliotecas BLAS y LAPACK y solo se ejecutan en Linux y macOS.

En colecciones

Temas

#approximate-nearest-neighbor-search#vector-search#knn#high-dimensional-data#c-plus-plus#indexing#k-nearest-neighbors#knn-search#nearest-neighbor-search#nearest-neighbors

Preguntas frecuentes

¿Qué es NGT?
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. NGT ofrece comandos y una biblioteca para buscar vecinos más cercanos aproximados en colecciones grandes de vectores de alta dimensión, normalmente de decenas a miles de dimensiones. Crea índices de grafos de vecindad y árboles para encontrar objetos similares sin comparar una consulta con todos los elementos almacenados.
¿NGT es gratuito? ¿Qué licencia tiene?
NGT es open source bajo la licencia Apache-2.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿NGT sigue mantenido?
Mantenimiento activo. El último commit de NGT fue el 30 oct 2026.
¿Para qué puedo usar NGT?
Encontrar imágenes, documentos o embeddings similares según la similitud vectorial en un servicio de búsqueda propio Atender consultas de vecinos más cercanos desde varios procesos que comparten un índice en memoria Ejecutar búsquedas por similitud en miles de millones de vectores con el método QBG Probar la búsqueda vectorial desde la línea de comandos o Python antes de elegir un sistema más grande
¿Cómo se instala NGT?
Instalar en macOS con Homebrew: brew install ngt Descargar el archivo del código fuente desde la página Releases Configurar la compilación en Linux sin QG ni QBG: cmake -DNGT_QBG_DISABLED=ON ..
¿Dónde consigo NGT?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/NGT-labs/NGT

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

Proyectos relacionados