6 puntos por GN⁺ 2025-05-06 | 1 comentarios | Compartir por WhatsApp
  • VectorVFS almacena embeddings vectoriales como metadatos en cada archivo, lo que permite usar el propio sistema de archivos de Linux como una base de datos vectorial
  • Sin índices ni bases de datos externas, logra indexación con sobrecarga cero mediante la función de xattrs (atributos extendidos) del sistema de archivos
  • Permite la búsqueda de archivos similares mediante búsqueda por embeddings, y puede conectarse a distintos modelos de embeddings sin depender de uno en particular
  • Usa Perception Encoders (PE) de Meta para generar embeddings vectoriales basados en imagen/video, con un rendimiento zero-shot superior al de otros modelos
  • Tiene una estructura ligera y portable, por lo que puede usarse de inmediato sin daemons ni servicios adicionales

Introducción

  • VectorVFS es una biblioteca ligera de Python que permite almacenar y buscar embeddings de archivos usando solo funciones básicas del sistema de archivos de Linux
  • Sin una base de datos externa, almacena los valores de embedding en los atributos extendidos (xattrs) de cada archivo
  • Mantiene intacta la estructura de directorios existente, pero permite ampliarla a un sistema con búsqueda semántica

Funciones principales

  • Indexación con sobrecarga cero

    • Almacena los embeddings vectoriales directamente como xattrs del archivo
    • No requiere servicios externos de indexación ni almacenamiento adicional; solo existen como metadatos junto al archivo
  • Recuperación fluida

    • Permite realizar búsquedas de similitud basadas en vectores sobre todo el sistema de archivos
    • Ejemplo: se pueden buscar archivos de imagen similares con algo como find_similar_images('example.jpg')
  • Soporte flexible para embeddings

    • Usa por defecto el modelo Perception Encoders (PE) de Meta
    • En el futuro, se planea admitir varios modelos de embeddings (por ejemplo, texto, audio y multimodal)
    • También se pueden integrar modelos de embeddings personalizados mediante plugins
  • Ligero y portable

    • Basado en la función Linux VFS (xattr), no requiere configurar daemons ni servidores aparte
    • Gracias a su enfoque portable, puede usarse tanto en directorios locales como en almacenamiento externo
  • Modelo de embeddings usado: Meta Perception Encoders

    • PE es un modelo visión-lenguaje basado en imagen/video presentado por Meta
    • Ofrece mejor rendimiento zero-shot que modelos competidores como InternVL3, Qwen2.5VL y SigLIP2
    • En el futuro se agregarán varios modelos de embeddings de backend

Resumen

  • Permite construir un sistema vectorial con búsqueda basada en significado sin cambiar la estructura de archivos existente
  • El costo de almacenar embeddings es casi nulo, y puede funcionar sin infraestructura adicional
  • Es adecuado para implementar búsqueda y preservar la privacidad en equipos offline o de edge

1 comentarios

 
GN⁺ 2025-05-06
Comentarios en Hacker News
  • Compararlo con una base de datos vectorial resulta confuso. Una base de datos normalmente implica soporte de índices y consultas

    • Guardar embeddings como archivos es un concepto interesante. En algunos formatos de archivo (EXIF) ya se usa. Sin embargo, para procesamiento a gran escala se necesita una base de datos real
    • El reto es soportar varios modelos y formatos de embeddings para aumentar la portabilidad de los datos. Los embeddings deberían integrarse sin problemas sin importar en qué sistema se coloquen los archivos
  • La idea es adjuntar metadatos a los archivos para que herramientas capaces de entender LLMs o vectores de embeddings puedan comprender un archivo sin leer su contenido

    • Hay muchos casos de uso interesantes. Por ejemplo, se podría buscar rápidamente en el sistema de archivos con un prompt como "reproduce el video de cuando fui de campamento el mes pasado y vi una bandada de pavos". Aun así, una base de datos vectorial real tendría que estar corriendo en el sistema
  • Podría ser interesante agregar opcionalmente Weaviate y flat-index al proyecto

    • Es completamente basado en disco, sin usar servicios externos. Puede buscar en todo el sistema de archivos (aprox. 1.5 kb por archivo, 384 dimensiones)
  • Es una gran idea

    • Hace falta más información en la documentación. Por ejemplo, qué backends de GPU son compatibles o cómo eliminar la información de embeddings
    • Vale la pena probarlo
  • Si VectorVFS oculta la lógica de búsqueda detrás de embeddings opacos, me pregunto cómo podría el usuario depurar por qué apareció un archivo, o por qué no apareció

  • El viejo debate entre sistema de archivos y base de datos siempre es interesante. Leer cosas así siempre me deja con más preguntas

  • Hice algo parecido, pero usando los requisitos de EXT4

    • enlaces duros (para respaldos solo funcionaba tar)
    • tamaños de archivo pequeños (los inodos se agotaban antes que el espacio en disco)
    • Útil para datos en tiempo real distribuidos globalmente. La P de CAP no era necesaria para escritura
  • Es una idea divertida guardar embeddings en los inodos. Muy ingenioso

    • No es algo realmente utilizable como base de datos vectorial. No existe el concepto de índice de búsqueda. Hace una búsqueda lineal O(N) en todos los archivos
    • Aun así, es una idea divertida
  • Investigué algo parecido hace algunos años. Guardaba embeddings en xattrs