Files
aivanov_CIM/MODELES_IA_NLP_UTILISES.md
2026-03-05 01:20:14 +01:00

11 KiB

Modèles IA/NLP Utilisés dans le Pipeline MCO PMSI

Vue d'ensemble

Le système utilise une architecture RAG (Retrieval-Augmented Generation) combinant plusieurs modèles d'IA et de NLP pour automatiser le codage médical PMSI.


1. LLM Principal - Ollama

Configuration

  • Modèle: mistral-large-3:675b-cloud
  • Serveur: Ollama (local, on-premises)
  • URL: http://localhost:11434
  • Fichier: src/pipeline_mco_pmsi/llm/ollama_client.py

Caractéristiques

  • Inférence locale: Aucune donnée ne quitte l'hôpital (conformité RGPD)
  • Température: 0.1 (par défaut, pour déterminisme et reproductibilité)
  • Timeout: 300 secondes
  • Support JSON: Génération de réponses structurées
  • GPU: Utilise NVIDIA RTX 5070 (12GB VRAM)

Usages dans le pipeline

  1. Extraction de faits cliniques (ClinicalFactsExtractor)

    • Extraction de diagnostics, actes, examens, traitements
    • Détection de qualificateurs (affirmé/nié/suspecté/antécédent)
    • Extraction de temporalité
  2. Codage initial (Codeur)

    • Proposition de codes CIM-10 (DP, DR, DAS)
    • Proposition de codes CCAM
    • Génération de justifications et raisonnements
    • Calcul de scores de confiance
  3. Vérification indépendante (Verificateur)

    • Détection d'erreurs sensibles DIM
    • Validation des propositions du Codeur
    • Génération de contradictions et alternatives

2. Modèle d'Embeddings - Sentence Transformers

Configuration

  • Modèle actuel: sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2
  • Alternatives médicales: camembert-bio, DrBERT
  • Fichier: src/pipeline_mco_pmsi/rag/referentiels_manager.py

Caractéristiques

  • Dimension: 384 (MiniLM) ou 768 (CamemBERT/DrBERT)
  • Normalisation: L2 normalization pour cosine similarity
  • Multilingue: Optimisé pour le français
  • Domaine: Adapté au vocabulaire médical

Usages dans le pipeline

  1. Vectorisation des référentiels

    • CIM-10 FR PMSI 2026
    • CCAM Descriptive 2025 (V81)
    • Guide Méthodologique MCO 2026
  2. Recherche sémantique

    • Mapping termes cliniques → codes
    • Recherche de codes similaires
    • Gestion des paraphrases et variations terminologiques

3. Index Vectoriel - FAISS

Configuration

  • Type d'index: HNSW (Hierarchical Navigable Small World)
  • Bibliothèque: faiss-cpu (ou faiss-gpu pour GPU)
  • Fichier: src/pipeline_mco_pmsi/rag/referentiels_manager.py

Paramètres HNSW

  • M: 32 (nombre de connexions par nœud)
  • efConstruction: 200 (qualité de construction)
  • Métrique: Cosine similarity (via L2 normalization)

Caractéristiques

  • Performance: Recherche rapide sur des millions de vecteurs
  • Précision: Compromis optimal entre vitesse et qualité
  • GPU: Support optionnel pour accélération

Usages dans le pipeline

  1. Recherche vectorielle rapide
    • Top-K nearest neighbors
    • Recherche sémantique dans les référentiels
    • Composante de la recherche hybride

4. Recherche BM25 - Rank-BM25

Configuration

  • Bibliothèque: rank-bm25
  • Fichier: src/pipeline_mco_pmsi/rag/rag_engine.py

Caractéristiques

  • Algorithme: BM25 (Best Matching 25)
  • Type: Recherche par mots-clés (lexicale)
  • Complémentarité: Combiné avec vector search

Usages dans le pipeline

  1. Recherche lexicale

    • Recherche exacte sur codes (ex: "K29.7")
    • Recherche sur termes techniques
    • Composante de la recherche hybride
  2. Fusion RRF (Reciprocal Rank Fusion)

    • Combinaison BM25 + Vector Search
    • Top 50 de chaque méthode
    • Fusion puis reranking

5. Reranking - Cross-Encoder

Configuration

  • Type: Cross-encoder (sentence-transformers)
  • Fichier: src/pipeline_mco_pmsi/rag/rag_engine.py

Caractéristiques

  • Précision: Plus précis que bi-encoder pour le classement final
  • Coût: Plus lent, utilisé uniquement sur top-K candidats
  • Priorisation: Résultats d'index alphabétique prioritaires

Usages dans le pipeline

  1. Reranking final
    • Reclassement des top 50 candidats (BM25 + Vector)
    • Sélection des top 10 finaux
    • Amélioration de la précision

6. NLP Français - Spacy (optionnel)

