📄 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
10 000
Documents estimés
~720 $
Coût ingestion initiale
250-500 $
Coût mensuel fixe
50-100 $
Budget phase dev
4
Phases roadmap

📑 Sommaire

01Processus RAG Classique vs Azure 02Architecture Macro de la Stack Azure 03Recherche & Reranking 04Gestion des Données Métier 05Métadonnées & Correction Utilisateur 06Pipeline d'Ingestion Automatique 07Choix des Modèles 08Interface Utilisateur 09Coûts Détaillés 10Dernières Évolutions RAG Azure 11Formation & Adoption 12Roadmap d'Implémentation (Tracer Bullet) 13Développement Local vs Azure + Budget Dev Décisions, Conclusions et Prochaines Étapes

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 :
  1. L'utilisateur pose une question
  2. La question est transformée en vecteur (embedding)
  3. On cherche les K chunks les plus similaires dans l'index vectoriel
  4. Les chunks sont insérés dans un prompt avec la question
  5. Le LLM génère une réponse sourcée

Ce qu'Azure apporte en plus

FonctionnalitéRAG basiqueRAG Azure AI Search
RechercheVector search uniquementHybrid (BM25 + Vector)
RerankingPas de rerankingSemantic Ranker (modèle transformer)
Parsing PDFÀ coder soi-mêmeDocument Intelligence (Layout skill)
Pipeline ingestionÀ coder soi-mêmeIndexer + Integrated Vectorization
FiltresÀ coder soi-mêmeFacets + GeographyPoint natifs
Correction métadonnéesÀ coder soi-mêmemergeOrUpload natif

02Architecture Macro de la Stack Azure


Stack Legacy (Problèmes identifiés)

CoucheStack actuelleProblèmes
StockageGED propriétairePas de API REST, extraction manuelle
MétadonnéesXML dans GEDPas liées aux PDFs
GéolocalisationCSV séparéPas intégré aux documents
RechercheManuelle (explorateur fichiers)Aucune recherche sémantique

Architecture — Vue d'Ensemble

🗄️ Blob Storage — PDFs / XML / CSV
⚙️ Indexer + Skillset — Document Intelligence + Integrated Vectorization
💻 Application — Hybrid Query + LLM + interface utilisateur

Description des couches

CoucheTechnologieRôle
StockageBlob StorageHéberger les PDFs, XML, CSV
ParsingIndexer + Document Intelligence LayoutExtraire le texte des PDFs avec mise en page
VectorisationIntegrated VectorizationChunking + embedding Azure OpenAI
IndexationAzure AI SearchIndex unifié : contenu + métadonnées + géoloc
RechercheHybrid Search + RRF + Semantic RankerTrouver les documents pertinents
GénérationLLM Azure OpenAI (GPT-4o / o3-mini)Produire la réponse finale
PipelineAzure Function Blob TriggerIngestion 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

TypeMécanismePertinenceCoût supplémentaire
Keyword (BM25)Matching de mots-clésFaibleAucun
Vector SearchSimilarité sémantique (embeddings)BonneAucun
Hybrid (BM25 + Vector + RRF)Parallèle + Reciprocal Rank FusionTrès bonneAucun
Hybrid + Semantic RankerHybrid puis rescoring top 50 par modèle MicrosoftExcellente0-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

UsageCoût
Désactivé (queryType=simple)Gratuit
0-1000 requêtes/moisGratuit
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

ApprocheDescriptionQuand
SimpleTout dans l'index Azure AI Search, update direct API RESTDémarrage rapide
RobusteVérité dans Table Storage, sync via indexer Table + mergeProduction
💰 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
⚠️ 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èleRecommandationCoût
text-embedding-3-smallÀ prendre en prioritéFaible
text-embedding-3-largeSi qualité insuffisante après testÉlevé

Génération de réponses

UsageModèlePourquoi
Usage courantGPT-4o (ou GPT-4.1 / GPT-5)Standard, bon rapport qualité/prix
Questions complexeso3-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

  1. Forker le sample azure-search-openai-demo (interface chat avec citations)
  2. Customiser :
    • 🗺️ Carte avec Azure Maps
    • 🏷️ Facettes/filtres sur métadonnées géotech
    • ✏️ Édition des métadonnées
    • 📍 Recherche par zone géographique
  3. Front : React (recommandé) ou Blazor

