- Cohere publicó un dataset con todo Wikipedia embebido en vectores
- Con este dataset, una persona puede crear un índice vectorial basado en significado de Wikipedia
Dificultades
- El tamaño del dataset (180 GB solo para el corpus en inglés) no es el problema
- Las bases de datos vectoriales existentes no podían indexar datasets más grandes que la memoria
- La biblioteca JVector permite indexar datasets más grandes que la memoria usando vectores comprimidos
Requisitos
- Se necesita Linux o MacOS (Windows no se puede usar por limitaciones de ChronicleMap)
- Se requieren 180 GB de espacio libre para el dataset y 90 GB para el índice
- Se necesita suficiente RAM para ejecutar una JVM con 36 GB de heap al construir el índice
- Es necesario desactivar el swap antes de construir el índice
Construcción del índice y búsqueda
Cómo funciona
- Se crea un índice vectorial con JVector y se almacenan los datos de los artículos con Chronicle Map
- Se usa Locally-Adaptive Quantization (LVQ) para la compresión de vectores
- Se procesan los datos en paralelo usando parallel streams
Conclusión
- Gracias a la biblioteca JVector, indexar todo Wikipedia en inglés en una laptop se vuelve algo realista
- Si se usa junto con el servicio DataStax Astra, se puede aprovechar una potente función de indexación con soporte para inserciones, actualizaciones y eliminaciones en tiempo real
Opinión de GN⁺
- La innovación de JVector: JVector puede traer una gran innovación al campo de la ciencia de datos y los motores de búsqueda al permitir indexar datasets de gran tamaño sin restricciones de memoria.
- Utilidad práctica: Al hacer posible que una persona indexe todo Wikipedia en una laptop, investigadores y desarrolladores pueden aprovechar datasets a gran escala con más facilidad.
- Consideraciones técnicas: Para adoptar esta tecnología, se necesitan suficiente espacio en disco y memoria, además de configuraciones del sistema como desactivar el swap.
- Tecnologías alternativas: Otros proyectos de código abierto con funciones similares incluyen FAISS (Facebook AI Similarity Search) y Annoy (Approximate Nearest Neighbors Oh Yeah).
- Optimización de rendimiento: El rendimiento puede optimizarse mediante procesamiento en paralelo y compresión de vectores, pero hay que prestar atención a la gestión de los recursos del sistema.
Aún no hay comentarios.