Guides

Qu'est-ce que le RAG? La génération augmentée par récupération expliquée simplement

Le RAG (génération augmentée par récupération) permet à un modèle d'IA de répondre à des questions en s'appuyant sur vos propres informations. Lorsqu'une personne pose une question, votre application cherche d'abord dans vos documents les passages les plus pertinents, puis transmet ces passages au modèle avec la question. Le modèle rédige sa réponse à partir de ce texte, au lieu de se fier uniquement à ce qu'il a appris pendant son entraînement.

Pourquoi le RAG est important quand on crée avec l'IA

Un grand modèle de langage connaît beaucoup de choses sur le monde en général, mais rien de votre entreprise : vos prix, vos politiques, votre manuel de produit, les tickets de soutien de la semaine dernière. Il a aussi une date limite d'entraînement, donc il ignore tout ce qui est récent. Si vous lui posez quand même la question, il peut produire une réponse assurée, plausible et fausse.

Vous disposez de trois grandes options pour corriger cela :

ApprocheCe qu'elle faitIdéale pour
Tout coller dans le promptEnvoyer tous vos documents avec chaque questionDe petites quantités de texte, quelques pages
RAGChercher dans vos documents et n'envoyer que les parties pertinentesDes collections plus volumineuses ou qui évoluent : centres d'aide, manuels, notes
Réglage finRéentraîner le modèle sur des exemplesLe ton, le format et les tâches répétitives, pas les faits qui changent

Les modèles actuels acceptent de longs prompts; pour une courte FAQ, la première option suffit souvent. Le RAG se justifie lorsque vous avez plus de texte que ce que vous voulez envoyer à chaque fois, parce que chaque mot envoyé coûte de l'argent et du temps (voir comment les API de LLM facturent).

Si vous créez une fonctionnalité « discuter avec notre documentation », un assistant de soutien ou un outil de connaissances interne, vous construisez presque certainement une forme de RAG.

Une analogie du quotidien

Imaginez un examen à livre ouvert. Un étudiant qui doit répondre de mémoire peut mal se souvenir ou bluffer. Un étudiant autorisé à tourner d'abord les bonnes pages, à les lire, puis à répondre est beaucoup plus fiable, à condition de trouver les bonnes pages.

  • L'étudiant, c'est le modèle de langage.
  • Le manuel, ce sont vos documents.
  • Tourner aux bonnes pages, c'est la récupération.
  • Rédiger la réponse à partir de ces pages, c'est la génération.

Le RAG est la version à livre ouvert. Et, comme à l'examen, la qualité de la réponse dépend beaucoup du fait que les bonnes pages aient été trouvées.

Comment fonctionne le RAG, étape par étape

Une configuration RAG typique comporte deux phases.

