Yi SHENFull-stack & solutions IA

Paris • Singapour • Shanghai

RAG Formation · Leçon · Ingénierie de la recherche

Recherche sémantique, recherche par mots-clés et recherche hybride

Associer identifiants SOP, acronymes, noms, dates et concepts au signal de recherche capable de les retrouver — vectoriel, plein texte, résumé ou graphe.

$ lesson --status
▸ course RAG Formation
▸ lesson 05 / 16
▸ phase Ingénierie de la recherche
▸ status Terminé
● build → measure → learn

Leçon autonome

Apprenez la leçon complète et vérifiez votre compréhension ici.

Le contenu des 16 leçons de RAG Formation est complet. Cette page contient le contenu complet, les références locales et des exercices immédiats dans le navigateur.

Le gain concret de cette leçon

À la fin de cette leçon, vous aurez complété un tableau comparatif question par question et choisi une amélioration de la récupération réellement étayée par les preuves.

Regarder la vidéo

1 · Le modèle minimal utile

  • Recherche vectorielle (sémantique) : convertit le texte en embeddings à virgule flottante (par ex. Qdrant, Pinecone) pour capturer la similarité en haute dimension, le contexte, le sens et les paraphrases plutôt que les mots exacts. Sa robustesse entre les langues dépend du modèle d’embeddings — ne le supposez pas, mesurez-la.
  • Recherche plein texte (lexicale) : fait correspondre des chaînes de tokens littérales — identifiants exacts, noms, acronymes et nombres — à l’aide d’algorithmes comme BM25 et de la tolérance aux fautes de frappe (par ex. Meilisearch, Elasticsearch). Lorsque l’orthographe exacte porte le sens, c’est elle qui vous sauve. Remarque : les frontières entre moteurs évoluent — des moteurs comme Meilisearch savent aussi gérer nativement les embeddings vectoriels pour une recherche hybride unifiée.
  • Récupération par graphe (relationnelle / structurelle) : parcourt dynamiquement des nœuds, des arêtes et des relations d’entités explicites (par ex. Neo4j, LightRAG). Ce n’est pas simplement « une autre façon de trouver un fragment » — c’est le seul signal structurel capable de tracer des connexions à plusieurs sauts (par ex. relier des faits répartis dans différents documents), ce que la recherche vectorielle et plein texte ne peuvent pas faire de façon fiable à elles seules.
  • Récupération de résumé : un index séparé contenant un résumé vectorisé par document entier, et non par fragment. Il répond à « de quoi parle ce document », lorsqu’un seul fragment d’environ 500 tokens est trop étroit pour représenter l’ensemble.
  • Union cumulative : pour cette expérience, une source est considérée comme trouvée dès qu’elle apparaît dans l’un des quatre signaux. Cela mesure la contribution à la récupération, pas l’exactitude de la réponse finale.
  • Récupération hybride : dans ce système, « hybride » signifie que tous les signaux s’exécutent en parallèle et que leurs résultats formatés sont concaténés — sans fusion ni réordonnancement. Il n’y a ni normalisation de score ni fusion de rang réciproque entre les signaux ; la seule véritable fusion se produit à l’intérieur de LightRAG lui-même, entre ses propres passes d’entités, de relations et de vecteurs. Un moteur de réordonnancement existe dans le code mais n’est pas branché sur la récupération en production — ne présumez pas qu’« hybride » implique davantage de sophistication que « parallèle et concaténé ».
Quatre signaux de récupération : vecteur, plein texte, résumé et graphe Chaque signal fait passer la même requête par ses propres étapes, puis les quatre sont concaténés — sans fusion ni réordonnancement — dans un seul prompt. Vecteur · Sémantique Requête : « cours de RAG » Vectoriser la requête Comparer aux fragments Classer par similarité Fragments sémantiquement proches détecte le sens, pas les mots exacts Plein texte · Lexical Requête : « cours de RAG » Tokeniser et normaliser Tokens exacts, tolérant aux fautes Classer par pertinence (BM25) Fragments à correspondance exacte détecte identifiants, noms, orthographe Résumé Requête : « cours de RAG » Vectoriser la requête Comparer aux résumés de documents Classer au niveau du document Correspondances niveau document détecte « de quoi parle ce document » Graphe · LightRAG Requête : « cours de RAG » Extraire entités et relations Parcourir les arêtes (multi-sauts) Fusionner entités et relations Connexions inter-documents le seul signal multi-sauts hybride — concaténé, pas fusionné PROMPT — vecteur + plein texte + résumé + graphe Pas de fusion des scores. Pas de réordonnancement entre signaux. La véritable fusion a lieu uniquement à l’intérieur du signal graphe, entre ses passes entités et relations.
Chacun des quatre signaux fait passer la même requête par ses propres étapes. Les résultats sont concaténés dans un seul prompt — sans fusion, sans réordonnancement.

