Markdown Processor
Le MarkdownProcessor
est une étape d’optimisation cruciale dans le pipeline. Son rôle est de filtrer le Markdown brut pour n’en conserver que les parties sémantiquement liées aux horaires d’ouverture, afin de réduire la taille et le coût des requêtes envoyées au LLM.
Fonctionnalités
Filtrage Sémantique par Embeddings : Le processeur utilise des modèles d’embeddings (locaux ou via une API comme Mistral/OpenAI) pour convertir des phrases de référence (ex: « nos horaires ») et les segments du texte en vecteurs numériques.
Calcul de Similarité : Il calcule la similarité cosinus entre les vecteurs de référence et ceux du texte pour identifier les segments les plus pertinents.
Sélection de Contenu : Les segments de texte dont la similarité dépasse un seuil configurable sont conservés, ainsi que les segments adjacents (fenêtre de contexte) pour préserver le sens.
Mise à Jour de la Base de Données : Le contenu filtré et réduit est sauvegardé dans la colonne
markdown_filtre
de la base de données via le DatabaseProcessor.Suivi des Émissions CO2 : Il enregistre et accumule les émissions de CO2 estimées lors des appels aux APIs d’embeddings.
Usage
Ce processeur s’exécute après la récupération des URLs. Il prend en entrée le markdown_nettoye
, le filtre, et produit le markdown_filtre
qui sera utilisé par le LLMProcessor suivant.
Modules
Processeur pour filtrer le contenu markdown et extraire les sections pertinentes aux horaires. Utilise des embeddings sémantiques pour identifier les sections les plus pertinentes.
- class src.smart_watch.processing.markdown_processor.MarkdownProcessor(config: ConfigManager, logger)[source]
Bases :
object
Processeur pour filtrer le contenu markdown et extraire les sections pertinentes aux horaires.
- __init__(config: ConfigManager, logger)[source]
- _init_embedding_client()[source]
Initialise le client approprié pour les embeddings selon la configuration.
- _get_embeddings(texts: List[str]) Tuple[ndarray, float] [source]
Obtient les embeddings pour une liste de textes.
- _get_pending_markdown_filtering(db_manager, execution_id: int) List[Tuple] [source]
Récupère les enregistrements nécessitant un filtrage de markdown.
- _extract_result_id(result: ResultatsExtraction) int | None [source]
Extrait l’ID d’un résultat SQLAlchemy de manière sécurisée.
- Paramètres:
result – Objet ResultatsExtraction
- Renvoie:
ID en tant qu’entier ou None si non trouvé
- process_markdown_filtering(db_processor: DatabaseProcessor, execution_id: int)[source]
Filtre le markdown nettoyé par embeddings sémantiques.
- Paramètres:
db_processor (DatabaseProcessor) – Processeur de base de données
execution_id (int) – ID de l’exécution
- filter_markdown(markdown_content: str) Tuple[str, float] [source]
Filtre le contenu markdown en gardant seulement les parties pertinentes pour les horaires.