Après avoir organisé les données en base, il s’agit maintenant de les exposer pour les futurs services. Le module “expose” est dédié à cette tâche. Il sert de serveur API pour requêter la base de données PostgreSQL et fournir des informations détaillées sur les livres ainsi que des recommandations basées sur des vecteurs. Tout est sur le dépôt Github.
Il permet de :
Récupérer des informations détaillées sur les livres en utilisant divers filtres. Générer des recommandations de livres similaires en utilisant des méthodes de similarité vectorielle comme la distance euclidienne, la distance de Manhattan (taxicab) et la similarité cosinus. Ce module est conçu pour être intégré dans un pipeline d’analyse asynchrone et supervisé via FastAPI, offrant une API RESTful performante et facile à utiliser.
Dans le cadre de mon projet de recommandation de livres, un élément clé pour offrir des suggestions pertinentes repose sur la représentation vectorielle des données textuelles, comme les résumés et les titres des livres. Le module Vectorizer, développé en tant que microservice, est dédié à cette tâche.
Grâce à ce microservice, nous pouvons générer deux types de représentations vectorielles :
TF-IDF, pour capturer l’importance des termes au sein des textes. Cela permettra d’entrainer des modèles pour labelliser rapidement les livres et les clusteriser dynamiquement dans un soucis de performance. Embeddings réduits par PCA, pour une représentation dense des contenus basée sur des modèles de type transformers. Cela permettra, combiné à des filtres, d’utiliser les moteur SQL pour générer les recommandations. Ce module est conçu pour être intégré dans un pipeline d’analyse asynchrone et supervisé via MLflow, comme le bloc précédent. Tout est sur le dépôt Github.
Après avoir mis en place un module de collecte de données à l’aide de Scrapy, la prochaine étape de mon projet de recommandation de livres consiste à traiter, transformer et stocker les données. Cette étape repose sur le module store, qui organise les données collectées et les prépare pour les prochaines phases d’analyse et de modélisation. Tout est sur le dépôt Github.
En plus d’optimiser les données, ce module intègre MLflow pour suivre et documenter chaque étape du pipeline, garantissant une traçabilité et une reproductibilité complètes. Je ne vais pas détailler son utilisation dans cette article, un post sera dédié à ce service qui permet à la fois de monitorer et de versionner le service pour empêcher la dérive des modéles ou leur régression potentielle.
Dans le cadre du projet de recommandation de livres, j’ai mis en place un premier module de collecte de données à l’aide de Scrapy. Cette étape est essentielle, car elle permet de récupérer les informations nécessaires depuis une librairie en ligne pour nourrir les futurs algorithmes de recommandation.
Ce projet est pensé pour évoluer. À terme, il s’agira d’une application complète de recommandation de livres, mais chaque étape est soigneusement construite pour être modulaire et extensible. Tout est sur le dépôt Github.