1 pontos por GN⁺ 2024-03-12 | 1 comentários | Compartilhar no WhatsApp

Construindo um mecanismo de busca distribuído e open source para e-books

  • Por recomendação de um amigo, conheci um site de busca de e-books chamado Liber3, que usa nomes de domínio ENS.
  • O Liber3 criou um site de busca de e-books usando ENS e IPFS, mas não divulgou o código-fonte.
  • Depois de analisar a documentação e os datasets do Glitter, decidi implementar por conta própria uma versão comunitária open source.

Inicialização do projeto

  • Crie um novo projeto e instale o SDK do Glitter para se conectar facilmente à rede Glitter e obter os metadados dos e-books.

Conexão com a rede

  • Crie um cliente capaz de interagir com a rede Glitter.
  • Inicialize uma instância de LCDClient por meio do SDK do Glitter e configure os parâmetros relacionados.

Construção da funcionalidade de busca

  • Defina uma função de busca que receba as palavras-chave da consulta do usuário, monte a instrução de consulta e a envie para a rede Glitter.

Exibição dos resultados da busca

  • Depois de construir a funcionalidade de busca, projete uma interface que mostre as informações básicas dos e-books e ofereça elementos interativos para que o usuário possa navegar e selecionar livros com facilidade.
  • Por meio dessas quatro etapas, é possível construir um mecanismo de busca de e-books e oferecer aos usuários uma plataforma eficiente e conveniente para pesquisar recursos de e-books.
  • Se a versão compilada do site for publicada na rede IPFS, será possível ter um mecanismo de busca distribuído de e-books acessível por meio de um gateway IPFS.
  • Todo o código-fonte pode ser consultado neste repositório.

Opinião do GN⁺

  • Este artigo pode despertar o interesse de pessoas ligadas à tecnologia ao explicar como construir um mecanismo de busca de e-books usando tecnologias distribuídas e open source.
  • O uso de banco de dados distribuído e IPFS apresenta uma nova forma de armazenar e recuperar dados sem depender de servidores centralizados, o que tem potencial para melhorar a persistência e a acessibilidade dos dados.
  • Ao adotar essa tecnologia, é preciso considerar fatores como estabilidade da rede, velocidade de busca e experiência do usuário, além de entender as vantagens e desvantagens em comparação com mecanismos de busca centralizados já existentes.
  • Outros projetos com funcionalidade semelhante incluem o Project Gutenberg e a Google Books API, mas eles não usam tecnologia distribuída.
  • O uso de tecnologia distribuída pode devolver aos usuários a propriedade e o controle dos dados, ao mesmo tempo em que fortalece a resistência à censura do conteúdo.