09Coûts Détaillés


Structure des coûts

PosteDétailCoût
Search Units (fixe)S1, 1-2 partitions~250-500 $/mois
Vector StorageInclus dans les SUGratuit
Semantic Ranker1000 req/mois gratuites~1 $/1000 req
Document Intelligence LayoutPayé par page~600 $ / 400k pages
Embeddings (Azure OpenAI)text-embedding-3-small~60-120 $ / 10k docs
Blob StorageStockage fichiersNégligeable
Azure FunctionsPlan ConsumptionQuasi gratuit
LLM (GPT-4o mini)Génération réponsesVariable

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

TechnologieCoût
Azure AI Search (fixe)Moins cher — 5-6× plus de capacité
Semantic RankerIdentique — 1000 req gratuites
Hybrid + Semantic classiqueAucun surcoût
Agentic RetrievalNouveau coût variable
Content UnderstandingPayant en plus

11Formation & Adoption


Objectif : que toute l'équipe (devs + ingénieurs géotech) soit autonome rapidement.

Pour l'équipe technique

ÉlémentDétail
Format1 atelier de 2h en visio ou présentiel
ContenuCréation/mise à jour d'index, requêtes hybrid + Semantic, mergeOrUpload
LivrablesNotebooks commentés + repo GitHub avec exemples
Suivi1 séance Q&A de 45 min

Pour les utilisateurs finaux (ingénieurs géotechniciens)

ÉlémentDétail
Format1 session de 1h30
ContenuDémo interface : recherche naturelle, filtres, carte, correction métadonnées
LivrablesCheat-sheet PDF "Comment poser une bonne question géotech"
ReplayVidéo Loom de 8 min disponible
Mesure d'adoptionRequêtes/utilisateur + taux correction métadonnées (> 15 % les 3 premiers mois)

Ressources supplémentaires

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âcheTechnologie
Création index + ingestion 20-50 PDFsNotebooks Python + Integrated Vectorization
Requête hybrid + Semantic RankerSDK azure-search-documents
Interface basiqueazure-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âcheTechnologie
Tags / facets / synonym mapCollection(Edm.String), format Solr
GeographyPoint + filtres géoEdm.GeographyPoint
Correction métadonnéesmergeOrUpload API REST
Carte Azure Mapsazure-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âcheTechnologie
Blob Trigger sur nouveaux fichiersazure-functions + azure-storage-blob
Nettoyage XML/CSVPython (xml.etree, csv)
Mise à jour incrémentalemergeOrUpload 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âcheTechnologie
Passage tier payantS1 ou supérieur
Tests de chargelocust / azure-load-testing
Monitoring + alertesAzure Cost Management
Formation utilisateursVoir section 11
✅ Livrable : Solution en production, scalable et adoptée

Frameworks & Paquets Recommandés

CoucheTechnologiePourquoi
SDK Azure Searchazure-search-documents + azure-identityOfficiel Microsoft
Stockage Blobazure-storage-blobTrigger + lecture fichiers
Orchestration LLMSemantic KernelNatif Azure, support tools
Alternative LLMLangChainPlus de communauté
Testspytest + azure-sdk fixturesTests unitaires + intégration
CI/CDGitHub ActionsDéploiement index + Function
Local (dev)Azurite + notebooksSeulement pour Blob Trigger

13Développement Local vs Azure + Budget Dev


Ce qu'il faut coder vs configurer

ComposantConfiguration AzureCode
Data Source (Blob)Portail
Index (schéma, champs vector)Wizard
Indexer + SkillsetPortail
Requête hybrid + semanticJSON query
Correction métadonnéesmergeOrUpload API
Mapping XML/CSV → indexCustom skill/Function
Connexion LLM + promptCode 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

PhaseEnvironnementPourquoi
PrototypageNotebooks Python sur Free tier AzureValidation rapide schéma + embeddings + queries
PipelineCode local (Function) + vrai Search cloudAzurite suffit pour Blob Trigger
TestsCI/CD GitHub Actions → Dev AzureTests unitaires local, intégration cloud
ProductionTier payant AzureScalabilité + monitoring

Budget Dev : 50-100 $

PosteCoût
Azure AI Search Free tier (50 MB, 3 indexes)Gratuit
Azure Functions Consumption1M 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 $
Search
Déployer Free tier
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