Préparer vos documents (fait à l'avance) :

  1. Recueillir la matière source : articles d'aide, PDF, politiques, données produit.
  2. Découper : séparer les longs documents en morceaux plus petits, souvent quelques paragraphes chacun, pour que la recherche ne retourne que la partie pertinente.
  3. Vectoriser chaque morceau : l'envoyer à un modèle d'embeddings, qui transforme le texte en embedding, une longue liste de nombres qui capte son sens. Des textes portant sur des sujets semblables obtiennent des nombres semblables.
  4. Stocker les morceaux et leurs embeddings dans une base de données capable de chercher par similarité (souvent appelée base de données vectorielle ou index vectoriel).

Répondre à une question (fait à chaque fois) :

  1. Vectoriser la question avec le même modèle d'embeddings.
  2. Récupérer les morceaux dont les embeddings sont les plus proches de celui de la question, par exemple les cinq premiers.
  3. Construire le prompt : les instructions, les morceaux récupérés et la question.
  4. Générer : le modèle de langage rédige une réponse à partir de ces morceaux, idéalement en indiquant lesquels il a utilisés.

La recherche par sens est ce qui rend l'ensemble efficace : une question sur « récupérer mon argent » peut trouver un morceau intitulé « Politique de remboursement », même s'ils n'ont aucun mot en commun.

Exemple concret : l'assistant d'aide d'une salle de sport

Supposons qu'une salle de sport ait 40 articles d'aide et veuille un assistant de clavardage sur son site. Un membre demande : « Puis-je suspendre mon abonnement pendant que je voyage? »

L'application vectorise la question et récupère les trois morceaux les plus proches. L'un d'eux se lit ainsi :

Suspension d'abonnement : les membres ayant un forfait mensuel peuvent
suspendre leur abonnement jusqu'à 2 mois par année. Faites la demande
à la réception ou dans l'application au moins 7 jours avant le début
de la suspension.

Le prompt envoyé au modèle ressemble alors à ceci :

Tu es l'assistant d'aide de Northside Gym.
Réponds uniquement à partir des sources ci-dessous. Si la réponse
ne s'y trouve pas, dis que tu ne sais pas et suggère de
communiquer avec la réception.
Mentionne la source utilisée.

[Source 1 : Suspension d'abonnement] Les membres ayant un forfait mensuel peuvent suspendre...
[Source 2 : Résiliation de l'abonnement] ...
[Source 3 : Laissez-passer invités] ...

Question : Puis-je suspendre mon abonnement pendant que je voyage?

Et le modèle répond : « Oui. Avec un forfait mensuel, vous pouvez suspendre votre abonnement jusqu'à deux mois par année. Faites la demande à la réception ou dans l'application au moins 7 jours à l'avance (source : Suspension d'abonnement). »

La salle n'a rien réentraîné. Lorsqu'elle modifie sa politique de suspension, elle met à jour l'article, l'application revectorise ce morceau, et la réponse suivante en tient compte.

Termes clés

TermeSignification
LLMGrand modèle de langage, l'IA qui rédige la réponse. Voir qu'est-ce qu'un LLM.
EmbeddingUne liste de nombres représentant le sens d'un texte.
Modèle d'embeddingsUn modèle qui produit des embeddings. Généralement distinct du modèle de clavardage, et beaucoup moins coûteux.
Morceau (chunk)Une portion de document, dimensionnée pour pouvoir être récupérée seule.
Base de données vectorielle / recherche vectorielleUn stockage qui trouve des éléments aux embeddings semblables. Certaines bases de données classiques l'offrent aussi, par exemple Postgres avec l'extension pgvector.
Top-kLe nombre de morceaux récupérés par question.
Recherche hybrideLa combinaison d'une recherche par sens et d'une recherche classique par mots-clés, utile pour les termes exacts comme les codes de produit.
Fenêtre de contexteLa quantité maximale de texte qu'un modèle peut traiter dans une seule requête.
Ancrage / citationsLier la réponse à des sources récupérées précises et les afficher.

Idées fausses courantes

  • « Le RAG entraîne le modèle sur mes données. » Faux. Le modèle ne change pas; il lit simplement du texte supplémentaire au moment de la question.
  • « Le RAG signifie plus d'hallucinations. » Au contraire, il y en a moins. Si la récupération rate le bon morceau, ou si la réponse ne figure pas dans vos documents, le modèle peut quand même deviner. Demandez-lui de dire « je ne sais pas » et testez-le avec des questions dont vous connaissez les réponses.
  • « Il me faut une base de données vectorielle spéciale. » Souvent non. Pour des volumes modestes, une extension vectorielle sur la base de données que vous utilisez déjà, ou même une simple recherche par mots-clés, peut suffire.
  • « Des morceaux plus gros, c'est mieux. » Trop gros, et vous envoyez beaucoup de texte non pertinent (plus de coûts, plus de confusion); trop petits, et un morceau perd le contexte qui le rendait utile. Prévoyez des ajustements.
  • « Il suffit de tout téléverser. » Des documents périmés, dupliqués ou contradictoires produisent des réponses contradictoires. Nettoyer la matière source est souvent la meilleure amélioration possible.
  • « N'importe qui peut voir n'importe quel document. » Seulement si vous le construisez ainsi. Si certains documents sont privés pour certains utilisateurs, la recherche elle-même doit filtrer selon la personne qui pose la question; sinon, l'assistant peut citer les données d'un client à un autre.

Ce que cela coûte

Une fonctionnalité RAG comporte généralement trois coûts récurrents : la vectorisation de vos documents (faible, et surtout ponctuelle), la vectorisation de chaque question (minime), et l'appel au modèle de langage (le coût principal, qui augmente avec le nombre de morceaux envoyés). Il faut ajouter le stockage dans votre base de données. Votre fournisseur d'IA facture ces coûts à votre propre compte; fixez donc une limite de dépenses chez lui.

Quoi demander à votre générateur d'applications

  • « Avant de construire le RAG, vérifie : notre contenu est-il assez petit pour simplement l'inclure dans le prompt? »
  • « Découpe les articles d'aide en morceaux de quelques paragraphes, conserve le titre et le lien source de chaque morceau, et stocke les embeddings dans notre base de données. »
  • « Utilise une recherche hybride, par sens et par mots-clés, pour que les codes de produit correspondent toujours. »
  • « Demande au modèle de répondre uniquement à partir des sources récupérées, de dire quand il ne sait pas, et d'afficher les sources sous chaque réponse. »
  • « Ne recherche que les documents auxquels l'utilisateur connecté a le droit d'accéder. »
  • « Revectorise automatiquement un document chaque fois qu'il est modifié. »
  • « Garde la clé du fournisseur d'IA sur le serveur, dans un secret, jamais dans le navigateur. »
  • « Consigne chaque question, les morceaux récupérés et la réponse afin que je puisse examiner les mauvaises réponses. »

Le RAG dans Mythex

Mythex n'inclut pas de produit clé en main de base de connaissances ou de RAG. Ce qu'il fait, c'est écrire le code d'un tel système dans votre application : vous apportez vos documents et votre propre clé de fournisseur d'IA, conservée comme secret de projet, et l'agent construit les parties de récupération et de clavardage, en utilisant la base de données Postgres du projet pour le stockage. L'utilisation du fournisseur est facturée à votre compte chez lui, et non en crédits Mythex. La documentation suggère de commencer par une seule fonctionnalité d'IA simple et d'ajouter le RAG une fois celle-ci fonctionnelle; voir créer une application d'IA, ainsi que nos guides sur créer une application de chatbot IA et ajouter des fonctionnalités d'IA.

Questions

Qu'est-ce que le RAG, en termes simples?

Le RAG (génération augmentée par récupération) est une façon de faire répondre un modèle d'IA à partir de vos propres informations. Avant que le modèle réponde, votre application cherche dans vos documents les passages les plus pertinents pour la question et les ajoute au prompt. La réponse s'appuie donc sur ce texte, et non seulement sur ce que le modèle a appris pendant son entraînement.

Le RAG entraîne-t-il l'IA sur mes données?

Non. Le RAG ne modifie pas du tout le modèle. Il recherche le texte pertinent au moment où la question est posée et le transmet au modèle avec la question. Si vous mettez un document à jour, la réponse suivante peut utiliser la nouvelle version immédiatement.

Le RAG est-il la même chose que le réglage fin (fine-tuning)?

Non. Le réglage fin modifie le comportement d'un modèle en le réentraînant sur des exemples. C'est plus lent et mieux adapté au style ou au format. Le RAG fournit au modèle des faits à lire au moment de la question, ce qui convient mieux aux connaissances qui changent ou qui doivent être citées avec exactitude.

Le RAG élimine-t-il les hallucinations de l'IA?

Il les réduit, mais ne les élimine pas. Si la recherche trouve les mauvais passages, ou si la réponse ne figure pas dans vos documents, le modèle peut tout de même deviner. Les bonnes applications RAG demandent au modèle de dire lorsqu'il ne sait pas et affichent les sources utilisées.

Mythex · Pricing · Créez n'importe quoi avec l'IA · Modèles de sites web et d'applications · Mythex comparé · Glossaire de la création d'applications avec l'IA · Outils gratuits pour créer des applications avec l'IA · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)