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.
microsoft/SPTAG
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.
- Estrellas
- 5,021
- Forks
- 625
- Issues abiertos
- 143
- Último commit
- anteayer
¿Qué es?
SPTAG (Space Partition Tree And Graph) es una biblioteca para buscar vecinos más cercanos aproximados en vectores, un tipo de consulta que se usa en búsquedas semánticas y sistemas de recomendación. Dado un vector de consulta, devuelve los vectores almacenados con menor distancia L2 o coseno, sacrificando un poco de precisión para lograr búsquedas mucho más rápidas que una comparación exhaustiva.
Ofrece dos variantes de índice: SPTAG-KDT, que usa árboles kd y tiene un menor costo de creación del índice, y SPTAG-BKT, que usa árboles k-means balanceados y está pensado para lograr mayor precisión de búsqueda con datos de muy alta dimensionalidad. Ambas combinan un árbol de partición del espacio con un grafo de vecindad relativa, y la búsqueda alterna entre ambos para encontrar resultados.
La biblioteca admite la inserción y eliminación de vectores en línea sin tener que reconstruir el índice completo, y permite distribuir las búsquedas entre varias máquinas. Incluye un wrapper de Python y se compila en Linux, Windows y Docker.
Funciones clave
- 01Admite las distancias L2 y coseno para medir la similitud entre vectores.
- 02Ofrece variantes de índice basadas en árboles kd (SPTAG-KDT) y árboles k-means balanceados (SPTAG-BKT).
- 03Permite insertar y eliminar vectores en línea sin reconstruir el índice.
- 04Distribuye las búsquedas entre varias máquinas para ofrecer el servicio.
- 05Incluye un wrapper de Python y un tutorial para crear un servicio de búsqueda vectorial en línea.
Casos de uso
- Crear un backend de búsqueda semántica a gran escala sobre vectores de embeddings.
- Ofrecer consultas de vecinos más cercanos para recomendaciones o búsquedas de similitud entre imágenes.
- Indexar conjuntos de datos que cambian con frecuencia y necesitan actualizaciones en línea.
- Ejecutar búsquedas vectoriales en varias máquinas cuando un índice no cabe en una sola.
Inicio rápido
- 1
Clona el repositorio con sus submódulos
git clone --recurse-submodules https://github.com/microsoft/SPTAG - 2
Compila con CMake desde el directorio build (se requieren swig, cmake y boost)
mkdir build && cd build && cmake -DSPDK=OFF -DROCKSDB=OFF .. && make - 3
Ejecuta el binario SPTAGTest en la carpeta Release para verificar la compilación
Antes de usarlo
- Para compilar desde el código fuente se necesitan swig, cmake y boost, y los pasos son distintos en Linux y Windows.
- La clonación rápida del repositorio depende de Git LFS y de los submódulos.
En colecciones
Temas
Preguntas frecuentes
- ¿Qué es SPTAG?
- 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. SPTAG (Space Partition Tree And Graph) es una biblioteca para buscar vecinos más cercanos aproximados en vectores, un tipo de consulta que se usa en búsquedas semánticas y sistemas de recomendación. Dado un vector de consulta, devuelve los vectores almacenados con menor distancia L2 o coseno, sacrificando un poco de precisión para lograr búsquedas mucho más rápidas que una comparación exhaustiva.
- ¿SPTAG es gratuito? ¿Qué licencia tiene?
- SPTAG es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿SPTAG sigue mantenido?
- Mantenimiento activo. El último commit de SPTAG fue el 6 nov 2026.
- ¿Para qué puedo usar SPTAG?
- Crear un backend de búsqueda semántica a gran escala sobre vectores de embeddings. Ofrecer consultas de vecinos más cercanos para recomendaciones o búsquedas de similitud entre imágenes. Indexar conjuntos de datos que cambian con frecuencia y necesitan actualizaciones en línea. Ejecutar búsquedas vectoriales en varias máquinas cuando un índice no cabe en una sola.
- ¿Cómo se instala SPTAG?
- Clona el repositorio con sus submódulos: git clone --recurse-submodules https://github.com/microsoft/SPTAG Compila con CMake desde el directorio build (se requieren swig, cmake y boost): mkdir build && cd build && cmake -DSPDK=OFF -DROCKSDB=OFF .. && make Ejecuta el binario SPTAGTest en la carpeta Release para verificar la compilación
- ¿Dónde consigo SPTAG?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/microsoft/SPTAG
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Biblioteca C++ header-only con bindings para Python que permite buscar vecinos aproximados rápidamente mediante el algoritmo de grafos HNSW.
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 de C++ en un solo archivo para búsqueda aproximada de vecinos más cercanos y clustering de vectores, con bindings para Python, JavaScript, Rust, Java, Go, Swift y más.
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.
Extensión de código abierto para buscar vectores similares en Postgres y almacenar y consultar embeddings junto con los datos relacionales.