Construindo um mecanismo de busca distribuído e open source para e-books
(github.com/j2qk3b)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
LCDClientpor 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
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
Ex.: https://openlibrary.org/search/inside?q=%22institutional+thi...
É open source e está sempre procurando contribuidores. Acho que ajuda para melhorar a busca seria especialmente bem-vinda
https://github.com/internetarchive/openlibrary/
O problema é que muitos livros são scans em PDF e não têm o texto original; o OcrMyPdf até resolve isso muito bem, mas consome bastante CPU
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
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
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
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
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
Também pretendo criar uma versão open source
Aqui há uma versão open source para busca de torrents que usa a mesma tecnologia
Fico me perguntando se isso é um mecanismo de busca de verdade ou só um frontend que gera consultas
select fromNã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?
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
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