Je parcours votre contenu pour vous aider à trouver rapidement les réponses à vos questions.
Que savoir lors de la mise en œuvre de RAG avec votre solution de recherche
La génération augmentée par récupération (RAG) représente une perspective différente dans la recherche d'entreprise, allant au-delà des résultats obsolètes des opérations booléennes vers un flux de conversation dynamique qui comprend l'intention de l'utilisateur et génère des réponses contextuelles.
Que faut-il savoir lors de la mise en œuvre de RAG avec votre solution de recherche ?
Ce livre blanc aborde les points suivants :
Le rôle de RAG dans les architectures d'IA d'entreprise modernes
Une analyse comparative entre les paradigmes de recherche traditionnels et la recherche sémantique basée sur RAG.
Exigences en matière de sécurité, de confidentialité et de conformité
Considérations relatives à la mise en œuvre
Meilleures pratiques et pièges courants
Découvrez dans notre dernier livre blanc comment intégrer RAG à votre feuille de route en matière d'IA et débloquer des capacités de recherche de nouvelle génération avec Algolia.
Dans le monde actuel, où les données sont reines, l'information est devenue le nouveau carburant. Les entreprises – qu'elles opèrent dans le commerce de détail, la finance ou d'autres secteurs – qui disposent d'immenses réserves de données inexploitées peuvent à la fois accélérer leur transformation technologique et offrir à leurs clients des solutions inégalées.
Des catalogues de produits aux bases de connaissances du service client, en passant par les wikis internes et la documentation multilingue, le volume et la diversité des informations peuvent submerger employés et clients. Les systèmes de recherche traditionnels par mots-clés, bien que simples et intuitifs, sont souvent source de frustration pour les utilisateurs qui doivent parcourir des pages d'informations incomplètes ou non pertinentes, confrontés à des problèmes de vocabulaire, d'erreurs de logique booléenne et de références obsolètes.
La génération augmentée par la recherche (RAG) offre une approche novatrice : en combinant des mécanismes de recherche sémantique avec de puissants modèles de langage à grande échelle (LLM), les organisations peuvent fournir des réponses conversationnelles et contextuelles directement à partir de leurs données. Au lieu de présenter des liens bruts ou des extraits de documents que les lecteurs doivent parcourir rapidement, la RAG extrait les informations pertinentes et combine les règles métier et le contexte du domaine pour que la sortie d'un modèle produise des réponses précises et adaptées au domaine d'activité.
Dans ce livre blanc, nous explorerons :
À la fin de ce document, vous aurez une compréhension globale de la manière de piloter, d'itérer et de déployer RAG au sein de votre organisation, permettant ainsi aux employés de trouver des réponses plus rapidement et ravissant les clients grâce à des expériences conversationnelles intelligentes sur tous les canaux.
La recherche d'entreprise a considérablement évolué depuis ses débuts à la fin des années 1990. Les systèmes de recherche traditionnels par mots-clés s'appuyaient sur un index inversé (associant les termes aux identifiants des documents) et sur des requêtes booléennes pour filtrer les résultats. Au fil du temps, des fonctionnalités telles que le facettage, la saisie semi-automatique et la recherche par meilleure correspondance (BM25) ont amélioré la pertinence, mais les utilisateurs sont toujours confrontés à des défis importants, notamment :
Ces cinq dernières années, avec l'avènement de l'IA, deux avancées majeures ont remodelé le paysage technique :
Les modèles d'intégration neuronale transforment le texte en vecteurs denses qui capturent les corrélations sémantiques. Grâce à des algorithmes comme l'approximation du plus proche voisin (ANN), les systèmes peuvent retrouver des documents en se basant sur leur signification plutôt que sur une correspondance exacte des mots.
Pourquoi la capture du sens sémantique est-elle nécessaire dans la recherche moderne ?
Il est essentiel de comprendre précisément ce que recherchent les clients. Lorsqu'une personne saisit « robe rouge », elle s'attend à trouver des vêtements alliant cette couleur et ce style précis : une robe, et rien d'autre. Proposer un short bleu ou un t-shirt en réponse à une telle requête est non seulement agaçant, mais cela mine également la confiance de l'utilisateur dans le système de recherche. La recherche moderne, grâce à la génération de résultats augmentés (RAG), discerne ces nuances subtiles et fournit des résultats qui respectent à la fois la couleur et la catégorie avec une précision infaillible.
Modèles de langage de grande taille (LLM) :
Un LLM est un modèle qui renvoie des réponses fluides lorsqu'on lui fournit une entrée. Le LLM utilise ce contexte précis pour générer une réponse exacte et actualisée.
Les systèmes de modélisation du langage humain (LLM) combinent des connaissances factuelles solides et une aisance linguistique. Certains LLM incluent des modèles pré-entraînés de type transformeur, tels que GPT, PaLM et LLaMA, capables de comprendre le contexte et de raisonner à partir des données d'entrée. ChatGPT est un produit qui exécute une ou plusieurs versions de modèles GPT pour générer des réponses aux requêtes des utilisateurs. Le contexte de ces modèles provient principalement d'un entraînement global réalisé à partir d'informations librement accessibles sur le web, ainsi que d'ensembles de données annotés par des humains pour des domaines spécifiques. Il constitue généralement le fondement factuel du système lors de la génération des réponses.
En combinant la recherche vectorielle avec les capacités de génération des modèles de langage naturel (LLM), on obtient RAG. RAG associe une base de données vectorielle de données organisationnelles et une requête utilisateur vectorisée, puis les transmet au LLM. Le modèle LLM utilise ensuite ce contexte actualisé et ciblé, issu de la base de données et de la requête, pour générer des réponses à la fois factuelles et fluides. En résumé, RAG « ancre » le LLM en lui fournissant d'abord les informations pertinentes, puis lui permet de convertir le résultat en une réponse en langage naturel.
Dans un scénario antérieur à RAG, lorsqu'un employé de magasin doit vérifier si une règle promotionnelle s'applique ou non aux articles en liquidation, le paradigme de recherche traditionnel entre en jeu :
1. Recherchez « règles des soldes de liquidation » et consultez plusieurs documents PDF correspondant à ces mots-clés.
2. Appliquez les filtres « promotion d'été » et parcourez la liste des résultats.
3. Effectuer manuellement des références croisées entre les dates et les catégories de produits
Ce processus étape par étape peut engendrer une perte de temps considérable pour un résultat minime, créant ainsi des inefficacités et une charge cognitive supplémentaire. Cela serait non seulement préjudiciable au vendeur, mais aussi au client qui patiente peut-être dans la file d'attente.
Avec RAG, le même processus devient aussi simple que :
« Est-ce que les soldes d'été incluent les maillots de bain de fin de saison ? »
Sous le capot, le système :
« Oui. Conformément à la section 4.2.1 de la Politique de promotion d'été, tous les articles signalés comme « liquidation – fin de saison » – y compris les maillots de bain – sont admissibles à la réduction de 20 %. »
(Source : Summer_Promo_Policy.pdf ; Product_Metadata_Store.csv)
Avantages :
Face à l'exigence actuelle de réponses instantanées et précises – que ce soit via des chatbots, des assistants vocaux, des bornes interactives ou des applications mobiles – les détaillants ne peuvent se permettre aucune lacune ni incohérence. La recherche optimisée par RAG permet de faire le lien entre ces différents canaux de manière fluide.
Cohérence omnicanale
Chaque client obtient la même réponse actualisée, quel que soit le lieu ou la question posée. Qu'il scanne un QR code en magasin ou appuie sur le bouton « Aide » de son téléphone, la plateforme RAG sous-jacente puise dans la même base de connaissances et fournit une réponse uniforme. Vous n'obtiendrez ainsi aucune information contradictoire concernant les spécifications des produits ou les conditions générales.
Support évolutif
Les questions courantes telles que « Quelle est la politique de retour ? », « Cet article est-il en stock ? » ou « Est-il disponible dans une autre couleur/taille ? » sont traitées automatiquement par des assistants intelligents, 24 h/24 et 7 j/7. Cela permet aux spécialistes humains de se concentrer sur les cas complexes (demandes VIP, problèmes techniques, problèmes de transactions/remboursements) plutôt que de fournir des informations répétitives, ce qui vous permet d'adapter le support sans augmenter vos effectifs.
Engagements personnalisés
Grâce à l'intégration de RAG avec les données clients disponibles (commandes précédentes, statut de fidélité, historique de navigation), les demandes de suivi semblent naturelles et pertinentes : « J'ai vu que vous avez acheté une robe rouge la semaine dernière ; aimeriez-vous des talons assortis ? » Le système affine chaque réponse en fonction du profil du client, transformant les FAQ standardisées en conversations véritablement personnalisées.
En substance, RAG combine la recherche de passages de contenu sémantiquement pertinents pour une requête donnée et leur utilisation pour orienter et étayer la sortie d'un LLM. On peut le décrire comme une architecture globale optimisée qui enrichit la requête de l'utilisateur, le contexte (les documents ou textes fournis par l'utilisateur) et les connaissances de base du LLM afin de générer une sortie non seulement efficace, mais aussi fondée sur les informations factuelles de l'entreprise.
Entre l'alimentation en contexte et la saisie des requêtes, nous devons explorer comment rendre ces informations lisibles par machine afin qu'elle comprenne ce qu'elle lit.
Les systèmes de recherche traditionnels ont commencé à décliner avec l'intégration progressive des chatbots dans le service client. Ces derniers gèrent activement les FAQ et conservent de précieuses métadonnées clients pour améliorer l'engagement. Cependant, avant l'essor récent de l'IA, les chatbots étaient peu intelligents. Pour rester compétitives face à cette révolution, les entreprises ont cherché à intégrer l'IA non seulement via les chatbots, mais aussi via leurs systèmes de recherche destinés aux utilisateurs et aux employés.
À mesure que les entreprises adoptent l'IA nouvellement évoluée au-delà des chatbots autonomes ou des tableaux de bord analytiques, RAG intègre plusieurs domaines de l'IA, notamment les suivants.
Les plongements lexicaux modernes ne se contentent pas de capturer la cooccurrence des mots ; ils apprennent des représentations plus profondes des relations de sens entre eux. Des modèles comme CLIP d'OpenAI établissent des ponts entre les modalités (différents modes de données), en projetant images, extraits audio et textes dans un même espace multidimensionnel (vectorisation). Dans le contexte de la recherche, de l'analyse, de la génération et de la consultation (RAG), cela signifie que vous pouvez récupérer un exemple d'image pour une demande de fonctionnalité produit, ou extraire un extrait de transcription vidéo lorsque les utilisateurs demandent des instructions ; aucun pipeline séparé n'est nécessaire. Ces avancées permettent aux étapes de recherche de proposer des expériences véritablement multimodales. Par exemple, un utilisateur pourrait télécharger l'image d'un bijou en or et chercher un bijou similaire en argent. Le même modèle qui génère des informations à partir de requêtes textuelles et d'informations de base de données peut également vectoriser l'intégralité des données d'une image dans le même espace de plongement lexical, puis combiner les requêtes vectorisées pour générer des solutions correspondant aux préférences de l'utilisateur. Même si les suggestions ne correspondent pas exactement à l'image (si celle-ci ne présente pas de bijoux), le modèle proposera, dans la mesure du possible, ce que l'entreprise a de plus proche de la demande de l'utilisateur.
Au-delà de la simple réponse aux questions ponctuelles, RAG optimise les flux de travail documentaires. Les outils de résumé enrichi par la recherche peuvent intégrer de volumineux documents de politique interne, puis générer des rapports de conformité à la demande, en citant des passages précis et en signalant automatiquement les éventuelles lacunes. De même, les processus de vérification des faits exploitent RAG pour confronter les affirmations à des sources faisant autorité, produisant ainsi des tableaux de preuves traçables que les auditeurs ou les équipes juridiques peuvent consulter. Les entreprises utilisent ces cadres pour maintenir leurs manuels, procédures opérationnelles standard et guides techniques à jour en fonction de l'évolution de la réglementation ou des mises à jour de produits, automatisant ainsi des tâches qui nécessitaient auparavant des équipes de documentation dédiées.
Les assistants conversationnels de pointe ne se contentent pas de bavarder : ils raisonnent à travers des processus en plusieurs étapes, orchestrant les appels d’API, les vérifications de conditions et les requêtes de récupération au cours d’une seule session. Un agent de vente au détail, par exemple, pourrait d’abord extraire les données d’inventaire via une API ERP, puis effectuer une recherche RAG sur les « meilleures alternatives » en cas de faible stock, et enfin consulter un moteur de tarification pour proposer une réduction. Cette prise de décision dynamique – savoir quand effectuer une recherche et quand faire appel à un service externe – transforme les chatbots traditionnels en conseillers flexibles capables de gérer des transactions de bout en bout, des évaluations de risques et des recommandations de vente incitative personnalisées. En intégrant la recherche RAG au cœur de ces domaines, les organisations peuvent construire :
Maintenant que nous avons compris comment un ou plusieurs systèmes RAG peuvent contribuer à intégrer l'IA dans les espaces de recherche d'entreprise, vous allez maintenant approfondir votre compréhension de la manière dont RAG permet à toutes les fonctionnalités de s'unir en une seule unité de calcul.
Un pipeline RAG d'entreprise est un flux de travail multi-étapes qui garantit des réponses actualisées, pertinentes et conformes à grande échelle. Pour que ce flux de travail fonctionne correctement, il est essentiel de bien comprendre ses composantes. Les concepts techniques fondamentaux du RAG sont les principaux moteurs de son architecture. Les points suivants vous donneront une vue d'ensemble de son fonctionnement pour les données d'une entreprise et du déroulement initial du flux :
L'ingestion de données est le processus de collecte de tous vos contenus bruts provenant de diverses sources et de leur acheminement vers une zone de transit centrale où ils seront préparés pour le traitement, l'analyse, la gestion et l'assemblage (RAG). On peut l'imaginer comme le déplacement de livres de genres différents vers un seul et même ensemble. Les données de votre organisation peuvent provenir de multiples plateformes :
Les données provenant de différentes plateformes, collectées sur un socle commun, vont désormais passer par le processus ETL, qui signifie :
Maintenant que vous avez préparé vos données brutes et les avez acheminées à travers le processus ETL, il est temps de les « découper ».
Le découpage en segments (chunking) consiste à découper ces documents volumineux et monolithiques en passages plus courts et sémantiquement cohérents, généralement de 200 à 500 mots chacun, soit environ 267 à 667 tokens. Il s'agit de prendre en compte les éléments suivants :
Les bonnes pratiques de découpage en segments comprennent :
Pourquoi c'est important :
Par exemple, un manuel produit de 2 000 mots pourrait être divisé en cinq sections de 400 mots, se chevauchant d'environ 80 mots. Si la question d'un utilisateur correspond à la section n° 3, le texte d'introduction et de suivi est suffisant pour que la réponse reste cohérente.
Pourquoi surveiller la taille et le chevauchement de la fenêtre de contexte ? La division des blocs de 267 à 667 jetons permet d'équilibrer le contexte et le coût des jetons. Cet équilibre est nécessaire pour plusieurs raisons : 267 à 667 jetons (200 à 500 mots) suffisent à représenter le contexte global d'un paragraphe ; un nombre inférieur pourrait être insuffisant pour que le modèle de langage naturel (LLM) en saisisse l'essentiel. Une autre raison est le coût du LLM par jeton, facturé par les API utilisées. Dans la plage de jetons mentionnée, vous pouvez récupérer et intégrer davantage de segments au modèle sans dépasser ses limites ni engendrer de dépenses excessives. Un chevauchement d'environ 50 à 100 jetons (67 à 133 jetons) favorise la rétention du contexte, évitant ainsi au modèle de perdre la fluidité entre les segments. Ceci garantit la continuité du contexte entre les phrases ou les paragraphes.
Une fois le découpage de nos données brutes terminé, vous passez à la partie la plus cruciale de cette étape de traitement des données : la génération des embeddings.
La génération d'embeddings consiste à représenter les données prétraitées dans une matrice de dimension fixe, pouvant comporter de 512 à plus de 1536 dimensions. Autrement dit, chaque mot du texte prétraité est représenté par un vecteur de dimension spécifique. Le vecteur du mot « reine » sera très proche de celui du mot « femme » et plus éloigné de celui du mot « football ».
Choix du modèle
Vous pouvez choisir des modèles d'intégration prêts à l'emploi basés sur des transformateurs (par exemple, text embedding-ada-002) ou utiliser des intégrations spécialisées pour des langages spécifiques. Pour le traitement de données multimodales, il existe des modèles d'intégration dédiés qui permettent d'unifier les données dans un espace d'intégration unique, ce qui facilite les systèmes de recherche multimodaux.
Mise à jour de la génération d'embeddings
Afin de maintenir nos index sémantiques à jour avec les dernières mises à jour documentaires, nous pouvons actualiser les représentations vectorielles par lots, en flux continu ou de manière hybride, selon les besoins de l'organisation. Par exemple, en cas de modification de la politique de retour, les documents contenant les anciennes politiques seront remplacés par les nouvelles. Notre base de données vectorielles existante doit donc également prendre en compte cette mise à jour. Les deux méthodes sont décrites en détail ci-dessous :
Traitement par lots : La mise à jour de l’intégration peut être programmée à intervalles réguliers, par exemple une fois par semaine ou tous les trois jours. Cette option est idéale pour une entreprise qui ne met généralement pas à jour ses documents fréquemment. Toute mise à jour effectuée entre ces échéances sera perdue et une requête utilisateur relative aux domaines concernés par la mise à jour risque de ne pas être prise en compte tant que celle-ci n’aura pas été effectuée.
Streaming : Les pipelines en temps réel (Kafka, Pub/Sub, Kinesis) diffusent instantanément les documents nouveaux ou mis à jour. Cette approche est plus sûre, que les mises à jour soient fréquentes ou non. Même les entreprises à forte croissance n'auront pas à se soucier de modifier leur architecture de recherche si le streaming est déjà en place. Les inconvénients de cette méthode résident dans la complexité de sa configuration, la nécessité de gérer les erreurs par élément et la difficulté à faire face aux pics de trafic imprévisibles.
Un entrepôt de vecteurs est une base de données spécialisée pour le stockage d'un grand nombre d'embeddings. Sa particularité réside dans sa capacité à effectuer des recherches ultrarapides parmi ces embeddings, réduisant ainsi considérablement le temps de traitement. Cette performance est rendue possible grâce à une structure de données appelée index. L'entrepôt de vecteurs construit cet index sur les embeddings, ce qui permet de trouver des vecteurs spécifiques en un temps record.
Lors de la conception de votre système de stockage vectoriel, le choix de la stratégie d'indexation et du schéma de partitionnement des données appropriés est crucial pour les performances, l'évolutivité et la conformité.
Jusqu'à présent, nous nous sommes concentrés sur le prétraitement des données contextuelles issues des documents d'entreprise. Désormais, nous devons nous intéresser aux données provenant directement des utilisateurs, mais attention : il faut que ce soit rapide.
La logique de recherche est l'ensemble des étapes qui transforment les requêtes utilisateur en éléments de contexte pertinents avant de les envoyer au LLM. Pour que les représentations vectorielles des requêtes soient correctement intégrées à votre index vectoriel, vous devez utiliser le même modèle (et la même version) que celui utilisé pour précalculer les représentations vectorielles de vos documents, ainsi que toutes les étapes de prétraitement effectuées avant et après l'intégration.
Pour que les interactions avec vos utilisateurs restent instantanées, cette étape d'intégration doit être réalisée en moins de 50 ms. Les nouvelles requêtes reflètent souvent l'évolution de l'intention de l'utilisateur : il vient peut-être de cliquer sur un lien produit ou de changer de contexte. Générer les intégrations à la volée vous permet de réagir immédiatement à ces nuances.
Les filtres métier permettent d'affiner la recherche en excluant les documents non admissibles, par exemple en appliquant les critères suivants : identifiant de locataire, balise de langue ou catégorie de produit mentionnés dans la requête. Ces exclusions sont immédiatement signalées. Seuls les passages restants sont pris en compte.
Le vecteur de requête, combiné au vecteur stocké (après application des filtres métier), sera transmis au modèle de réseau de neurones artificiels (RNA), qui renverra les extraits de contexte K selon la distance cosinus ou euclidienne. La valeur de « K » sera un nombre réel positif que vous pourrez choisir.
Une fois que nous avons obtenu l'extrait de contexte K le plus pertinent pour la requête de nos utilisateurs, nous le structurons en une invite compréhensible qui sera envoyée à notre module LLM. Selon la structure de l'invite, le module LLM sera en mesure de générer une réponse ciblée et précise. Il est donc essentiel de porter une attention particulière à la technique d'assemblage de l'invite.
Commencez par une instruction claire et générale qui précise le rôle du modèle et les attentes tonales. Par exemple :
[Système] : Vous êtes un guide produit convivial qui répond aux questions des clients de manière concise.
Cette ligne « système » ancre le comportement du modèle avant même l'apparition de tout contenu spécifique à l'utilisateur.
Les extraits de contexte K récupérés grâce à la logique de récupération précédente peuvent être regroupés dans l'invite étiquetée comme
[Contexte 1]…[Contexte K] [Contexte 1] : …premier extrait… [Contexte 2] : …deuxième extrait… . . [Contexte K] : …kème extrait… …
En numérotant explicitement les passages de contexte, vous incitez le LLM à ancrer chaque affirmation dans un bloc spécifique, améliorant ainsi la véracité des faits et permettant des références ultérieures.
Enfin, affichez la requête originale :
Question de l'utilisateur : « Comment retourner un achat en ligne ? »
Cette séparation claire entre « instruction système → contexte → question » aide le modèle à distinguer ce qu’il doit faire (système), où chercher (contexte) et à quoi répondre (requête de l’utilisateur).
Tenez compte des limitations de jetons, car elles peuvent varier d'un modèle à l'autre, et le raisonnement par chaîne de pensée (CoT) peut utiliser plus de jetons que prévu. Pour garantir que le modèle puisse générer une réponse complète, prévoyez une marge : 4 000 jetons pour le contexte et les extraits, puis 1 000 pour la réponse elle-même.
Post-traitement et livraison des réponses
Une fois que votre LLM a généré le texte, appliquez une dernière couche de finition et intégrez le résultat à votre expérience utilisateur :

|
Aspect |
Recherche traditionnelle |
Recherche optimisée par RAG |
|
Mécanisme de récupération |
Index inversé basé sur les jetons |
Similarité vectorielle via un réseau de neurones artificiels |
|
Paraphrase de gestion |
Mauvais – nécessite des jetons exacts |
Excellent – saisit la sémantique latente |
|
Fréquence de mise à jour |
Réindexation périodique |
Toujours à jour au moment de la requête |
|
Latence |
~10–50 ms |
~150–500 ms (vecteur + LLM) |
|
Profil de coût |
Prévisible (stockage, processeur) |
Variable — Appels API, inférence GPU |
|
effort du développeur |
Outillage éprouvé, boutons de réglage bien compris |
Émergence — nouveaux composants et ingénierie rapide |
|
Explicabilité |
Liens directs vers les documents correspondants |
Texte généré — doit inclure des citations et des aperçus. |
La recherche par mots clés est au cœur des systèmes de recherche traditionnels depuis des décennies. Elle consiste à segmenter le texte en mots ou expressions, puis à comparer ces termes exacts (ou leurs racines) à un index inversé. Cependant, elle présente des limites lorsque :
Du point de vue d'un index statique, le système de recherche se bloque périodiquement. Cela se produit lors d'une mise à jour de l'espace d'intégration suite à l'ajout de nouveaux contenus dans la base de données de l'entreprise.
À l'inverse, au lieu de s'appuyer sur un index monolithique, l'injection dynamique de contenu déclenche une nouvelle intégration de la requête utilisateur et une recherche par le plus proche voisin dans la base de données de l'organisation, prenant en compte les entrées nouvelles, modifiées et archivées. Si un article d'assistance a été mis à jour il y a une heure ou une note de service publiée il y a quelques minutes, son intégration est déjà présente dans votre base de données vectorielle et peut être récupérée immédiatement. Cette récupération instantanée est possible grâce à un flux d'ingestion en temps réel (via Kafka, Pub/Sub ou des microservices pilotés par webhook) qui maintient votre base de données vectorielle à jour en toute simplicité.
Le traitement par lots RAG peut également constituer une meilleure approche que le traitement par lots traditionnel, car la mise à jour s'effectue en quelques heures plutôt qu'en plusieurs jours comme avec le traitement par lots traditionnel.
L'index statique fait généralement référence à la technique traditionnelle de regroupement des recherches, mais celle-ci est différente du regroupement effectué pour les systèmes RAG (regroupement RAG) et présente des compromis distincts.
|
Aspect |
Recherche par lots traditionnelle |
lots de RAG |
|
Ce que vous avez par lots |
Document → Construction de l'index (tokenisation, analyseurs) |
Génération de documents → Intégration |
|
Granularité |
Souvent, des corpus entiers ou de grands lots (heures/jours) |
Documents nouveaux/mis à jour depuis la dernière exécution (minutes/heures) |
|
But |
Créer ou reconstruire l'index inversé pour la recherche en texte intégral |
Précalculer les vecteurs pour le contenu « froid ». |
L'architecture RAG est très polyvalente pour l'intégration à tout type de système de recherche existant. En fonction de la structure du code, du contrôle de l'infrastructure et de l'échelle, RAG peut être configurée pour s'adapter au flux de travail actuel.
Description : Il s’agit d’un système autonome pour votre moteur de recherche existant. Aucune modification de code n’est nécessaire : il suffit de rediriger vos requêtes de recherche vers le composant sidecar pour obtenir les réponses.
Fonctionnement : Au lieu d’envoyer directement les requêtes des utilisateurs à votre moteur de recherche traditionnel, vous les redirigez vers le sidecar. Celui-ci intercepte la requête, effectue l’intégration et la récupération par réseau de neurones artificiels, puis fusionne ces résultats vectoriels avec les correspondances de mots clés avant de renvoyer une liste classée.
AVANTAGES :
Aucune réécriture de code — Votre application principale appelle toujours le même point de terminaison de recherche, mais celui-ci pointe vers un proxy plus intelligent.
Déploiement rapide — Il suffit de lancer un nouveau conteneur ou une nouvelle fonction Lambda.
Solution de repli sécurisée — Si le module complémentaire rencontre un problème, le trafic peut être redirigé de manière transparente vers l'ancien moteur de recherche.
CONSIDÉRATIONS :
Saut de latence : Ajoute un appel réseau supplémentaire, assurez-vous donc que votre sidecar soit proche (même VPC ou région).
Surveillance : Mettez en œuvre à la fois votre recherche principale et votre moteur de recherche secondaire pour comparer les résultats et suivre les gains de performance.
La plupart des plateformes de recherche proposent un module complémentaire ou un plugin de recherche vectorielle (par exemple, NeuralSearch™ d'Algolia ). Il vous suffit d'activer le plugin, de configurer votre champ d'intégration, et votre interface de recherche existante continue de fonctionner exactement comme avant.
Qu'est-ce que c'est ? Un SDK ou une bibliothèque légère que vous intégrez directement dans le code de votre application.
Fonctionnement : Votre gestionnaire de point de terminaison de recherche appelle l’API de la bibliothèque RAG au cours du même processus. La bibliothèque se charge de l’intégration, de la recherche vectorielle et de la construction de l’invite, puis renvoie les résultats enrichis à votre code existant.
AVANTAGES :
Vitesse en cours de traitement : L’absence de saut réseau supplémentaire signifie des temps de récupération inférieurs à 50 ms si votre index vectoriel est colocalisé.
Contrôle plus précis : vous pouvez ajuster avec précision la mise en cache, la logique de nouvelle tentative et la gestion des erreurs directement là où vous en avez besoin.
Architecture simplifiée : aucun microservice autonome à maintenir, juste une nouvelle dépendance.
CONSIDÉRATIONS :
Complexité du déploiement : Vous devez regrouper et versionner la bibliothèque avec votre application, et gérer les dépendances de modèle ou d’index.
Contention des ressources : Assurez-vous que vos serveurs d'applications disposent de suffisamment de CPU/RAM pour l'inférence embarquée si vous hébergez les modèles localement.
Qu'est-ce que c'est ? Une passerelle API partagée ou une couche d'orchestration que chaque application d'équipe appelle pour les services RAG.
Fonctionnement : Toutes les requêtes RAG, telles que les outils de support client, les applications mobiles ou les tableaux de bord internes, transitent par une passerelle unique. Celle-ci centralise l’authentification, les contrôles d’accès au niveau du locataire, les quotas d’utilisation et les données analytiques.
POURQUOI VOUS L'ADOREREZ :
Gouvernance d'entreprise : des politiques centralisées garantissent que chaque équipe utilise les mêmes modèles, versions d'index et règles de sécurité.
Observabilité unifiée : Un tableau de bord unique affiche le trafic RAG global, la latence, les taux d'erreur et les indicateurs de retour sur investissement.
Mises à niveau simplifiées : le déploiement d'un nouveau modèle d'intégration ou d'une nouvelle configuration de stockage vectoriel s'effectue une seule fois au niveau de la passerelle, et non par service.
CONSIDÉRATIONS :
Point de défaillance unique : une interruption de service de la passerelle affecte toutes les applications en aval ; à atténuer grâce à la mise à l’échelle automatique et au déploiement multizone.
Planification du débit : La passerelle doit gérer votre trafic RAG combiné de pointe, prévoyez donc une concurrence CPU, GPU ou vector-DB adéquate.
En faisant correspondre le niveau de confort technique et les besoins opérationnels de votre équipe à l'un de ces styles d'intégration, RAG sera opérationnel rapidement.
Dans le domaine de la recherche d'entreprise, un entrepôt de vecteurs est une base de données spécialisée qui stocke des représentations vectorielles de haute dimension représentant des documents, des listes de produits ou des éléments de connaissances. Le code source ci-dessous vous permet d'utiliser n'importe quelle source de données publique et d'observer le fonctionnement de l'entrepôt de vecteurs.
Remplacez OPENAI_API_KEY par votre propre clé ( vous pouvez obtenir une clé OpenAI gratuitement ) et ce code devrait fonctionner correctement. FAISS convertit vos documents organisationnels (contexte) et vos dossiers papier en vecteurs vectoriels et leur attribue des index.
#!/usr/bin/env python3
# ---------------------------------------------------------------------
# 0. Dependencies (install these before running)
# -----------------------------------------------------------------------------
!pip install langchain-community langchain-openai openai unstructured faiss-cpu tiktoken
# -----------------------------------------------------------------------------
# 1. Imports & API Key Configuration
# -----------------------------------------------------------------------------
import os
from langchain.document_loaders import UnstructuredURLLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain_openai import OpenAIEmbeddings,OpenAI
from langchain.vectorstores import FAISS
from langchain.chains import RetrievalQA
# Replace with your own key
os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY"
#-----------------------------------------------------------------------------
# 2. Load the Article
---------------------------------------------------------------------
# You can swap this URL for any publicly accessible article
urls = ["https://www.example.com/some-article"]
loader = UnstructuredURLLoader(urls=urls)
documents = loader.load()
#-----------------------------------------------------------------------------
# 3. Split into Chunks
#-----------------------------------------------------------------------------
text_splitter = CharacterTextSplitter(
separator="\\n",
chunk_size=1000,
chunk_overlap=200
)
texts = text_splitter.split_documents(documents)
# -----------------------------------------------------------------------------
# 4. Embed & Index into FAISS
# -----------------------------------------------------------------------------
embeddings = OpenAIEmbeddings(openai_api_key=YOUR_OPENAI_KEY)
vectorstore = FAISS.from_documents(texts, embeddings)
# -----------------------------------------------------------------------------
# 5. Build the RetrievalQA Chain
# -----------------------------------------------------------------------------
llm = OpenAI(openai_api_key=YOUR_OPENAI_KEY, temperature=0.6, max_tokens=500)
qa = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=vectorstore.as_retriever(),
)
# -----------------------------------------------------------------------------
# 6. Ask Questions
# -----------------------------------------------------------------------------
def answer_question(query: str):
result = qa({"query": query})
print("\\n> Question:", query)
print("Answer:", result["result"])
if __name__ == "__main__":
# you can substitute with your own questions
answer_question("What is the main thesis of the article?")
answer_question("List two key insights mentioned about RAG.")
answer_question("How does the author suggest handling long documents?")
Le déploiement fluide de RAG repose sur la nécessité de traiter vos composants de récupération et de génération avec la même importance que n'importe quel autre service critique. En codifiant l'infrastructure, en intégrant des contrôles de cohérence continus à votre pipeline CI et en versionnant chaque paramètre d'invite et d'index, vous transformez RAG d'un module complémentaire expérimental en une composante pleinement gérée de votre cycle de livraison.
Parce que chaque élément (recherche vectorielle, kits de développement logiciel d'IA et IaC) peut être adopté progressivement, vous constaterez des avantages RAG mesurables en quelques jours, vous pourrez itérer rapidement sur le classement ou apporter des modifications rapides et vous maintiendrez une fiabilité à toute épreuve à mesure que vous évoluez.
Le client de recherche d'Algolia est la bibliothèque officielle que vous utilisez pour communiquer avec le service de recherche hébergé d'Algolia depuis votre application.
# <https://www.algolia.com/doc/libraries/python/v4/>
from algoliasearch.search.client import SearchClientSync # sync client
APP_ID = "YOUR_APP_ID"
API_KEY = "YOUR_API_KEY"
INDEX = "YOUR_INDEX_NAME"
client = SearchClientSync(APP_ID, API_KEY)
# Add a new record
resp = client.save_object(index_name=INDEX, body={"objectID": "id", "test": "val"})
print(resp)
print(resp.to_json())
# Wait until indexing is done
client.wait_for_task(index_name=INDEX, task_id=resp.task_id)
# Search
search_resp = client.search(
search_method_params={
"requests": [
{"indexName": INDEX, "query": "YOUR_QUERY", "hitsPerPage": 50},
],
},
)
print(search_resp.to_json())
Ceci n'est qu'un aperçu d' Algolia Search Client . Après avoir suivi ce guide de démarrage rapide pour vous inscrire, vous obtiendrez votre_ID_d'application et votre_clé_API. Nous pouvons vous accompagner dans cette démarche via une demande de démonstration .
Le trafic des entreprises peut connaître une forte augmentation lors des périodes de pointe saisonnières. Ces pics de trafic saisonniers surchargent inévitablement les systèmes existants, conçus pour un trafic prévisible. L'un des nombreux avantages des systèmes RAG est leur capacité à s'adapter par petites étapes. Voici quelques exemples de mise à l'échelle de vos systèmes RAG :
L'utilisateur accède au système et effectue une requête. Il obtient la réponse (et est satisfait si votre pipeline RAG est configuré à 100 %) et quitte le système, finalisant ainsi le processus. La plupart des organisations pensent qu'une fois le pipeline RAG mis en place, tout est en ordre jusqu'à ce qu'un problème survienne et nécessite la mobilisation de toute l'équipe d'ingénierie à 8 h du matin un dimanche. L'approche idéale pour tout projet d'ingénierie, y compris l'intégration d'un pipeline RAG, consiste à établir un pipeline d'évaluation des performances. Ce pipeline peut varier selon les technologies utilisées, mais son objectif principal reste le même : surveiller, évaluer et consigner les résultats/réponses du système.
Avec des rôles clairement définis, des modifications de code minimales et une surveillance simple, le déploiement de RAG ressemble davantage à une mise à niveau facile qu'au lancement d'un grand projet technologique.
Les composants du système RAG sont dotés de différents boutons permettant d'optimiser les performances. Une compréhension approfondie de ces paramètres vous aide à concevoir un système efficace, précis et soumis à une validation constante basée sur les performances.
Le découpage des documents en sections plus courtes aide le système à mieux mémoriser le contexte. Un léger chevauchement est possible afin que le contexte ne disparaisse pas entre les sections, comme nous l'avons vu précédemment. Vous allez maintenant découvrir différentes techniques de découpage des documents :
Suite de tests QA automatisés : créez une série de 1 000 à 1 500 paires question-réponse par domaine. Répertoriez les questions courantes, comme « Comment obtenir un remboursement ? », comparez les réponses aux réponses correctes connues et notez les erreurs éventuelles. Intégrez cette suite de tests aux pipelines d’intégration continue (CI) afin d’exécuter des tests de rappel et de précision de génération à chaque mise à jour d’index ou de contexte.
Les valeurs de référence pour les indicateurs de performance idéaux sont présentées ci-dessous :
|
Métrique |
Définition |
Cible |
|
Rappel de récupération @K |
% des requêtes où le contexte correct se trouve dans les K premiers passages |
≥ 95% |
|
Taux de correspondance exacte de génération |
% des réponses générées correspondent exactement à la référence |
≥ 85% |
|
Latence (intégrée + récupérer) |
Il est temps de générer les plongements lexicaux et de récupérer les K meilleurs vecteurs. |
≤ 100 ms |
|
score de commentaires des utilisateurs |
Note moyenne positive attribuée aux réponses générées |
≥ 4,5/5 |
|
Taux d'erreur du système |
% de requêtes ayant échoué ou expiré |
≤ 0.1% |
Ces chiffres peuvent varier en fonction des priorités et de l'urgence du déploiement des fonctionnalités RAG. Certaines organisations peuvent avoir besoin d'intégrer le système et, par conséquent, la fiabilité des données de rappel n'est peut-être pas la priorité absolue pour la première version. Le tableau présente ce qui est idéalement considéré comme la référence pour la plupart des indicateurs d'évaluation.
Vous pouvez connecter des tableaux de bord dans Grafana pour visualiser les tendances au fil du temps et les corrélations entre la charge et la latence. Ces indicateurs facilitent l'évaluation et permettent de prendre les mesures nécessaires.
La protection des données d'entreprise est une étape cruciale pour toute intégration technique. Les données sensibles, telles que les données utilisateur, les identifiants d'administrateur, les informations de vente et de stock, etc., sont constamment exposées au risque de fuite ou de piratage. Par conséquent, les données de votre entreprise doivent être protégées, et il existe plusieurs méthodes simples pour y parvenir :
7.2 Chiffrement et gestion des clés
Mettre en œuvre RAG peut sembler un grand pas en avant, mais pour les utilisateurs métiers, c'est simplement un moyen d'interroger les données de l'entreprise dans un langage courant et d'obtenir des réponses claires et fiables. Au lieu de naviguer dans des tableaux de bord complexes ou d'écrire des requêtes SQL sur des volumes importants de données, vous posez une question comme vous le feriez à un membre de l'équipe, et le système renvoie une réponse facile à comprendre, souvent accompagnée d'un visuel ou de quelques points clés qui vous fournissent exactement les informations nécessaires. Voici quelques exemples d'utilisation dans différents services d'une organisation.
Imaginez que votre responsable marketing souhaite connaître les performances d'une campagne promotionnelle récente dans différentes régions. Plutôt que de demander à un analyste de données de générer des rapports, il vous suffit de taper : « Afficher les trois meilleures promotions du dernier trimestre en termes de chiffre d'affaires en Europe », et vous obtiendrez instantanément un graphique et un court paragraphe résumant les résultats.
Cette approche en libre-service permet à vos analystes de se concentrer sur des investigations plus approfondies, tout en offrant aux gestionnaires un accès direct aux informations.
Pour les équipes du service client, RAG devient un assistant précieux. Lorsqu'un agent reçoit une demande concernant une politique de retour, il lui suffit de demander : « Quel est le délai de retour pour les articles en liquidation ? » Le système extrait le texte pertinent de la politique, met en évidence la phrase clé et suggère même la formulation exacte de la réponse. Fini les recherches fastidieuses dans les manuels ou l'attente d'un expert : les agents restent autonomes et efficaces.
Au lieu de passer des heures à comparer des feuilles de calcul, un contrôleur financier peut se demander : « Quelles ont été nos principales catégories de dépenses ce mois-ci, et comment se comparent-elles à celles du mois dernier ? » La réponse est fournie sous forme d’un résumé concis, accompagné d’un tableau simple. Cette interface transparente et intuitive réduit les erreurs et accélère les clôtures de fin de mois.
Le déploiement de RAG ne nécessite pas un projet informatique d'envergure. Vous pouvez commencer modestement, en l'intégrant progressivement dans un service ou un cas d'usage à la fois, et en l'enrichissant au fur et à mesure que vous en constatez la valeur.
La formation peut être rapide : une courte démonstration sur la manière de poser des questions efficaces, suivie d’une mise en pratique. L’adoption est souvent rapide lorsque les équipes constatent le gain de temps et la confiance accrue qu’elles acquièrent en ayant les réponses immédiatement accessibles, au lieu de devoir consulter des documents imprimés de l’entreprise.
En définitive, RAG transforme les données en un partenaire interactif. Les utilisateurs métiers posent des questions, le système y répond et chacun gagne en efficacité. Que vous travailliez au marketing, au support, à la finance ou aux opérations, RAG simplifie les démarches techniques et assure la cohérence du travail basé sur les données pour tous.
Ces projets pilotes peuvent souvent être mis en place en quelques semaines ou quelques mois, et permettent d'obtenir rapidement des gains de productivité et de satisfaction au sein des équipes. Ensuite, il est possible de les étendre à d'autres équipes et sources de données, créant ainsi une dynamique positive jusqu'à ce que la méthode RAG devienne un élément central de la façon dont l'organisation apprend et agit.
Les utilisateurs peuvent interroger le chatbot RAG ou effectuer une recherche : « Quels parfums à moins de 100 $ sont éligibles à la promotion d’été ? » et obtenir immédiatement une liste de produits, ainsi que des suggestions de crédit en fonction de leur niveau de fidélité. Cela réduit le temps de formation des nouveaux employés et garantit des informations cohérentes et exactes dans tous les points de vente.
Dans les centres d'appels, les agents bénéficient de suggestions en temps réel. Par exemple, au cours d'un appel, un agent tape : « Puis-je acheter un maillot de bain en solde avec des articles à plein tarif ? » et reçoit une réponse du type : « Les maillots de bain en solde peuvent être associés à des accessoires à plein tarif pour bénéficier d'une réduction supplémentaire de 5 %. » L'agent répète ensuite la formulation exacte au client, ce qui renforce sa confiance et limite les risques de litiges ultérieurs.
Pour les consommateurs, RAG transforme l'expérience d'achat, passant d'une simple sélection de cases à cocher à un véritable dialogue. Cette expérience reflète fidèlement l'intention du client, que le système interprète pour fournir la réponse la plus appropriée, garantissant ainsi sa satisfaction.
Lorsque les utilisateurs consultent le site web ou l'application et demandent : « Quelles vestes légères à moins de 200 $ iraient bien avec mes bottes bleu marine ? », l'assistant RAG leur suggère instantanément trois options (ou plus s'ils le souhaitent), explique pourquoi chacune correspond à leur demande et affiche des images avec des liens d'achat, les guidant ainsi vers la page de vente. Tout cela au lieu de les obliger à parcourir fastidieusement d'innombrables annonces de vestes. Au fil du temps, le système apprend les préférences de style de l'utilisateur (couleur, coupe, marque préférée) et recommande de manière proactive des articles en fonction de ces préférences, contribuant ainsi à l'incitation à l'achat.
Il arrive souvent que les acheteurs repèrent un produit qui les incite à explorer d'autres options, parfois à des prix ou des couleurs différents. Grâce au chat intégré de RAG, ils peuvent télécharger une photo ou cliquer sur un article et saisir : « Trouvez-moi des robes similaires dans des tons pastel ». L'assistant analyse alors les caractéristiques de l'image, récupère les produits similaires visuellement et sémantiquement, et les affiche dans une fenêtre de chat, avec des filtres de prix et de tailles disponibles. Plus besoin de parcourir des pages de catégories ni de deviner des mots-clés.
Lorsqu'une fonctionnalité est nouvellement intégrée au système, les utilisateurs doivent comprendre son fonctionnement. Souvent, des instructions contextuelles sont nécessaires pour les guider. Ces instructions d'expérience utilisateur (UX) facilitent non seulement le démarrage du processus, mais servent également de tutoriel pour familiariser les utilisateurs avec la fonctionnalité. Voici quelques exemples de méthodes :
En intégrant ces principes à l'interface, les consommateurs se sentent guidés plutôt que perdus, ce qui garantit une expérience de conversation agréable.
Maintenir un index sémantique fiable et performant exige une maintenance continue, comme pour tout autre système de données critique. Nous détaillons ci-dessous quelques pratiques fondamentales qui vous aideront à gérer un système RAG sans difficulté.
RAG propose une approche différente de la recherche d'entreprise, en dépassant les résultats obsolètes issus d'opérations booléennes pour offrir un flux de conversation dynamique qui comprend l'intention de l'utilisateur et génère des réponses contextuelles. Pour les détaillants, RAG peut :
Donnez aux employés les moyens d'accéder instantanément aux politiques, aux données d'inventaire et aux meilleures pratiques.
Offrez à vos clients une expérience d'achat personnalisée et interactive grâce au chat.
Optimisez les opérations en organisant les référentiels de contenu disparates en une base de connaissances unifiée et interrogeable sémantiquement.
Algolia fournit des solutions de recherche pilotées par l'IA à plus de 18 000 entreprises et un demi-million de développeurs dans le monde entier. Grâce à sa boîte à outils d'IA générative et à ses experts dédiés à la recherche par IA, Algolia permet aux équipes de tester, d'affiner et de déployer facilement RAG au sein de leur organisation.
Contactez les experts en recherche par IA d'Algolia pour explorer votre feuille de route RAG et débloquer des capacités de recherche de nouvelle génération.
Modèles de conception RAG : Modèles de conception pour les systèmes d’IA composites (IA conversationnelle, copilotes et RAG) | par Raunak Jain | Medium
Azure Content Safety : https://azure.microsoft.com/en-us/products/ai-services/ai-content-safety/
Documentation du kit d'outils Gen AI : https://www.algolia.com/doc/guides/algolia-ai/genai-toolkit/
Recherche vectorielle : https://www.algolia.com/blog/ai/what-is-vector-search
Cours sur l'ingénierie des réponses rapides : https://www.oreilly.com/library/view/prompt-engineering-for/9781098153427/
Cours sur les systèmes RAG : https://www.coursera.org/learn/retrieval-augmented-generation-rag
Génération augmentée par la recherche pour les tâches de TALN à forte intensité de connaissances : https://arxiv.org/abs/2005.11401