1 comentários

 
GN⁺ 2024-03-12
Opiniões no Hacker News
  • Há muito tempo eu queria lidar de forma parecida com datasets e modelos de IA sobre IPFS
    Não sei qual é o futuro do IPFS, mas, ao lidar com datasets em larga escala, seria bom se o núcleo de uma infraestrutura P2P de compartilhamento de dados, que permite que indivíduos resolvam problemas mesmo com pouco hardware, se tornasse mais acessível
    https://github.com/JakeKalstad/IPFSPytorchDataset
    https://github.com/JakeKalstad/load_ipfs_pytorch_model

  • Pelo título, achei que fosse busca em texto completo e fiquei realmente animado
    Zlib e Google Books já fazem isso, mas uma versão open source para a qual todos pudessem contribuir e que também oferecesse acesso ao texto completo seria um projeto incrível

  • Se for só para encontrar título de livro ou autor, mecanismos de busca já existem aos montes
    O que falta é um índice de busca do conteúdo dos e-books, e na era da IA generativa isso logo vai se tornar extremamente importante
    Alguém no HN disse que é possível indexar o texto integral de milhões de livros com um único notebook, enquanto outros dizem que o escopo é quase impossível. Fico curioso se existe algum projeto fazendo isso

    • Estou criando um projeto paralelo que organiza coleções de destaques de e-books com busca semântica no dispositivo
      Por enquanto ele indexa apenas o próprio conteúdo do usuário, mas no futuro quero adicionar um modo em que coleções possam ser compartilhadas para que outras pessoas descubram, por busca semântica, ideias relacionadas que alguém encontrou nos livros. O funcionamento atual pode ser visto no open source
      [1] https://emdash.ai/
      [2] https://github.com/dmotz/emdash
    • O tamanho do índice depende muito mais do texto pesquisável do que do número de itens pesquisados
      Lembro que o Google documentou algo assim no começo: o índice de busca retorna metadados relevantes que correspondem a uma consulta específica. O espaço de consultas se baseia principalmente em palavras-chave brutas e tuplas e, se minha memória estiver certa, em n-gramas de 2 a 3 palavras; estes últimos precisam atender a uma frequência mínima. Consultas longas podem ser compostas por n-gramas mais curtos
      O vocabulário de um falante nativo avançado de inglês costuma ter cerca de 40 mil palavras, e mesmo um dicionário grande incluindo palavras antigas pode ter menos de 250 mil palavras
      Mapear o vocabulário para as obras que citam essas palavras é relativamente simples. N-gramas têm explosão combinatória, mas ainda assim formam um espaço bastante limitado, e já temos mais de 25 anos de experiência indexando documentos na escala da web
      Acho que um notebook também conseguiria criar algum índice utilizável para milhões de livros, mas, para um índice mais abrangente, especialmente incluindo índice de ranqueamento do espaço de busca, provavelmente seria necessário um sistema um pouco maior. Talvez essa seja a parte mais difícil
    • Depende de quão potente é esse notebook
      Trabalhei recentemente com LLMs locais e, embora a quantização tenha avançado bastante, fazer esse tipo de tarefa em um ThinkPad ainda fica muito atrás de alugar por algumas horas uma VPS com algumas 4090/H100
      O maior problema na sumarização é que a maioria dos modelos de LLM locais não tem uma janela de contexto muito grande, então até textos grandes, como um romance curto do Vonnegut, já são difíceis para eles. Testei com resumos de issues do GitHub e, mesmo com uma janela de contexto de 16k tokens, às vezes eles sofrem quando há muitos comentários
      Claro, alguém mais esperto do que eu talvez consiga fazer isso rodar até em um Raspberry Pi
    • Pelo que sei, o popular e gratuito gerenciador de e-books Calibre agora oferece suporte à indexação do texto completo de todos os livros que você possui
    • A criação inicial do índice talvez seja possível mesmo com um notebook médio, mas atualizar o índice com frequência e atender às requisições parece algo computacionalmente bem pesado
      Não tenho base para isso, é só especulação, então gostaria de saber mais
  • Você poderia explicar em detalhes como o índice de busca é preenchido e quais seriam os limites de memória esperados?

  • Legal. Será que dá para usar também em busca de torrents?
    Algo como rodar junto um web torrent com streaming de vídeo e um mecanismo de busca descentralizado

  • Fico me perguntando se isso é um mecanismo de busca de verdade ou só um frontend que gera consultas select from

  • Não faço ideia do que isso quer dizer
    Aparecem frases como “me recomendaram o Liber3, ele usa nomes de domínio ENS, roda em ENS e IPFS, parece usar Glitter e é um serviço feito com Tendermint”, e isso soa como um sinal alienígena vindo de outra galáxia
    Também tentei o tal Liber3, mas, faça o que eu fizer, só aparece “Oops! Something went wrong. Please refresh or try again later”. Do que se trata tudo isso?

    • ENS é o Ethereum Name Service, que você pode entender como um DNS para blockchain
      IPFS é o InterPlanetary File System, algo mais próximo de um armazenamento distribuído de objetos imutável, tipo um S3 P2P
      Glitter me soa familiar, mas não me vem à cabeça agora
      Tendermint é um mecanismo de consenso para blockchain e faz parte de uma cadeia de ferramentas que, junto com o Inter-Blockchain Communication (IBC) Protocol e o Cosmos SDK, tenta viabilizar interoperabilidade entre blockchains
      O ecossistema de blockchain é realmente um pequeno mundo próprio. Não quero dizer que seja excludente, mas é bem fechado em sua bolha, então, se você não procurar ativamente, dificilmente vai esbarrar nisso
      Além disso, se você tem interesse em bancos de dados ou em sistemas descentralizados trustless, vale a pena dar uma olhada no IPFS, mesmo sendo cético em relação a blockchain. Há trabalhos bem interessantes acontecendo lá dentro, e a equipe não entrou na vibe de corrida do ouro como quase todos os projetos de blockchain
    • O título é uma versão sem jargão
      Dá para entender como instruções de implementação para criar um mecanismo de busca open source de e-books. Claro que essa explicação ainda tem um pouco de jargão, mas não chega ao ponto de listar um monte de nomes de bibliotecas específicas
      A maior parte do texto é de detalhes de implementação, e há links úteis
  • E então você percebe que isso já existe há quase 15 anos e se chamava libgen.rs

    • Anna's Archive é melhor