Note : Ce contenu faisait auparavant partie du site web ouimaisjellm.ca. Il a été importé ici pour archivage.

On m’a posé une question sur l’organisation des procès-verbaux d’une association. En gros, comment l’IA générative peut-elle (ou non) aider à structurer l’historique des résolutions au fil des années ? Est-ce que c’est mieux d’utiliser de l’IA générative ou un moteur de recherche ici ?

🌘 Définissons le problème

Avant d’utiliser un RAG ou un moteur de recherche, voyons d’abord ce qu’on cherche vraiment à accomplir.

Nous avons une archive de documents non structurés, par exemple, des documents texte au format Word. C’est notre point de départ. Nous souhaitons comme résultat un tableau avec toutes les résolutions proposées, la date, le résultat du vote et un lien vers le procès-verbal concerné.

Nous faisons face à un problème assez typique de science des données. Est-ce que l’approche RAG (Retrieval Augmented Generation) que je présente dans la formation Utiliser des chatbots LLM localement et protéger ses données est appropriée ici.

Rapidement, ma réponse est… pas tout de suite. Mais, ça peut être utile en complément d’une approche par moteur de recherche et une utilisation plus en mode programmée d’un modèle de langage. L’essentiel du travail se fait avant même d’utiliser l’IA générative textuelle en mode conversation.

Le RAG va extraire des éléments sémantiquement similaires d’un corpus d’extraits de textes découpés grossièrement pour les ajouter au prompt utilisé pour appeler un modèle de langage. Ici, comme on parle de contenu à portée légale, l’exactitude est importante. On sait tous à quel point il y a toujours quelqu’un pour jouer avec les virgules dans ce genre de rencontres.

Ces algorithmes ont du mal avec les doubles négations et les sous-entendus. Dans les rencontres délibératives, les arguments reposent souvent sur des connaissances préalables non écrites ou inaccessibles. Un modèle d’IA générative n’a généralement pas accès à ces informations et ne peut donc pas offrir de réponses personnalisées.

Alors, ce qu’on a besoin, c’est davantage un moteur de recherche. Cependant, ces outils, tels que OpenSearch, TypeSense ou MeiliSearch (voir cet article) nécessitent des données bien formatées en entrée pour créer leur index.

On utilisera l’IA générative textuelle pour transformer les documents en données pour le moteur de recherche. On privilégiera un moteur de recherche traditionnel (index inversé) et on pourra utiliser la recherche hybride si elle est disponible.

🌘 Comment l’IA générative et un moteur de recherche peuvent aider à structurer tes documents ?

🌘 Étape 1 : Transformer les documents en texte

Voici les étapes pour un document. Ensuite, on pourra construire une mécanique d’automatisation du procédé avec soit un script dans le langage Python ou un outil de développement sans code, tel que n8n.

La première étape est de convertir le document en texte. Un outil comme pandoc pourra convertir tous les textes au format Markdown qui est bien compris par les différents modèles d’IA générative textuelle.

🌘 Étape 2 : Extraire les données clés avec l’IA

La seconde étape est d’utiliser l’IA générative textuelle pour faire l’extraction des entités nommées qui décrivent la résolution :

On crée maintenant un prompt qui extrait ces éléments spécifiques et les retourne dans un fichier normalisé au format JSON. Idéalement, on fournit un exemple de fichier en entrée et en sortie pour que le modèle puisse généraliser.

🌘 Étape 3 : Créer un moteur de recherche interne

Maintenant que les données sont prêtes, on peut enfin penser à l’indexation. Un moteur de recherche va nous permettre d’indexer les documents individuels extraits par l’IA générative textuelle et permettre de les retrouver.

C’est important ici de choisir un moteur de recherche qui peut être utilisé comme source vectorielle si on veut utiliser de la recherche sémantique ou du RAG. Il faut aussi, si on utilise un outil sans code tel que Flowise, s’assurer qu’il y a les modules d’intégration. Ce n’est pas le cas pour Typesense, par exemple, en ce moment.

Pas besoin nécessairement de coder : ces étapes peuvent aussi être automatisées avec un outil sans code comme n8n ou Make.

🌘 Étape 4 (optionnel) : Un RAG pour poser des questions ouvertes

On peut utiliser un moteur de recherche comme source de données pour un RAG dans un flux de traitement IA comme Flowise.

Le RAG est une solution approximative avec une composante aléatoire, sans capacité de réflexion ou de combinaison logique. Il donne des résultats plus précis et utiles que de poser des questions à un modèle de langage sans contexte, mais ne remplace pas la recherche. Il résume l’information et aide à comprendre un sujet dans une masse de documents, mais pas pour la recherche précise. Il ne peut servir de référence sans consulter ses sources, qui peuvent être moins précises qu’un moteur de recherche indexé, selon la question.

🌘 IA générative, ou moteur de recherche ?

Selon le besoin de précision ou de généralisation, il peut ne pas être nécessaire d’aller au-delà de la recherche dans le moteur de recherche choisi. Pour les décisions par résolution, je préfère un moteur de recherche utilisant des documents extraits par un index inversé plutôt que le RAG, car les algorithmes génératifs peuvent créer des hallucinations lorsqu’ils manquent de contexte externe. Quitte à devoir faire un peu plus de lecture !

Le RAG peut être utile pour orienter la recherche ou du moins savoir s’il pourrait exister une réponse à notre question dans les documents. Si le premier résultat n’a pas trop rapport, le reste n’en aura pas plus !

🌘 TL;DR – En résumé

Les procès-verbaux d’une association forment souvent un ensemble de fichiers non structurés, difficiles à exploiter. En combinant IA générative et moteur de recherche, on transforme ces documents en base de données consultable :

🌘 Pose-moi ta question

Tu souhaites que je réponde à la question techno qui te trotte dans la tête en ce moment ? Je vais répondre à une question reçue en public à chaque mois, et je réponds à toutes les autres questions reçues dans l’infolettre privée ou par podcast privé ! Je répondrai aux questions reçues en novembre, au début du mois de décembre.

Pose ta question !

Étiquettes