← 返回列表

Question d'entretien IA n°11 : Comment optimiser le RAG ?

L'optimisation du RAG ne se limite pas à un seul composant, mais constitue un processus d'optimisation de bout en bout. Ci-dessous, je présente des stratégies d'optimisation systématiques à partir de quatre dimensions : côté indexation des données, côté recherche, côté génération et côté évaluation, ainsi que des expériences pratiques à mentionner lors des entretiens.


I. Optimisation côté indexation des données (amélioration de la qualité de la « base de connaissances »)

C'est l'aspect le plus négligé mais qui apporte les gains les plus rapides.

Point d'optimisation Problème observé Méthode concrète Indicateur d'effet
Analyse de documents Les tableaux et organigrammes dans les PDF sont ignorés, ou le texte est mal encodé ou désordonné. Utiliser de meilleures bibliothèques d'analyse (ex. unstructured, mode de conservation de mise en page de pypdf) ; pour les tableaux, extraire avec pandas puis convertir en Markdown. Taux de rappel +5~15%
Taille des chunks Un chunk trop petit perd le contexte (ex. « sa croissance de revenus cette année » où « sa » perd sa référence) ; un chunk trop large augmente le bruit de recherche. Expérimenter différentes tailles de chunk (256/512/768 tokens), avec un chevauchement de 10~20% ; pour les longs documents, découper selon les limites sémantiques (paragraphes/titres) plutôt qu'une longueur fixe. Taux de succès / Fidélité
Ajout de métadonnées Des segments pertinents sont trouvés, mais on ne peut pas retracer la source ou la date, ou filtrer par domaine. Ajouter des métadonnées à chaque chunk : source (nom du fichier/URL), timestamp, page_num, doc_type. Utiliser des filtres lors de la recherche (ex. doc_type == 'legal'). Précision du filtrage
Choix du modèle d'embedding Les embeddings génériques sont médiocres dans des domaines verticaux (médical, code, juridique). Utiliser des modèles affinés par domaine (BGE‑large‑zh, GTE‑Qwen2‑7B‑instruct) ; ou affiner son propre modèle d'embedding (avec triplet loss). MRR@10 en recherche +10~20%

II. Optimisation côté recherche (améliorer la précision de la « consultation »)

La recherche détermine la qualité des « documents de référence » fournis au LLM.

