Le contexte Enedis
Chez Enedis, nous traitons des milliers de documents techniques : plans électriques, rapports d'intervention, normes de sécurité. Les LLMs généralistes hallucinent fréquemment sur les données techniques spécifiques.
L'approche GRPO
Le **Generative Reward-Prompt Optimization** (GRPO) est une technique de fine-tuning qui permet d'optimiser les LLMs avec des récompenses structurelles.
Pourquoi pas du RAG classique ?
Le RAG simple ne résout pas tout : - Les documents sont longs et complexes - Les relations entre entités sont importantes - Les contraintes métier doivent être respectées
Intégration Prolog
J'ai intégré un moteur Prolog dans la boucle de fine-tuning :
# Exemple de contrainte Prolog
constraint = """
valid_schema(X) :-
has_voltage(X, V),
V >= 220, V =< 400,
has_section(X, S),
section_for_voltage(S, V).
"""
Pipeline complet
1. **Extraction** : OCR + Parsing des PDF/DWG 2. **NER** : Extraction d'entités techniques (custom spaCy) 3. **Graphe** : Construction du graphe de connaissances (Neo4j) 4. **Fine-tuning** : GRPO avec contraintes Prolog 5. **Validation** : Vérification structurelle des outputs
Résultats
- **+40% de précision** vs GPT-4 sur extraction technique
- **-60% d'hallucinations** grâce aux contraintes Prolog
- Temps de traitement divisé par 3
Ce que j'ai appris
L'alliage entre logique symbolique (Prolog) et LLMs est puissant. Les contraintes structurelles garantissent la cohérence tout en conservant la flexibilité générative.
Ce projet m'a valu ma promotion en apprentissage chez Enedis. 🚀