Configuration

  • Bibliothèque: spacy >= 3.7.0
  • Modèle: fr_core_news_lg ou fr_core_news_md
  • Fichier: Potentiellement dans PIIProtector

Usages potentiels

  1. Détection de DIP (Données Identifiantes du Patient)

    • Named Entity Recognition (NER)
    • Détection de noms, dates, adresses
    • Complémentaire aux regex
  2. Analyse syntaxique

    • Tokenization
    • POS tagging
    • Dependency parsing

Architecture RAG Complète

┌─────────────────────────────────────────────────────────────┐
│                    Documents Cliniques                       │
└────────────────────────┬────────────────────────────────────┘
                         │
                         ▼
┌─────────────────────────────────────────────────────────────┐
│              Ollama (mistral-large-3:675b-cloud)            │
│                  Extraction de Faits                         │
└────────────────────────┬────────────────────────────────────┘
                         │
                         ▼
┌─────────────────────────────────────────────────────────────┐
│                    Recherche Hybride                         │
│  ┌──────────────┐         ┌──────────────────────────────┐  │
│  │  BM25 Search │         │  Vector Search (FAISS)       │  │
│  │  (Rank-BM25) │         │  (Sentence Transformers)     │  │
│  └──────┬───────┘         └──────────┬───────────────────┘  │
│         │                             │                      │
│         └──────────┬──────────────────┘                      │
│                    │                                         │
│                    ▼                                         │
│         ┌──────────────────────┐                            │
│         │  Fusion RRF (Top 50) │                            │
│         └──────────┬───────────┘                            │
│                    │                                         │
│                    ▼                                         │
│         ┌──────────────────────┐                            │
│         │  Reranking (Top 10)  │                            │
│         │   (Cross-Encoder)    │                            │
│         └──────────┬───────────┘                            │
└────────────────────┼────────────────────────────────────────┘
                     │
                     ▼
┌─────────────────────────────────────────────────────────────┐
│              Ollama (mistral-large-3:675b-cloud)            │
│                  Codage + Vérification                       │
└────────────────────────┬────────────────────────────────────┘
                         │
                         ▼
                  Codes CIM-10/CCAM

Fichiers de Référence

Scripts

  • scripts/load_referentiels.py - Chargement et indexation des référentiels
  • scripts/import_ccam.py - Import spécifique CCAM depuis Excel

Code Source

  • src/pipeline_mco_pmsi/llm/ollama_client.py - Client Ollama
  • src/pipeline_mco_pmsi/rag/referentiels_manager.py - Gestion référentiels + embeddings
  • src/pipeline_mco_pmsi/rag/rag_engine.py - Moteur RAG (BM25 + Vector + Reranking)
  • src/pipeline_mco_pmsi/extractors/clinical_facts_extractor.py - Extraction avec LLM
  • src/pipeline_mco_pmsi/coders/codeur.py - Codage avec LLM
  • src/pipeline_mco_pmsi/verifiers/verificateur.py - Vérification avec LLM

Configuration

  • pyproject.toml - Dépendances et versions des bibliothèques

Dépendances Principales

# LLM et Embeddings
langchain >= 0.1.0
sentence-transformers >= 2.2.0
transformers >= 4.36.0
torch >= 2.1.0

# Vector Store et Recherche
faiss-cpu >= 1.7.4  # ou faiss-gpu
rank-bm25 >= 0.2.2

# NLP
spacy >= 3.7.0
nltk >= 3.8.1

# Traitement de documents
pypdf >= 3.17.0
pandas >= 2.0.0
openpyxl >= 3.1.0

# API HTTP pour Ollama
httpx >= 0.25.0
requests >= 2.31.0

Performance et Optimisation

GPU

  • FAISS: Utilise GPU si disponible (faiss-gpu)
  • Ollama: Utilise automatiquement le GPU (NVIDIA RTX 5070)
  • Sentence Transformers: Peut utiliser GPU pour vectorisation

Caching

  • Embeddings: Cache des vecteurs fréquents
  • Index FAISS: Sauvegardé sur disque pour réutilisation
  • Référentiels: Chunks sauvegardés en JSON

Reproductibilité

  • Température LLM: 0.1 pour déterminisme
  • Seed: Fixé pour génération reproductible
  • Versionnement: Hash SHA-256 de tous les composants

Conformité et Sécurité

On-Premises

  • Ollama local (pas d'API externe)
  • FAISS local (pas de cloud)
  • Sentence Transformers local
  • Aucune donnée ne quitte l'hôpital

Protection DIP

  • Détection hybride (regex + NER potentiel avec Spacy)
  • Anonymisation avant logs
  • Filtrage des exports

Versionnement

  • Hash SHA-256 de tous les modèles
  • Hash des prompts
  • Hash des référentiels
  • Traçabilité complète

Mise à Jour

Date: 2026-02-12
Version du système: 0.1.0
Statut: MVP fonctionnel avec Ollama intégré