
# 📘 Traitement des Documents Normatifs dans Ragflow avec l'API Mistral & Ollama H100

## 🎯 Objectif
Constituer une base de données RAG de haute qualité, adaptée aux documents métier du secteur du béton (normes, essais, formulations), exploitable via un chatbot LLM.

---

## 🧱 Types de Documents Concernés

| Type de Document      | Contenu                              | Spécificités                          |
|-----------------------|--------------------------------------|----------------------------------------|
| Norme Produit (AFNOR) | Textes, schémas, tableaux, formules | Langage technique normatif             |
| Formulation Béton     | Formules, compositions, dosages     | Notation mathématique, mesures         |
| Norme Essai           | Protocoles, mesures, équipements    | Vocabulaire métrologique, symboles     |
| Logiciel BRG-LAB      | Interface, scripts, doc technique   | Terminologie logicielle, procédurale   |

---

## 🔄 Workflow Global (diagramme synthétique en cours de création)

1. Ingestion du PDF (ex : NF P 11-300)
2. Extraction pré-traitée : texte, tableaux, images
3. Traduction ciblée si nécessaire (schémas pour vision)
4. Analyse par modèles dédiés (image2text, OCR, code)
5. Reconstitution enrichie (images → texte descriptif)
6. Chunking adaptatif
7. Indexation vectorielle dans Ragflow
8. Requête via chatbot ou interface RAG

---

## 🤖 Profils de Modèles Disponibles (API Mistral & Ollama)

### Modèles API Mistral

| Nom                     | Type        | Rôle suggéré                         |
|--------------------------|-------------|--------------------------------------|
| mistral-large-latest     | Chat        | Analyse profonde de texte normatif   |
| ministral-8b-latest      | Chat        | Traitement contextuel rapide         |
| mistral-small-latest     | Chat        | Résumés et tests légers              |
| mistral-embed            | Embedding   | Indexation vectorielle               |
| mistral-ocr-latest       | image2text  | OCR annoté des schémas/textes        |
| pixtral-12b-2409         | image2text  | Vision poussée de documents illustrés|

### Modèles Ollama (H100)

- `llama3.2-vision:90b`: très haute qualité image+texte
- `mistral:latest`: rapide & stable
- `bge-reranker`, `nomic-embed-text`: pour embeddings & rerank

---

## 🧠 Agents & Rôles

| Agent              | Description                                  | Modèle utilisé                        |
|--------------------|----------------------------------------------|----------------------------------------|
| Vision             | Interprète les schémas, OCR, etc.            | Pixtral / Mistral OCR / LLaVA          |
| Analyse Normative  | Analyse structurée des textes                | mistral-large / ministral-8b           |
| Math/Formule       | Extraction et transcription de formules      | Qwen2.5-Coder / mistral-large          |
| Embedder           | Indexation vectorielle pour recherche RAG    | mistral-embed / nomic-embed-text       |

> 💡 Créer un rôle d'agent par tâche, avec préréglages LLM (température, max tokens, top_p, etc.)

---

## 🔧 Test Initial dans Ragflow (interface web)

1. Accéder à l’interface Ragflow
2. Créer une base de données `Normes Produits`
3. Config initiale :
   - LLM : `ministral-8b-latest`
   - Embedder : `mistral-embed`
   - Vision model : `pixtral-12b-2409`
4. Import du PDF
5. Ajout manuel de contexte pour les schémas (si nécessaire)
6. Lancer le chunking personnalisé
7. Tester des requêtes en langage naturel

---

## 🚀 Étapes futures recommandées

- Créer un outil Python de pré-traitement semi-automatisé (GUI)
- Ajouter une traduction ciblée pour les éléments visuels en anglais
- Créer un index secondaire contenant uniquement les interprétations des images
- Implémenter 3 profils de traitement :
  - **Léger** : mistral-small
  - **Modéré** : ministral-8b
  - **Complet** : mistral-large + vision

---

## 🧩 Conclusion

Une configuration optimisée de Ragflow avec tes modèles (API Mistral & Ollama H100) permet de construire une base RAG efficace pour les documents techniques du béton. Les schémas doivent être analysés dans leur contexte, traduits si nécessaire, et enrichis avant le chunking.

Un second fichier `.md` pourra détailler le **diagramme de traitement et les logs de test**.
