← Retour au blog

2026-01-22

Qu'est-ce qu'un RAG ? Guide Complet 2026

Comprendre les différents types de recherche (mots-clés, sémantique, vectorielle), savoir quand les utiliser, et maîtriser la configuration d'Azure AI Search pour un RAG optimal.

Le RAG (Retrieval-Augmented Generation) est devenu la pierre angulaire des applications d'IA générative en entreprise. Mais comment fonctionne réellement la recherche derrière un RAG ? Mots-clés, sémantique, vectorielle... Ce guide complet vous explique tout ce que vous devez savoir pour faire les bons choix et configurer Azure AI Search de manière optimale.

1. Qu'est-ce qu'un RAG ?

RAG signifie Retrieval-Augmented Generation (Génération Augmentée par Récupération). C'est une architecture qui combine deux composants essentiels :

🔍

1. Retrieval (Récupération)

Un moteur de recherche qui trouve les documents ou passages pertinents dans votre base de connaissances en fonction de la question posée.

🤖

2. Generation (Génération)

Un LLM (GPT-4, GPT-4o) qui génère une réponse en s'appuyant sur les documents récupérés, garantissant des réponses sourcées et vérifiables.

💡 Pourquoi le RAG est révolutionnaire ?

Sans RAG, un LLM ne connaît que ses données d'entraînement (coupure en 2023 pour GPT-4). Avec RAG, il accède à vos documents internes, actualisés, confidentiels — tout en gardant le contrôle sur les sources citées.

🔄 Flux d'un RAG typique

┌─────────────┐     ┌──────────────────┐     ┌─────────────────┐
│  Question   │ ──▶ │  Azure AI Search │ ──▶ │  Top K Documents│
│  utilisateur│     │  (Retrieval)     │     │  pertinents     │
└─────────────┘     └──────────────────┘     └────────┬────────┘
                                                      │
                                                      ▼
┌─────────────┐     ┌──────────────────┐     ┌─────────────────┐
│  Réponse    │ ◀── │  Azure OpenAI    │ ◀── │  Prompt + Docs  │
│  finale     │     │  (Generation)    │     │  contexte       │
└─────────────┘     └──────────────────┘     └─────────────────┘
    

2. Les 3 Types de Recherche

La qualité d'un RAG dépend directement de la qualité de la phase de récupération. Voici les trois approches principales :

🔤 2.1 Recherche par Mots-Clés (Keyword Search / BM25)

La méthode classique, basée sur la correspondance exacte des termes.

Comment ça fonctionne ?

  • Tokenisation : découpe le texte en mots individuels
  • Index inversé : mappe chaque mot aux documents qui le contiennent
  • Scoring BM25 : calcule la pertinence selon la fréquence des termes (TF-IDF amélioré)

Exemple :

Question : "procédure remboursement assurance"

→ Cherche les documents contenant exactement ces mots

✅ Avantages
  • • Rapide et économique
  • • Excellent pour les termes techniques exacts
  • • Pas de modèle d'embedding requis
  • • Résultats prévisibles et explicables
❌ Inconvénients
  • • Ne comprend pas le sens
  • • Échoue sur les synonymes
  • • Sensible aux fautes d'orthographe
  • • "Voiture" ≠ "automobile"

🧠 2.2 Recherche Sémantique (Semantic Search)

Comprend le sens de la requête, pas juste les mots.

Comment ça fonctionne ?

  • Modèle de langue : analyse la requête avec un transformer (BERT, etc.)
  • Reranking : ré-ordonne les résultats selon la compréhension sémantique
  • Captions & Answers : extrait les passages les plus pertinents

Exemple :

Question : "Comment me faire rembourser ?"

→ Comprend que c'est lié aux procédures de remboursement, même sans le mot exact

✅ Avantages
  • • Comprend les synonymes et paraphrases
  • • Robuste aux reformulations
  • • Extraction de passages précis
  • • Meilleur pour le langage naturel
❌ Inconvénients
  • • Coût supplémentaire (reranker)
  • • Moins bon sur les codes/références exactes
  • • Latence légèrement supérieure
  • • Limité en langues supportées

📐 2.3 Recherche Vectorielle (Vector Search)

Transforme textes et requêtes en vecteurs mathématiques pour mesurer leur similarité.

Comment ça fonctionne ?

  • Embedding : convertit chaque document en vecteur (ex: 1536 dimensions avec text-embedding-3-large)
  • Index vectoriel : stocke les vecteurs dans un index HNSW optimisé
  • Similarité cosinus : mesure la proximité entre le vecteur requête et les vecteurs documents

Exemple simplifié :

"Chat" → [0.2, 0.8, 0.1, ...]  (vecteur 1536D)
"Félin" → [0.19, 0.82, 0.09, ...] ← très proche !
"Voiture" → [0.9, 0.1, 0.7, ...] ← très différent
        
✅ Avantages
  • • Capture le sens profond
  • • Multilingue (même vecteur pour traductions)
  • • Recherche cross-modale possible
  • • Excellent pour le RAG
❌ Inconvénients
  • • Coût d'embedding (API calls)
  • • Stockage plus important
  • • Peut "halluciner" des similarités
  • • Termes exacts parfois manqués

