📄 Rapport d'Architecture · 2026-05-13
RAG Géotechnique sur Microsoft Azure
Architecture complète, stack technique, coûts détaillés, formation et roadmap d'implémentation Tracer Bullet pour un système de recherche intelligent de rapports géotechniques
~720 $
Coût ingestion initiale
250-500 $
Coût mensuel fixe
01Processus RAG Classique vs Azure
Qu'est-ce qu'un RAG ?
Un RAG combine Retrieval (chercher les documents pertinents) + Generation (donner ces documents à un LLM pour répondre).
💡 Processus classique :
- L'utilisateur pose une question
- La question est transformée en vecteur (embedding)
- On cherche les K chunks les plus similaires dans l'index vectoriel
- Les chunks sont insérés dans un prompt avec la question
- Le LLM génère une réponse sourcée
Ce qu'Azure apporte en plus
| Fonctionnalité | RAG basique | RAG Azure AI Search |
| Recherche | Vector search uniquement | Hybrid (BM25 + Vector) |
| Reranking | Pas de reranking | Semantic Ranker (modèle transformer) |
| Parsing PDF | À coder soi-même | Document Intelligence (Layout skill) |
| Pipeline ingestion | À coder soi-même | Indexer + Integrated Vectorization |
| Filtres | À coder soi-même | Facets + GeographyPoint natifs |
| Correction métadonnées | À coder soi-même | mergeOrUpload natif |
02Architecture Macro de la Stack Azure
Stack Legacy (Problèmes identifiés)
| Couche | Stack actuelle | Problèmes |
| Stockage | GED propriétaire | Pas de API REST, extraction manuelle |
| Métadonnées | XML dans GED | Pas liées aux PDFs |
| Géolocalisation | CSV séparé | Pas intégré aux documents |
| Recherche | Manuelle (explorateur fichiers) | Aucune recherche sémantique |
Architecture — Vue d'Ensemble
🗄️ Blob Storage — PDFs / XML / CSV
⬇
⚙️ Indexer + Skillset — Document Intelligence + Integrated Vectorization
⬇
🔍 Azure AI Search — Index vectoriel + metadata + GeographyPoint
⬇
💻 Application — Hybrid Query + LLM + interface utilisateur
Description des couches
| Couche | Technologie | Rôle |
| Stockage | Blob Storage | Héberger les PDFs, XML, CSV |
| Parsing | Indexer + Document Intelligence Layout | Extraire le texte des PDFs avec mise en page |
| Vectorisation | Integrated Vectorization | Chunking + embedding Azure OpenAI |
| Indexation | Azure AI Search | Index unifié : contenu + métadonnées + géoloc |
| Recherche | Hybrid Search + RRF + Semantic Ranker | Trouver les documents pertinents |
| Génération | LLM Azure OpenAI (GPT-4o / o3-mini) | Produire la réponse finale |
| Pipeline | Azure Function Blob Trigger | Ingestion automatique event-driven |
✅ Approche "Trace Volatile" : Commencer par un index basique (PDF → content + vector), puis ajouter les champs méta/géoloc au schéma, et faire des mergeOrUpload pour enrichir les documents existants. L'index reste queryable pendant toute l'opération.
03Recherche & Reranking
Les 4 types de recherche disponibles
| Type | Mécanisme | Pertinence | Coût supplémentaire |
| Keyword (BM25) | Matching de mots-clés | Faible | Aucun |
| Vector Search | Similarité sémantique (embeddings) | Bonne | Aucun |
| Hybrid (BM25 + Vector + RRF) | Parallèle + Reciprocal Rank Fusion | Très bonne | Aucun |
| Hybrid + Semantic Ranker | Hybrid puis rescoring top 50 par modèle Microsoft | Excellente | 0-1 $/1000 req |
Question utilisateur
→
Hybrid Search
BM25 + Vector
→
RRF Fusion
top 50 résultats
→
Semantic Ranker
rescore
→
LLM → Réponse
+ citations
🎯 Recommandation : Toujours utiliser Hybrid + Semantic Ranker. Le Semantic Ranker comprend le sens réel de la requête et du texte — il pousse le bon chunk en haut même si les mots exacts ne matchent pas. Sur des termes comme "cohésion dans la moraine", la différence avec/sans est énorme.
Impact coût
| Usage | Coût |
| Désactivé (queryType=simple) | Gratuit |
| 0-1000 requêtes/mois | Gratuit |
| Au-delà de 1000 requêtes/mois | ~1 $ par 1000 requêtes |
04Gestion des Données Métier
Tags et Facets
Azure AI Search supporte les facets en natif. Champ Collection(Edm.String) avec filterable: true et facetable: true.
// Filtrage OData
$filter=tags/any(t: t eq 'moraine')
// Facets retournées automatiquement
"@search.facets": {
"tags": [
{"value": "moraine", "count": 42},
{"value": "molasse", "count": 28}
]
}
Vocabulaire Géotechnique — 4 solutions combinées
1. Analyzer français Microsoft
Utiliser fr.microsoft sur les champs texte. Lemmatisation, stop words, bien meilleur que le standard.
2. Synonym Map (format Solr)
cohésion, cohérence => cohésion
moraine, till => moraine
angle de frottement, friction, phi => angle_frottement
roche, rocher, rocheuse => roche
3. Semantic Ranker
Aide naturellement — le modèle de rescoring comprend la sémantique derrière les termes techniques.
4. Scoring Profile
Pondérer les champs de métadonnées métier (type de sol, formation géologique) pour booster les termes critiques.
Géodonnées
Champ Edm.GeographyPoint dans l'index, filterable et sortable.
// Filtrer dans un rayon de 10 km
geo.distance(location, geography'POINT(6.632 46.521)') le 10
Affichage carte : Azure Maps + SDK React (azure-maps-control).
05Métadonnées & Correction Utilisateur
L'utilisateur peut modifier les métadonnées (auteur, type de sol, etc.) directement dans l'interface.
Utilisateur modifie
dans l'interface
→
mergeOrUpload
sur l'index
→
Seuls les champs
modifiés updatés
→
Contenu vectorisé
inchangé
Deux approches
| Approche | Description | Quand |
| Simple | Tout dans l'index Azure AI Search, update direct API REST | Démarrage rapide |
| Robuste | Vérité dans Table Storage, sync via indexer Table + merge | Production |
💰 Coût : Inclus dans les Search Units. Pas de coût à l'écriture.
06Pipeline d'Ingestion Automatique
Setup à 3 fichiers par rapport
Clé commune (même nom de base) : rapport-123.pdf + rapport-123.xml + rapport-123.csv
📄 Nouveau PDF → Blob Trigger
⬇
⚙️ Azure Function lit XML + CSV associés
⬇
🧹 Nettoie et merge les données
⬇
📤 mergeOrUpload → Azure AI Search
⚠️ Points critiques :
- Association des fichiers : L'indexer Blob ne lie pas automatiquement PDF + XML + CSV. Solutions : custom metadata sur le blob PDF, ou Azure Function Blob Trigger
- Mise à jour partielle : Si seul le XML change sans le PDF, l'indexer ne se déclenche pas. Solution : Table Storage + indexer Table dédié
- Solution la plus simple : Indexer sur planning + integrated vectorization. Balancer les lots → mise à jour auto
07Choix des Modèles
Embedding
| Modèle | Recommandation | Coût |
| text-embedding-3-small | À prendre en priorité | Faible |
| text-embedding-3-large | Si qualité insuffisante après test | Élevé |
Génération de réponses
| Usage | Modèle | Pourquoi |
| Usage courant | GPT-4o (ou GPT-4.1 / GPT-5) | Standard, bon rapport qualité/prix |
| Questions complexes | o3-mini (reasoning model) | Réfléchit avant de répondre, meilleur sur requêtes multi-facettes |
💡 Combo le plus rentable : text-embedding-3-small + GPT-4o-mini (courant) + o3-mini réservé aux questions complexes. Même code, on change juste le modèle déployé.
08Interface Utilisateur
Azure n'a toujours pas de solution "low-code UI" prête à l'emploi pour un cas métier spécifique.
Approche concrète
- Forker le sample azure-search-openai-demo (interface chat avec citations)
- Customiser :
- 🗺️ Carte avec Azure Maps
- 🏷️ Facettes/filtres sur métadonnées géotech
- ✏️ Édition des métadonnées
- 📍 Recherche par zone géographique
- Front : React (recommandé) ou Blazor
09Coûts Détaillés
Structure des coûts
| Poste | Détail | Coût |
| Search Units (fixe) | S1, 1-2 partitions | ~250-500 $/mois |
| Vector Storage | Inclus dans les SU | Gratuit |
| Semantic Ranker | 1000 req/mois gratuites | ~1 $/1000 req |
| Document Intelligence Layout | Payé par page | ~600 $ / 400k pages |
| Embeddings (Azure OpenAI) | text-embedding-3-small | ~60-120 $ / 10k docs |
| Blob Storage | Stockage fichiers | Négligeable |
| Azure Functions | Plan Consumption | Quasi gratuit |
| LLM (GPT-4o mini) | Génération réponses | Variable |
Estimation 10 000 documents
💰 Ingestion initiale (one-time)
Document Intelligence Layout (40 pp × 10k)~600 $
Embeddings (text-embedding-3-small)~60-120 $
Total ingestion : ~660-720 $
📆 Coût mensuel récurrent
Azure AI Search S1 (1-2 partitions)~250-500 $
Semantic Ranker (si utilisé)Variable
Total mensuel : ~250-500 $
📈 Évolution positive : Depuis 2024, un S1 stocke 5 à 6× plus de vecteurs qu'avant pour le même prix.
10Dernières Évolutions RAG Azure (2025-2026)
Évolution 1 : Agentic Retrieval
🚀 Le plus gros saut
Un LLM décompose la question en sous-questions, les exécute en parallèle, reranke et synthétise.
"Cohésion dans
la moraine ?"
→
Sous-Q1: cohésion
Sous-Q2: localisation
Sous-Q3: type sol
→
Synthèse
finale
Preview 2025 Parfait pour recherches multi-facettes. Coût : ~0,022 $/M tokens (50M gratuits/mois).
Évolution 2 : Foundry IQ / Knowledge Bases
Connecter plusieurs sources (Blob, SharePoint, OneLake) dans une même "knowledge base".
Évolution 3 : Azure Content Understanding Skill
Meilleure extraction de tables, images, et surtout semantic chunking natif. "Ça change la game pour les rapports techniques".
Évolution 4 : Capacité vectorielle améliorée
Bien plus de vecteurs pour le même prix. Support multi-vector.
Impact coût des évolutions
| Technologie | Coût |
| Azure AI Search (fixe) | Moins cher — 5-6× plus de capacité |
| Semantic Ranker | Identique — 1000 req gratuites |
| Hybrid + Semantic classique | Aucun surcoût |
| Agentic Retrieval | Nouveau coût variable |
| Content Understanding | Payant en plus |
11Formation & Adoption
Objectif : que toute l'équipe (devs + ingénieurs géotech) soit autonome rapidement.
Pour l'équipe technique
| Élément | Détail |
| Format | 1 atelier de 2h en visio ou présentiel |
| Contenu | Création/mise à jour d'index, requêtes hybrid + Semantic, mergeOrUpload |
| Livrables | Notebooks commentés + repo GitHub avec exemples |
| Suivi | 1 séance Q&A de 45 min |
Pour les utilisateurs finaux (ingénieurs géotechniciens)
| Élément | Détail |
| Format | 1 session de 1h30 |
| Contenu | Démo interface : recherche naturelle, filtres, carte, correction métadonnées |
| Livrables | Cheat-sheet PDF "Comment poser une bonne question géotech" |
| Replay | Vidéo Loom de 8 min disponible |
| Mesure d'adoption | Requêtes/utilisateur + taux correction métadonnées (> 15 % les 3 premiers mois) |
Ressources supplémentaires
- 📄 Documentation interne (Notion ou SharePoint) mise à jour après chaque phase
- 💬 Canal Teams dédié
#rag-geotech-support
- 📝 Cheat-sheet de prompts efficaces
12Roadmap d'Implémentation (Tracer Bullet)
Approche : Phases incrémentales. Chaque fin de phase = une version qui marche en production. On ne passe à la suivante que quand la précédente est validée par les utilisateurs.
Phase 1 — MVP RAG de Base
🎯 Objectif : question → réponse avec citations
Notebooks + Integrated Vectorization + Sample UI
| Tâche | Technologie |
| Création index + ingestion 20-50 PDFs | Notebooks Python + Integrated Vectorization |
| Requête hybrid + Semantic Ranker | SDK azure-search-documents |
| Interface basique | azure-search-openai-demo (fork) |
✅ Livrable : MVP validé — question → réponse avec citations et sources
Phase 2 — Enrichissement Métier
🎯 Objectif : recherche filtrée + carte + correction métadonnées
Facets + Synonym map + GeographyPoint + mergeOrUpload + Azure Maps
| Tâche | Technologie |
| Tags / facets / synonym map | Collection(Edm.String), format Solr |
| GeographyPoint + filtres géo | Edm.GeographyPoint |
| Correction métadonnées | mergeOrUpload API REST |
| Carte Azure Maps | azure-maps-control (React) |
✅ Livrable : Recherche enrichie — filtres métier + carte + correction
Phase 3 — Pipeline Automatique
🎯 Objectif : zéro opération manuelle
Azure Functions + Blob Trigger + mergeOrUpload automatisé
| Tâche | Technologie |
| Blob Trigger sur nouveaux fichiers | azure-functions + azure-storage-blob |
| Nettoyage XML/CSV | Python (xml.etree, csv) |
| Mise à jour incrémentale | mergeOrUpload automatisé |
✅ Livrable : Pipeline autonome — dépôt = indexation
Phase 4 — Production & Scalabilité
🎯 Objectif : solution scalable, monitorée, adoptée
Tier payant + Tests charge + Alertes + Formation
| Tâche | Technologie |
| Passage tier payant | S1 ou supérieur |
| Tests de charge | locust / azure-load-testing |
| Monitoring + alertes | Azure Cost Management |
| Formation utilisateurs | Voir section 11 |
✅ Livrable : Solution en production, scalable et adoptée
Frameworks & Paquets Recommandés
| Couche | Technologie | Pourquoi |
| SDK Azure Search | azure-search-documents + azure-identity | Officiel Microsoft |
| Stockage Blob | azure-storage-blob | Trigger + lecture fichiers |
| Orchestration LLM | Semantic Kernel | Natif Azure, support tools |
| Alternative LLM | LangChain | Plus de communauté |
| Tests | pytest + azure-sdk fixtures | Tests unitaires + intégration |
| CI/CD | GitHub Actions | Déploiement index + Function |
| Local (dev) | Azurite + notebooks | Seulement pour Blob Trigger |
13Développement Local vs Azure + Budget Dev
Ce qu'il faut coder vs configurer
| Composant | Configuration Azure | Code |
| Data Source (Blob) | Portail | ❌ |
| Index (schéma, champs vector) | Wizard | ❌ |
| Indexer + Skillset | Portail | ❌ |
| Requête hybrid + semantic | ❌ | JSON query |
| Correction métadonnées | ❌ | mergeOrUpload API |
| Mapping XML/CSV → index | ❌ | Custom skill/Function |
| Connexion LLM + prompt | ❌ | Code applicatif |
80-90 % de l'ingestion est configurable sur le portail. L'expérience utilisateur (recherche + édition métadonnées), c'est du code.
Direct Azure, pas de stack locale
| Phase | Environnement | Pourquoi |
| Prototypage | Notebooks Python sur Free tier Azure | Validation rapide schéma + embeddings + queries |
| Pipeline | Code local (Function) + vrai Search cloud | Azurite suffit pour Blob Trigger |
| Tests | CI/CD GitHub Actions → Dev Azure | Tests unitaires local, intégration cloud |
| Production | Tier payant Azure | Scalabilité + monitoring |
Budget Dev : 50-100 $
| Poste | Coût |
| Azure AI Search Free tier (50 MB, 3 indexes) | Gratuit |
| Azure Functions Consumption | 1M exec gratuites/mois |
| text-embedding-3-small (petits volumes) | ~10-20 $ |
| GPT-4o-mini (petits volumes) | ~10-20 $ |
| Total exploration | ~50-100 $ |
⚠️ Anti-facture surprise :
- Resource group dédié
dev-rag-geotech
- Alertes budget à 50 $
- Supprimer les services inutilisés
- Surveiller : Document Intelligence + Semantic Ranker
Décisions, Conclusions et Prochaines Étapes
Dix décisions clés
- 1. Stack : Azure AI Search + Blob Storage + Functions + Document Intelligence + Azure OpenAI
- 2. Recherche : Hybrid + Semantic Ranker
- 3. Démarrage : Direct Azure, pas d'émulateur local
- 4. Approche : Incrémentale (PDFs → métadonnées → géoloc via mergeOrUpload)
- 5. Embedding :
text-embedding-3-small
- 6. Réponse :
GPT-4o-mini (courant) + o3-mini (complexe)
- 7. UI : Sample GitHub
azure-search-openai-demo + Azure Maps
- 8. Correction : mergeOrUpload, simple et pas cher
- 9. Pipeline : Event-driven Blob Trigger
- 10. Agentic Retrieval : Phase 4, coût supplémentaire
Prochaines Étapes
Resource Group
Créer dev-rag-geotech
Budget
Activer alerte 50 $
Prototype
Notebooks → index + queries hybrid
PDFs
Configurer Document Intelligence
Vocabulaire
Synonym map géotech
Pipeline
Azure Function Blob Trigger
UI
Customiser sample + Azure Maps
Volume
Estimer pages réelles
Test
Semantic Ranker on/off