6 pontos por GN⁺ 2025-05-06 | 1 comentários | Compartilhar no WhatsApp
  • O VectorVFS armazena embeddings vetoriais como metadados de cada arquivo, permitindo usar o próprio sistema de arquivos Linux como um banco de dados vetorial
  • Sem índice externo nem DB, ele viabiliza indexação com overhead zero por meio de xattrs (atributos estendidos) do sistema de arquivos
  • Permite explorar arquivos semelhantes por busca de embeddings e pode se conectar a vários modelos de embedding sem depender de um modelo específico
  • Usa os Perception Encoders (PE) da Meta para gerar embeddings vetoriais com base em imagem/vídeo, mostrando desempenho zero-shot superior ao de outros modelos
  • Com uma estrutura leve e portátil, pode ser usado imediatamente sem daemon ou serviço separado

Introdução

  • VectorVFS é uma biblioteca Python leve que possibilita armazenar e buscar embeddings de arquivos usando apenas recursos nativos do sistema de arquivos Linux
  • Sem banco de dados externo, ele armazena os valores de embedding nos atributos estendidos (xattrs) de cada arquivo
  • Mantendo a estrutura de diretórios existente, é possível expandi-la para um sistema com busca semântica

Principais recursos

  • Zero-overhead indexing

    • Armazena embeddings vetoriais diretamente como xattr do arquivo
    • Não requer serviço externo de indexação nem armazenamento adicional; os metadados ficam apenas ao lado do arquivo
  • Seamless retrieval

    • Permite realizar busca por similaridade baseada em vetores em todo o sistema de arquivos
    • Exemplo: é possível buscar arquivos de imagem semelhantes com algo como find_similar_images('example.jpg')
  • Flexible embedding support

    • Usa por padrão o modelo Perception Encoders (PE) da Meta
    • No futuro, há previsão de suporte a vários modelos de embedding (ex.: texto, áudio, multimodal)
    • Modelos de embedding personalizados também podem ser integrados no formato de plugin
  • Lightweight and portable

    • Baseado no recurso Linux VFS (xattr), não exige daemon nem configuração de servidor separada
    • Por ser portátil, pode ser usado em diretórios locais ou armazenamento externo
  • Modelo de embedding usado: Meta Perception Encoders

    • O PE é um modelo visão-linguagem baseado em imagem/vídeo anunciado pela Meta
    • Tem desempenho zero-shot superior ao de modelos concorrentes como InternVL3, Qwen2.5VL e SigLIP2
    • No futuro, mais modelos de embedding de backend devem ser adicionados

Resumo

  • É possível construir um sistema vetorial com busca por significado mantendo intacta a estrutura de arquivos existente
  • O custo de armazenamento dos embeddings é quase zero e ele funciona sem infraestrutura separada
  • É adequado para garantir privacidade e implementar busca em ambientes offline ou dispositivos de edge

1 comentários

 
GN⁺ 2025-05-06
Comentários do Hacker News
  • Comparar isso com um banco de dados vetorial é confuso. Banco de dados normalmente implica suporte a índices e consultas

    • Armazenar embeddings como arquivos é um conceito interessante. Já é usado em alguns formatos de arquivo (EXIF). Porém, para processamento em larga escala, é preciso um banco de dados de verdade
    • O desafio é oferecer suporte a vários modelos e formatos de embedding para aumentar a portabilidade dos dados. Os embeddings precisam se integrar sem atrito, independentemente do sistema em que o arquivo for colocado
  • A ideia é anexar metadados aos arquivos para que ferramentas capazes de entender LLMs ou vetores de embedding possam compreender o arquivo sem ler seu conteúdo

    • Há muitos casos de uso interessantes. Por exemplo, seria possível pesquisar rapidamente no sistema de arquivos com um prompt como "reproduzir o vídeo do mês passado em que vimos um bando de perus no acampamento". Ainda assim, um banco de dados vetorial real precisaria estar rodando no sistema
  • Pode ser interessante adicionar Weaviate e flat-index ao projeto de forma opcional

    • É totalmente baseado em disco, sem usar serviços externos. Dá para pesquisar o sistema de arquivos inteiro (cerca de 1,5 kb por arquivo, 384 dimensões)
  • É uma ótima ideia

    • A documentação precisa de mais informações. Por exemplo, quais backends de GPU são suportados e como remover as informações de embedding
    • Vale a pena testar
  • Se o VectorVFS esconder a lógica de busca por trás de embeddings opacos, fico me perguntando como o usuário poderia depurar por que um arquivo apareceu, ou por que não apareceu

  • A velha discussão entre sistema de arquivos e banco de dados é sempre interessante. Sempre saio com mais perguntas quando leio algo assim

  • Fiz algo parecido, mas usando requisitos do EXT4

    • links físicos (para backup, só tar funcionava)
    • tamanho pequeno de arquivo (os inodes se esgotavam antes do espaço em disco)
    • útil para dados em tempo real distribuídos globalmente. O P do CAP não é necessário para escrita
  • É uma ideia divertida armazenar embeddings em inodes. Muito inteligente

    • Não é algo realmente utilizável como banco de dados vetorial. Não há conceito de índice de busca. Faz busca linear O(N) em todos os arquivos
    • Ainda assim, é uma ideia divertida
  • Investiguei algo parecido alguns anos atrás. Armazenei embeddings em xattrs