Créer un moteur de recherche distribué open source pour livres électroniques
(github.com/j2qk3b)Créer un moteur de recherche distribué open source pour livres électroniques
- Sur la recommandation d’un ami, l’auteur a découvert un site web de recherche de livres électroniques nommé Liber3, qui utilise un nom de domaine ENS.
- Liber3 a créé un site web de recherche de livres électroniques à l’aide d’ENS et d’IPFS, mais n’a pas publié son code source.
- Après avoir examiné la documentation et le jeu de données de Glitter, l’auteur a décidé d’implémenter lui-même une version communautaire open source.
Initialisation du projet
- Créer un nouveau projet et installer le SDK Glitter permet de se connecter facilement au réseau Glitter et d’obtenir les métadonnées des livres électroniques.
Connexion au réseau
- Un client est créé pour interagir avec le réseau Glitter.
- Une instance de
LCDClientest initialisée via le SDK Glitter et les paramètres associés sont configurés.
Mise en place de la fonctionnalité de recherche
- La fonctionnalité de recherche est définie pour recevoir les mots-clés de la requête de l’utilisateur, construire une requête, puis l’envoyer au réseau Glitter.
Affichage des résultats de recherche
- Une fois la fonctionnalité de recherche mise en place, une interface affichant les informations de base des livres électroniques est conçue, avec des éléments interactifs permettant aux utilisateurs de parcourir et sélectionner facilement les ouvrages.
- Ces quatre étapes permettent de construire un moteur de recherche de livres électroniques et d’offrir aux utilisateurs une plateforme efficace et pratique pour rechercher des ressources de livres électroniques.
- En publiant la version compilée du site web sur le réseau IPFS, il est possible de disposer d’un moteur de recherche distribué de livres électroniques accessible via une passerelle IPFS.
- L’intégralité du code source est disponible dans ce dépôt.
L’avis de GN⁺
- Cet article peut intéresser les personnes attirées par la technologie, car il explique comment construire un moteur de recherche de livres électroniques en s’appuyant sur l’open source et les technologies distribuées.
- L’utilisation d’une base de données distribuée et d’IPFS propose une nouvelle manière de stocker et rechercher des données sans dépendre d’un serveur centralisé, avec le potentiel d’améliorer la pérennité et l’accessibilité des données.
- Lors de l’adoption de cette technologie, il faut prendre en compte la stabilité du réseau, la vitesse de recherche et l’expérience utilisateur, et il est important de comprendre les avantages et les limites par rapport aux moteurs de recherche centralisés existants.
- Parmi les autres projets offrant des fonctionnalités similaires figurent Project Gutenberg et l’API Google Books, mais ils n’utilisent pas de technologies distribuées.
- L’usage de technologies distribuées permet à la fois de redonner aux utilisateurs la propriété et le contrôle des données, tout en renforçant la résistance à la censure des contenus.
1 commentaires
Commentaires sur Hacker News
Il y a longtemps, j’avais envie de traiter de façon similaire des jeux de données et modèles d’IA sur IPFS.
Je ne sais pas quel sera l’avenir d’IPFS, mais pour les grands jeux de données, j’aimerais que le cœur d’une infrastructure de partage de données P2P qui permet à des particuliers de résoudre des problèmes avec peu de matériel devienne plus accessible.
https://github.com/JakeKalstad/IPFSPytorchDataset
https://github.com/JakeKalstad/load_ipfs_pytorch_model
En voyant le titre, je me suis vraiment emballé en pensant qu’il s’agissait de recherche plein texte.
Zlib et Google Books le font déjà, mais une version open source à laquelle tout le monde pourrait contribuer et qui donnerait aussi accès au plein texte ferait un super projet.
Exemple : https://openlibrary.org/search/inside?q=%22institutional+thi...
C’est open source et ils cherchent toujours des contributeurs. Je pense qu’ils accueilleraient particulièrement volontiers de l’aide pour améliorer la recherche.
https://github.com/internetarchive/openlibrary/
Le problème, c’est que beaucoup de livres sont des PDF scannés sans texte source ; OcrMyPdf s’en sort plutôt bien, mais consomme beaucoup de CPU.
Si l’on cherche seulement des titres de livres ou des auteurs, il existe déjà quantité de moteurs de recherche.
Ce qui manque, c’est un index de recherche du contenu des ebooks, et à l’ère de l’IA générative, cela va bientôt devenir extrêmement important.
Quelqu’un sur HN disait qu’on pouvait indexer le texte de millions de livres avec un seul ordinateur portable, tandis que d’autres estimaient que l’ampleur de la tâche était presque impossible. Je me demande s’il existe un projet qui fasse cela.
Pour l’instant, il n’indexe que son propre contenu, mais j’aimerais plus tard ajouter un mode permettant de partager des collections afin que d’autres puissent découvrir, par recherche sémantique, des idées pertinentes trouvées dans des livres. Le fonctionnement actuel est visible en open source.
[1] https://emdash.ai/
[2] https://github.com/dmotz/emdash
Je me souviens que Google avait documenté ce point à ses débuts : un index de recherche renvoie les métadonnées pertinentes correspondant à une requête donnée. L’espace des requêtes repose surtout sur des mots-clés bruts et des tuples, et, si je me souviens bien, sur des n-grammes de 2 à 3 mots ; ces derniers doivent satisfaire à un seuil minimal de fréquence. Les requêtes longues peuvent être composées à partir de n-grammes plus courts.
Le vocabulaire d’un anglophone natif de niveau avancé tourne généralement autour de 40 000 mots, et même un grand dictionnaire incluant des mots anciens peut rester sous les 250 000 mots.
Mapper le vocabulaire vers les œuvres qui citent ces mots est relativement simple. Les n-grammes entraînent une explosion combinatoire, mais l’espace reste tout de même assez limité, et nous avons déjà plus de 25 ans d’expérience dans l’indexation de documents à l’échelle du web.
Un ordinateur portable devrait pouvoir produire, dans une certaine mesure, un index utilisable pour des millions de livres ; mais pour un index plus complet, en particulier avec un index de classement de l’espace de recherche, il faudra probablement un système plus conséquent. C’est sans doute là que se trouve le plus gros défi.
J’ai travaillé récemment avec des LLM locaux, et même si la quantification a beaucoup progressé, faire ce genre de tâche sur un ThinkPad reste possible, mais reste très loin de louer pendant quelques heures un VPS équipé de quelques 4090/H100.
Pour le résumé, le plus gros problème est que la plupart des modèles de LLM locaux n’ont pas une fenêtre de contexte très grande ; même de gros textes comme un court roman de Vonnegut leur posent problème. J’ai testé sur des résumés d’issues GitHub, et même avec une fenêtre de contexte de 16k tokens, ils peinent parfois quand il y a beaucoup de commentaires.
Bien sûr, quelqu’un de plus malin que moi pourrait peut-être faire tourner ça sur un Raspberry Pi.
Je n’ai pas de preuve, ce n’est qu’une intuition, donc j’aimerais en savoir plus.
Peux-tu expliquer plus en détail comment l’index de recherche est alimenté, et quelles sont les limites mémoire attendues ?
Sympa. Est-ce que ça pourrait aussi servir à la recherche de torrents ?
Par exemple en combinant un moteur de recherche décentralisé avec des torrents web permettant le streaming vidéo.
Je compte aussi en faire une version open source.
Il y a ici une version open source pour la recherche de torrents qui utilise la même technologie.
Je me demande si c’est vraiment un moteur de recherche, ou seulement un frontend qui génère des requêtes
select from.Je ne comprends absolument pas de quoi il est question.
On tombe sur des phrases du genre : « on m’a recommandé Liber3, ça utilise des noms de domaine ENS, ça fonctionne sur ENS et IPFS, ça semble utiliser Glitter, et c’est un service construit avec Tendermint », et ça sonne comme un signal extraterrestre venu d’une autre galaxie.
J’ai aussi essayé Liber3, mais quoi que je fasse, je n’obtiens que « Oops! Something went wrong. Please refresh or try again later ». De quoi tout cela parle-t-il ?
IPFS signifie InterPlanetary File System ; c’est proche d’un stockage d’objets distribué, un peu comme un S3 P2P immuable.
Glitter me dit quelque chose, mais ça ne me revient pas immédiatement.
Tendermint est un moteur de consensus pour blockchain et fait partie, avec l’Inter-Blockchain Communication (IBC) Protocol et le Cosmos SDK, d’une chaîne d’outils visant à permettre l’interopérabilité entre blockchains.
L’écosystème blockchain est vraiment un petit monde à part entière. Je ne veux pas dire qu’il est exclusif, mais il fonctionne beaucoup en vase clos, donc à moins de le chercher activement, on le croise rarement.
J’ajouterais qu’IPFS mérite qu’on s’y intéresse si l’on s’intéresse aux bases de données ou aux systèmes décentralisés sans confiance, même si l’on est sceptique envers les blockchains. Il s’y passe des choses assez intéressantes en interne, et l’équipe ne s’est pas vraiment laissée emporter par l’ambiance ruée vers l’or comme presque tous les projets blockchain.
On peut le voir comme des consignes d’implémentation pour créer un moteur de recherche d’ebooks open source. Certes, même cette description conserve un peu de jargon, mais pas au point d’énumérer une litanie de noms de bibliothèques.
La majeure partie de l’article porte sur les détails d’implémentation, avec des liens utiles.
Et puis on finit par se rendre compte que ça existe depuis presque 15 ans et que ça s’appelait libgen.rs.