6 points par GN⁺ 2025-05-06 | 1 commentaires | Partager sur WhatsApp
  • VectorVFS stocke les embeddings vectoriels comme métadonnées pour chaque fichier, ce qui permet d’utiliser directement le système de fichiers Linux comme base de données vectorielle
  • Sans index externe ni base de données, il réalise une indexation à surcoût nul grâce aux xattrs (attributs étendus) du système de fichiers
  • Il permet la recherche de fichiers similaires via la recherche par embeddings et peut se connecter à divers modèles d’embedding sans dépendre d’un modèle spécifique
  • En utilisant les Perception Encoders (PE) de Meta, il génère des embeddings vectoriels à partir d’images et de vidéos, avec de meilleures performances zero-shot que d’autres modèles
  • Grâce à une architecture légère et portable, il peut être utilisé immédiatement sans daemon ni service séparé

Introduction

  • VectorVFS est une bibliothèque Python légère qui permet de stocker et de rechercher des embeddings de fichiers en s’appuyant uniquement sur les fonctionnalités natives du système de fichiers Linux
  • Sans base de données externe, il stocke les valeurs d’embedding dans les attributs étendus (xattrs) de chaque fichier
  • Il permet d’étendre une structure de répertoires existante telle quelle en un système capable de recherche sémantique

Fonctionnalités principales

  • Zero-overhead indexing

    • Les embeddings vectoriels sont stockés directement comme xattr du fichier
    • Aucun service d’indexation externe ni stockage supplémentaire nécessaire ; les métadonnées restent simplement à côté du fichier
  • Seamless retrieval

    • Permet d’effectuer une recherche de similarité vectorielle sur l’ensemble du système de fichiers
    • Exemple : recherche d’images similaires avec find_similar_images('example.jpg')
  • Flexible embedding support

    • Utilise par défaut le modèle Perception Encoders (PE) de Meta
    • La prise en charge de divers modèles d’embedding est prévue à l’avenir (par ex. texte, audio, multimodal)
    • Des modèles d’embedding personnalisés peuvent aussi être intégrés sous forme de plugins
  • Lightweight and portable

    • Basé sur les fonctionnalités VFS Linux (xattr), sans besoin de daemon ou de serveur séparé
    • Son approche portable permet aussi une utilisation sur des répertoires locaux ou des stockages externes
  • Modèle d’embedding utilisé : Meta Perception Encoders

    • PE est un modèle vision-langage pour images/vidéos annoncé par Meta
    • Il offre de meilleures performances zero-shot que des modèles concurrents comme InternVL3, Qwen2.5VL et SigLIP2
    • D’autres modèles d’embedding backend seront ajoutés à l’avenir

Résumé

  • Il permet de construire un système vectoriel de recherche sémantique tout en conservant la structure de fichiers existante telle quelle
  • Le coût de stockage des embeddings est quasi nul, et il fonctionne sans infrastructure séparée
  • Il est adapté à la mise en œuvre de fonctions de recherche avec protection de la vie privée sur des équipements offline ou edge

1 commentaires

 
GN⁺ 2025-05-06
Commentaires sur Hacker News
  • La comparaison avec une base de données vectorielle est déroutante. Une base de données implique généralement la prise en charge d’index et de requêtes

    • Stocker des embeddings sous forme de fichiers est un concept intéressant. C’est déjà utilisé dans certains formats de fichiers (EXIF). Mais pour un traitement à grande échelle, une véritable base de données est nécessaire
    • Le défi est de prendre en charge différents modèles et formats d’embeddings afin d’améliorer la portabilité des données. Les embeddings devraient pouvoir s’intégrer facilement, quel que soit le système dans lequel on place les fichiers
  • Il s’agit d’attacher des métadonnées aux fichiers afin que des outils capables de comprendre les LLMs ou les vecteurs d’embedding puissent comprendre un fichier sans en lire le contenu

    • Il y a beaucoup de cas d’usage intéressants. Par exemple, on pourrait rechercher rapidement dans le système de fichiers avec un prompt comme « lire la vidéo du mois dernier où j’étais en camping et où j’ai vu un groupe de dindons ». Mais une véritable base de données vectorielle doit quand même être exécutée sur le système
  • Il pourrait être intéressant d’ajouter Weaviate et flat-index au projet de manière optionnelle

    • C’est entièrement basé sur le disque, sans utiliser de service externe. Il est possible de rechercher dans tout le système de fichiers (environ 1,5 ko par fichier, 384 dimensions)
  • C’est une excellente idée

    • La documentation a besoin de plus d’informations. Par exemple, quels backends GPU sont pris en charge, comment supprimer les informations d’embedding, etc.
    • Cela vaut la peine d’essayer
  • Si VectorVFS masque la logique de recherche derrière des embeddings opaques, on peut se demander comment un utilisateur pourrait déboguer pourquoi un fichier apparaît, ou n’apparaît pas

  • Le vieux débat entre système de fichiers et base de données est toujours intéressant. Quand je lis ce genre de chose, cela me soulève toujours encore plus de questions

  • J’ai fait quelque chose de similaire, mais en utilisant les contraintes d’EXT4

    • Liens physiques (pour les sauvegardes, seul tar fonctionnait)
    • Petite taille de fichier (les inodes s’épuisaient avant l’espace disque)
    • Utile pour des données en temps réel distribuées à l’échelle mondiale. Le P de CAP n’est pas nécessaire pour l’écriture
  • C’est une idée amusante de stocker les embeddings dans les inodes. Très malin

    • Ce n’est pas vraiment utilisable comme base de données vectorielle. Il n’y a pas de notion d’index de recherche. Tous les fichiers sont parcourus par recherche linéaire en O(N)
    • Cela reste malgré tout une idée amusante
  • J’avais étudié quelque chose de similaire il y a quelques années. Je stockais les embeddings dans les xattrs