Point d'optimisation Problème observé Méthode concrète Effet
Recherche hybride La recherche vectorielle ne peut pas faire correspondre des termes précis (ex. modèle produit ABC-123), la recherche par mots-clés ne peut pas comprendre les synonymes. Utiliser simultanément la recherche vectorielle (sémantique) et BM25 (mots-clés), fusionner par pondération (ex. 0.7vecteur + 0.3BM25) ou par reranking. Taux de rappel +10~25%
Reclassement (Rerank) Les premiers résultats de la recherche vectorielle ne sont pas forcément les plus pertinents ; le 10e peut être le meilleur. Utiliser un modèle cross‑encoder (ex. BGE‑reranker-v2, Cohere Rerank) pour re‑noter les candidats (ex. top 20), puis prendre le top‑K. Amélioration significative du taux de succès (surtout top‑1)
Réécriture de requêtes Les questions utilisateur sont vagues ou les références dans un dialogue multi‑tour sont floues (ex. « Quel est son prix ? »). Utiliser le LLM pour réécrire la question originale en une forme mieux adaptée à la recherche (ex. « Quel est le prix de l'iPhone 15 ? ») ; ou compléter avec l'historique du dialogue. Taux de rappel +5~15%
HyDE La question utilisateur est trop courte ou abstraite (ex. « Parle-moi de la photosynthèse »), la recherche directe est inefficace. Demander d'abord au LLM de générer une réponse hypothétique, puis utiliser cette réponse pour rechercher des documents. Adapté aux domaines ouverts, mais pas pour les questions factuelles précises
Ajustement du Top‑K de recherche Un K trop petit peut manquer des informations clés ; un K trop grand augmente la consommation de tokens et le bruit. Expérimenter K=3/5/10, observer l'équilibre entre taux de rappel et précision de la réponse. Compromis efficacité/qualité

III. Optimisation côté génération (permettre au LLM de bien utiliser les documents de référence)

Même avec une bonne recherche, un mauvais prompt ou un modèle faible ne fonctionnera pas.

Point d'optimisation Problème observé Méthode concrète Effet
Ingénierie de prompts Le LLM ignore le contenu récupéré ou invente des informations. Donner une instruction claire : « Répondez uniquement à partir des documents de référence fournis ci-dessous. Si les informations sont insuffisantes ou non pertinentes, répondez 'Pas assez d'informations'. » Ajouter des exemples few‑shot montrant comment citer les sources. Fidélité +20~40%
Compression du contexte Le contenu récupéré est trop long (dépasse la fenêtre de contexte du modèle) ou contient beaucoup de bruit. Utiliser LLMLingua ou une « compression de contexte sélective » pour conserver les phrases les plus pertinentes avant de les envoyer au LLM. Réduction du risque de perte d'information
Mise à niveau du modèle LLM Un petit modèle (7B) ne peut pas effectuer des raisonnements complexes ou retenir un long contexte. Passer à un modèle plus puissant (GPT‑4o, Claude 3.5 Sonnet, Qwen2.5‑72B). Amélioration substantielle de la précision du raisonnement
Streaming et citations L'utilisateur ne peut pas vérifier la crédibilité de la réponse. Demander au LLM de produire [citation:1] correspondant au numéro du document récupéré. Joindre le lien original dans le backend. Confiance de l'utilisateur + débogabilité
Calibrage du refus de répondre Le modèle invente quand il ne devrait pas répondre, ou dit « je ne sais pas » quand il devrait répondre. Définir un seuil de similarité : si la similarité cosinus entre le chunk top‑1 et la question est inférieure à 0,7, inciter le LLM à répondre « Document non pertinent ». Réduction du taux d'hallucination

IV. Évaluation et itération (savoir où ajuster)

Pas de métrique, pas d'optimisation.

Point d'optimisation Méthode Indicateur
Création d'un jeu d'évaluation Préparer 100~300 questions utilisateur réelles + réponses de référence + IDs de documents pertinents. Couvrir différentes difficultés et intentions.
Évaluation automatique Utiliser RAGAS (Faithfulness, Answer Relevance, Context Recall) ou TruLens. Trois métriques clés : fidélité, pertinence de la réponse, rappel du contexte.
Évaluation humaine Tester 20 cas défaillants par semaine, analyser le type d'erreur (échec de recherche / erreur de génération / lacune de la base de connaissances). Priorisation des améliorations.
Tests A/B En production, tester différentes stratégies de recherche (ex. BM25 vs recherche hybride) sur des groupes distincts. Métriques en ligne : satisfaction utilisateur, taux de non‑réponse.

V. Expériences pratiques à mentionner lors des entretiens (points bonus)

« Dans le projet RAG dont j'étais responsable, le taux de succès initial était de 67 %. J'ai fait trois choses :
1. Passer d'un chunking fixe à 1024 à un découpage sémantique dynamique (selon les titres et paragraphes), le taux de succès est monté à 74 % ;
2. Ajouter une recherche hybride (vecteurs + BM25) et un petit modèle de reranking, le taux de succès est monté à 83 % ;
3. Optimiser le prompt et exiger la réponse [Aucune information trouvée] , le taux d'hallucination est passé de 22 % à moins de 5 %.

De plus, nous avons mis en place un pipeline d'évaluation continu, exécutant le score RAGAS sur 200 questions avant chaque modification pour garantir l'absence de régression. »


Résumé final : une feuille de route complète pour l'optimisation du RAG

Couche des données ─→ Nettoyage des documents, optimisation du chunking, augmentation des métadonnées, embedding de domaine
Couche de recherche ─→ Recherche hybride, reclassement, réécriture de requêtes, HyDE, ajustement du Top-K
Couche de génération ─→ Renforcement des prompts, exigences d'instructions, compression, citations, seuil de refus
Couche d'évaluation ─→ Ensemble d'évaluation, RAGAS, analyse humaine, expériences A/B

评论

暂无已展示的评论。

发表评论(匿名)