LLMGRPOPrologRAGNeo4j

Fine-tuning de LLMs avec contraintes GRPO

2024-02-20
10 min de lecture

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. 🚀

Projet associé :