Lecture principale : recherche hybride de Qdrant — observez comment elle combine plusieurs représentations de recherche et pourquoi cette combinaison doit être évaluée plutôt que supposée efficace.

2 · Exécuter une expérience contrôlée

Réutilisez la même démonstration isolée et le même jeu d’évaluation que dans la leçon 4. Le mode récupération appelle directement /api/v1/search, sans évaluateur LLM dans la boucle, ce qui permet de mesurer proprement la récupération seule.

cd demo
python3 eval.py verify
python3 eval.py run --mode retrieval --workspace meridian_demo --tag lesson-05-experiment

Vous obtiendrez deux fichiers : un rapport agrégé et un rapport JSON question par question.

reports/lesson-05-experiment.md
reports/lesson-05-experiment.json

Pour chaque question examinée, regardez :

  • results[].retrieval.indexes.vector.all
  • results[].retrieval.indexes.fulltext.all
  • results[].retrieval.indexes.summary.all
  • results[].retrieval.indexes.graph.all
  • results[].retrieval.cumulative["vector+fulltext"].all
  • results[].retrieval.cumulative["vector+fulltext+summary"].all
  • results[].retrieval.cumulative["vector+fulltext+summary+graph"].all

Évaluez une correspondance à partir des métadonnées de source, et non d’une correspondance textuelle : un identifiant de document qui apparaît seulement dans le texte d’un autre document ne compte pas comme une récupération.

La colonne du graphe est approximative, et le rapport le précise lui-même : LightRAG renvoie une seule chaîne de contexte plate plutôt qu’une liste de documents, si bien qu’une référence compte comme un hit du graphe dès qu’elle apparaît n’importe où dans cette chaîne — ce qui peut provenir d’un renvoi croisé à l’intérieur d’un autre document. Considérez-le comme un signal réel, mais plus bruité. Il est rapporté séparément et n’est jamais fusionné silencieusement avec les trois autres.

3 · Compléter le tableau comparatif

Remplissez les cinq colonnes de résultats avec all, partial ou miss — utilisez partial lorsqu’une question portant sur plusieurs documents ne fait apparaître qu’une partie des sources attendues. Ajoutez ensuite, pour chaque ligne, une interprétation et une prochaine étape précise.

ID de la questionType de requêteSource attendueRésultat vectorielRésultat plein texteRésultat résuméRésultat grapheUnion cumulativeInterprétationProchaine action
q21Reference lookupPR-QA-MRD-010___________________________________
q24Reference lookup / revisionPR-QA-MRD-009___________________________________
q32Cross-lingual factualPR-EXM-MRD-003___________________________________
q46Literal factualPR-ACH-MRD-007___________________________________
q63Multi-hopPR-CLI-MRD-013 + PR-QA-MRD-009___________________________________

4 · Interpréter avant de modifier le code

Cas A : Pour q21, le vecteur renvoie miss, le plein texte renvoie all et l’union cumulative vaut all. Que pouvez-vous réellement en conclure ?

Cas B : Le vecteur et le plein texte renvoient tous deux all ; l’union n’ajoute donc aucune nouvelle source ici. Quelle est l’interprétation honnête ?

Cas C : Le résultat cumulatif vector+fulltext de q63 vaut all, mais la réponse finale reste erronée. Où chercher ensuite ?

Lien avec la mission

Un chatbot destiné à une entreprise réglementée doit réussir sur les deux tableaux : retrouver une procédure formulée avec précision et traiter une question de politique posée comme le ferait une personne réelle. Ce tableau transforme cet objectif de fiabilité en une décision de récupération concrète et traçable.

5 · Livrable et prochaine action

  1. Complétez les cinq lignes du tableau comparatif.
  2. Rédigez un paragraphe : quel signal a ajouté une source, pour quel type de requête et quelles preuves l’établissent ?
  3. Choisissez une prochaine action et nommez l’indicateur que vous relancerez pour vérifier son efficacité.

Prochaine étape : leçon 6 — segmentation et structure des documents. Conservez ce tableau : il constitue votre base de référence pour les prochaines expériences sur la segmentation et le traitement des requêtes.

Posez-moi toutes vos questions sur les champs du rapport, la correspondance des métadonnées, les catégories de requêtes ou toute ligne qui vous semble obscure. Je suis votre enseignant pour cette formation : c’est précisément mon rôle.