Nous ne pouvons pas aborder le sujet de l'intelligence artificielle générative sans parler des stratégies RAG.
Dans un monde où les données explosent, la recherche d'informations pertinentes devient de plus en plus complexe. Les technologies de l'IA ont ouvert de nouvelles perspectives pour optimiser la recherche et la génération de réponses.
Parmi ces innovations, les stratégies RAG se démarquent par leur efficacité et leur précision !
Partons explorer les fondements, les avantages et les applications de ces stratégies RAG.
RAG: késako ?
Retrieval Augmented Generation, pour génération augmentée de récupération, est une stratégie de surcharge de l'IA générative.
Au lieu de se baser uniquement sur le contenu de la base d'entraînement du modèle, qui est constituée de sources diverses comme des articles sur le web, wikipédia, des livres, des papiers scientifiques... La stratégie RAG va induire, au préalable, une recherche depuis une base de données externe afin de fournir plus de contexte pour la génération de réponses par le LLM.
Ce qui a pour avantage de réduire les hallucinations.
Se pose alors les questions sur le choix des données sources, sur la manière dont on va interroger ces données (étape 2), sur le choix des modèles...
Chaque question à son importance, creusons ces points et tentons d'y voir plus clair !
Choix des données sources
Le succès d'une stratégie RAG va grandement dépendre des documents utilisés pour récupérer les informations.
Il faudra surtout chercher des sources :
Pertinentes et liées à votre domaine d'application.
Si vous souhaitez faciliter la recherche dans vos documents d'entreprise, certains dossiers de votre Drive sont sûrement plus intéressants que d'autres.Fiable et d'actualité.
On s'en doute, on ne peut pas s'attendre à avoir des réponses cohérentes avec des sources dépassées. D'où la nécessité de cibler les bonnes sources, et les bons documents, en accordant peut être + de poids aux documents les + récents ?Suffisamment diversifiée, mais sans diluer l'information.
Afin de convenir à vos utilisateurs, il pourrait être utile de travailler avec de la variété: ce qui intéresse les commerciaux intéresse sûrement moins les équipes produits...
Posez-vous ces questions car toute réponse est contextuelle.
La vectorisation comme principal allié
Dans les stratégies RAG, la vectorisation des sources est souvent utilisées.
Mais d'abord, qu'est-ce qu'une donnée vectorisée et qu'apporte-t-elle ?
On connaît très bien les données représentées sous forme de table, comme c'est le cas dans un SGBD traditionnel.
Cependant, on imagine qu'il va être difficile d'aller rechercher les films similaires dans cette base de données, il faudrait user de requêtes complexes, basées sur plusieurs attributs.
Dans ce contexte de recherche de proximité, les bases de données vectorielles excellent.
Elles sont optimisées:
- Pour l'indexation, à travers des stratégies comme Locality Sensitive Hasing (LSH), Inverted File (IVF) ou encore Hierarchical Navigable Small Worlds (HNSW)...
- Pour la récupération, à travers des calculs de proximité comme Euclidean Distance, Dot Product Similarity ou encore Cosine Similarity.
Vespa, Pinecone, Qdrant, Chroma, toutes vont avoir leurs particularités et leurs spécialités.
Si l'on devait imaginer nos films précédents dans une représentation vectorielle, on pourrait les voir comme ceci.
Choix des modèles de Chat & Embeddings
Nous avons parlé de vecteurs précédemment, mais comment transformer nos données sous cette forme ?
C'est là qu'interviennent les modèles d'embedding !
Les embeddings vont jouer un rôle important car ils vont vous permettre de passer d'une représentation textuelle en une représentation vectorielle.
Un modèle d'embedding connu, text-embedding-ada-002
par OpenAI par exemple.
Chaque modèle va avoir ses spécificités, liées notamment:
- aux corpus, les données utilisées pour l'entraînement
- et à la dimensionnalité, le nombre de valeur numérique qui composera un vecteur
Comment choisir un bon modèle d'embedding ?
Là encore, toute réponse est contextuelle !
Imaginez que tous vos documents sont en français, et que vous utilisez un modèle entraîné sur des données en anglais ?
Les résultats ne pourront pas être pertinent, les relations entre les mots vont avoir du mal à être détectées par les algorithmes.
Dans ce cas, il faudrait peut-être s'orienter vers un modèle multilingue comme intfloat/multilingual-e5-large.
Concernant les modèles de Chat (pensez à gpt-4
par exemple), on ne va pas forcément chercher ceux les plus complets, multi-modaux, entraînés sur des corpus énormes, mais plutôt chercher un modèle peu coûteux et fiable dans sa capacité à générer des phrases fluides adaptées au contexte.
Je pense notamment à un GPT-3.5-Turbo
ou un Mistral Small
qui feraient parfaitement l'affaire.
L'importance du Chunking
Nous avons parlé de l'importance du choix des sources de données et de leur vectorisation à travers des modèles d'embeddings.
Il nous reste à évoquer le chunking.
Le Chunking est une technique qui sera utilisée pour diviser la données en morceaux (= chunks) plus petits, facilitant l'indexation et la recherche.
Imaginons une étude scientifique, rédigée sur plusieurs centaines de pages. Il serait inconcevable de venir l'indexer entièrement en un seul gros bloc !
Dans notre recherche de proximité, si l'algorithme arrive à nous retourner cette donnée, on se retrouverait avec une information diluée et un contexte énorme à passer au modèle de Chat. Une démarche pas vraiment optimisée.
Le chunking dans ce cas, serait le découpage de cette étude en paragraphe, par exemple.
L'information pertinente serait plus facilement identifiée car on travaillerai avec des segments plus petits.
Toute la difficulté sera d'identifier la bonne taille pour nos chunks, dépendante aussi de la donnée traitée.
Une segmentation trop fine diminuera le contexte, une segmentation trop importante et on retombe dans l'exemple précédent.
Un titre d'une étude pourrait être un bon délimiteur de chunk
Un paragraphe dans une page Confluence aussi
Ou encore, une ligne d'un CSV, une slide d'un diaporama...
Concrétisations business
Selon moi, quelques cas d'usage sortent du lot.
La recherche d'information en entreprise.
Plus votre entreprise grandit, plus votre connaissance augmente, et plus ça devient un calvaire pour les équipes de trouver l'information.
Le RAG répond parfaitement à ce besoin en venant cibler les sources d'informations les + pertinentes.L'assistance client.
Qu'on se le dise, le chatbot classique n'apporte pas une vraie satisfaction dans l'assistance qu'il apporte, souvent très limitée.
À la place, imaginez qu'un utilisateur ait accès à une base d'assistance, une FÀQ géante qu'il pourrait interroger en language naturel.Secteur de la recherche ou médical.
Les professionnels de santé pourraient utiliser une stratégie RAG pour se tenir à jour sur les dernières études et ainsi améliorer les protocoles de soins des patients.
Un cas d'usage applicable à d'autres professions, comme le droit ou la recherche de manière générale.
Chez Claranet, nous travaillons principalement avec plusieurs solutions pour proposer la recherche documentaire: Azure AI Search, AWS Bedrock & DAnswer, une solution open-source sur laquelle nous contribuons.
Ressources
- https://ai.meta.com/blog/retrieval-augmented-generation-streamlining-the-creation-of-intelligent-natural-language-processing-models/
- https://medium.com/ai-assimilating-intelligence/rag-strategies-for-personal-development-learning-d3c7f0c97fd6
- https://learn.microsoft.com/fr-fr/azure/search/search-what-is-azure-search
- https://www.danswer.ai/
Je suis Baptiste FAMCHON, Tech Lead spécialisé frontend chez Claranet.
J'écris régulièrement sur dev.to et LinkedIn à propos de sujets autour du web et de l'artisanat logiciel.
Chez Claranet, nous vous accompagnons aussi dans vos réflexions de modernisation SI, d'infrastructure cloud, de sécurité et de développement web.
N'hésitez pas à nous contacter ! 🚀
Top comments (0)