3. Comparatif : Quand Utiliser Quoi ?

Critère Mots-Clés Sémantique Vectorielle
Termes exacts (codes, IDs) ⭐⭐⭐ ⭐⭐
Synonymes / Paraphrases ⭐⭐⭐ ⭐⭐⭐
Questions en langage naturel ⭐⭐⭐ ⭐⭐⭐
Coût 💰 💰💰 💰💰💰
Latence ⚡ ~10ms ⚡ ~50ms ⚡ ~30ms
Multilingue Limité

🎯 Recommandations par cas d'usage

  • 📋 Documentation technique (codes, références) → Mots-clés + Vectorielle
  • 💬 FAQ / Support client → Sémantique + Vectorielle (Hybrid)
  • 📚 Base de connaissances générale → Recherche Hybride complète
  • 🌍 Contenu multilingue → Vectorielle obligatoire
  • 💰 Budget serré → Mots-clés seuls avec bons synonymes

5. Configurer Azure AI Search pour un RAG Optimal

📋 5.1 Créer l'Index avec Champs Vectoriels

{
  "name": "documents-index",
  "fields": [
    {"name": "id", "type": "Edm.String", "key": true},
    {"name": "content", "type": "Edm.String", "searchable": true, "analyzer": "fr.microsoft"},
    {"name": "title", "type": "Edm.String", "searchable": true, "analyzer": "fr.microsoft"},
    {
      "name": "contentVector",
      "type": "Collection(Edm.Single)",
      "searchable": true,
      "dimensions": 1536,
      "vectorSearchProfile": "myHnswProfile"
    }
  ],
  "vectorSearch": {
    "algorithms": [
      {
        "name": "myHnsw",
        "kind": "hnsw",
        "hnswParameters": {
          "m": 4,
          "efConstruction": 400,
          "efSearch": 500,
          "metric": "cosine"
        }
      }
    ],
    "profiles": [
      {
        "name": "myHnswProfile",
        "algorithm": "myHnsw"
      }
    ]
  },
  "semantic": {
    "configurations": [
      {
        "name": "my-semantic-config",
        "prioritizedFields": {
          "titleField": {"fieldName": "title"},
          "contentFields": [{"fieldName": "content"}]
        }
      }
    ]
  }
}

🔍 5.2 Requête Hybride avec Semantic Reranking

from azure.search.documents import SearchClient
from azure.search.documents.models import VectorizedQuery

# Configuration
search_client = SearchClient(
    endpoint="https://your-search.search.windows.net",
    index_name="documents-index",
    credential=AzureKeyCredential(api_key)
)

# Embedding de la question
query_vector = get_embedding("Comment fonctionne le remboursement ?")

# Recherche Hybride + Semantic
results = search_client.search(
    search_text="remboursement procédure",  # Keyword search
    vector_queries=[
        VectorizedQuery(
            vector=query_vector,
            k_nearest_neighbors=50,
            fields="contentVector"
        )
    ],
    query_type="semantic",
    semantic_configuration_name="my-semantic-config",
    query_caption="extractive",
    query_answer="extractive",
    top=10
)

for result in results:
    print(f"Score: {result['@search.score']}")
    print(f"Reranker Score: {result['@search.reranker_score']}")
    print(f"Title: {result['title']}")
    print(f"Captions: {result['@search.captions']}")

⚙️ 5.3 Paramètres Clés à Ajuster

Paramètre Description Recommandation
k_nearest_neighbors Nombre de vecteurs similaires à récupérer 50-100 pour hybrid, 10-20 pour vector only
efSearch Qualité de recherche HNSW (plus = meilleur mais plus lent) 400-500 pour production
top Nombre de résultats finaux 5-10 pour le contexte LLM
dimensions Taille des vecteurs (dépend du modèle) 1536 (text-embedding-3-small) ou 3072 (large)
analyzer Analyseur linguistique pour keywords fr.microsoft pour le français

6. Bonnes Pratiques et Pièges à Éviter

✅ À FAIRE

  • Chunking intelligent : découper les documents en passages de 500-1000 tokens avec chevauchement de 10-20%
  • Métadonnées enrichies : ajouter titre, date, source, catégorie pour le filtrage
  • Test A/B : mesurer la pertinence avec différentes configurations
  • Semantic reranking : toujours activer pour améliorer la précision finale
  • Caching : mettre en cache les embeddings de requêtes fréquentes

❌ À ÉVITER

  • Chunks trop longs : dilue le signal sémantique, augmente le bruit
  • Ignorer les keywords : la recherche vectorielle seule manque les termes exacts
  • Trop de résultats : plus de 10-15 documents sature le contexte du LLM
  • Embedding une seule fois : ré-indexer quand le contenu change
  • Négliger les filtres : utilisez les filtres pour réduire l'espace de recherche

🚀 Prêt à Implémenter votre RAG ?

Galaxy AI accompagne les entreprises dans la conception et le déploiement de solutions RAG performantes sur Azure. De l'architecture à la mise en production, nous vous guidons à chaque étape.

Réserver une consultation gratuite