Comment Créer un Bot RAG pour Slack : Guide Technique et Économique pour les Entreprises
Agents RAG au sein des entreprises : Bots de connaissances sur Slack Les agents de connaissances basés sur l'IA, tels que AskHR d'IBM, sont maintenant utilisés par certains grands acteurs de la tech pour accélérer l'accès à l'information interne. Ces bots sont capables de parcourir rapidement des documents internes comme des sites web, des PDFs ou des fichiers texte, et de fournir des réponses précises aux employés dans des plateformes de messagerie comme Slack, Teams ou Discord. Bien que ce concept commence à émerger, il n'est pas encore largement adopté. Cet article explore comment construire un bot simplifié avec l'utilisation de Retrieval-Augmented Generation (RAG) et d'un système d'agents. Qu'est-ce que RAG et les agents RAG ? RAG, ou Retrieval-Augmented Generation, est une technique où un modèle de langage avancé (LLM) récupère des informations pertinentes dans des documents avant de répondre à une question. Cette approche est plus efficace qu'un simple système de recherche par mots-clés car elle peut trouver des documents similaires, même si le terme exact n'est pas présent. Par exemple, une requête sur les "polices" pourrait renvoyer des documents sur la "typographie". Dans les systèmes d'agents, l'LLM peut décider où et comment il souhaite récupérer des informations, offrant ainsi une meilleure expérience utilisateur. Cela permet au bot d'aller "chercher" des informations, ce qui rend son fonctionnement plus compréhensible pour l'employé. Architecture Technique La construction d'un tel système nécessite une combinaison de plusieurs technologies : des frameworks d'agents, des bases de données vectorielles et des options de déploiement. Déploiement : Serveurs-less : Pour minimiser les coûts, on utilise des fonctions serveurs-less comme AWS Lambda ou des plateformes spécialisées comme Modal. Ces solutions permettent de faire tourner le code uniquement lorsqu'une question est posée, optimisant ainsi les ressources. Comparaison des plateformes : AWS Lambda est bien établi mais peuvent présenter des latences. Modal, plus récent, offre des coûts CPU très bas mais peut encore faire face à des erreurs (500) sur le plan gratuit. Base de Données Vectorielle : Les données sont stockées sous forme de vecteurs pour faciliter les recherches par similarité. Les options principales incluent Weaviate, Milvus, pgvector, Redis et Qdrant. Coûts : La plupart de ces bases de données proposent des offres gratuites jusqu'à plusieurs GB de données, mais les coûts augmentent rapidement au-delà. Qdrant est particulièrement généreux et permet de stocker des vecteurs denses et clairsemés. Modèles de Langue et Embeddings : LLMs : Le choix du modèle de langage est crucial en termes de coûts. GPT-4o-mini ou Gemini Flash 2.0 sont des options abordables, coûtant moins d'un dollar par jour pour quelques centaines d'utilisations. Embeddings : Le processus d'embedding est relativement peu coûteux. OpenAI's text-embedding-3-small est une option populaire. Processus d'Ingestion et de Chunking des Documents Chunking : La manière dont les documents sont découpe affecte grandement la qualité et l'efficacité des réponses. Il est important de veiller à ce que chaque chunk (fragment de document) contienne suffisamment de contexte mais ne soit pas trop long pour être difficile à indexer. Méthodes : On peut utiliser Docling pour les PDFs, en attachant des éléments selon les titres et les tailles de paragraphes. Pour les pages web, un crawler personnalisé peut être mis en place pour analyser les éléments de la page et décider de la fragmentation sur la base des ancres, des titres ou du contenu général. Métadonnées : Chaque chunk doit être associé à des métadonnées pour faciliter le retracement. Cela inclut les URL, les tags d'ancrage, les numéros de page et autres identifiants. Préparation des Sources : Si la qualité des sources est médiocre, la tâche devient complexe. On peut utiliser un LLM pour résumer les textes et leur attribuer des labels à autorité supérieure, facilitant ainsi la recherche. Hybrid Search : Pour améliorer la pertinence, on utilise une recherche hybride combinant des vecteurs denses (pour des matches "flous") et des vecteurs clairsemés (pour des matches exacts). Construction de l'Agent Initialisation : Le premier API call détermine si l'agent doit être lancé, optimisant ainsi le temps de réponse. Cela aide à maintenir une expérience utilisateur fluide. Configuration : ```python access_links_tool = get_access_links_tool() public_docs_tool = get_public_docs_tool() onboarding_tool = get_onboarding_information_tool() general_info_tool = get_general_info_tool() formatted_system_prompt = get_system_prompt(team_name) agent = FunctionAgent( tools=[onboarding_tool, public_docs_tool, access_links_tool, general_info_tool], llm=global_llm, system_prompt=formatted_system_prompt ) ``` Interaction en Temps Réel : On utilise des événements en temps réel pour communiquer avec Slack, montrant les étapes de recherche de l'agent pour une meilleure transparence. Code : ```python handler = agent.run(user_msg=full_msg, ctx=ctx, memory=memory) async for event in handler.stream_events(): if isinstance(event, ToolCall): display_tool_name = format_tool_name(event.tool_name) message = f"✅ Checking {display_tool_name}" post_thinking(message) if isinstance(event, ToolCallResult): post_thinking(f"✅ Done checking...") final_output = await handler final_text = final_output blocks = build_slack_blocks(final_text, mention) post_to_slack( channel_id=channel_id, blocks=blocks, timestamp=initial_message_ts, client=client ) ``` Optimisation : Prompting : Réaliser des ajustements fins sur les prompts pour l'LLM est essentiel. Latence : Minimiser le temps de réponse en gérant les démarrages à chaud, en optant pour des modèles moins gourmands en temps, et en limitant le nombre d'API calls. Chunking : Programmer l'ingestion des documents et résoudre les problèmes de structure et de qualité des sources. Évaluations et Optimisations Monitoring et Evaluation : Implementer des systèmes de surveillance et d'évaluation, comme Phoenix, pour garantir la fiabilité et l'amélioration continue. Guardrails : Mettre en place des barrières de sécurité pour empêcher le bot de générer des réponses inappropriées ou trompeuses. Mise à Jour des Données : Détection des Changements : Utiliser des méthodes de détection de changements pour mettre à jour régulièrement les informations dans la base de données vectorielle. Stratégies de Re-embedding : Effectuer des re-embeddings périodiques pour assurer l'actualité des données. Mémoire à Long Terme : Histoire de la Conversation : Fetcher l'historique des messages depuis l'API de Slack pour donner au bot un contexte des conversations précédentes. Limites : Ne pas surcharger le contexte de l'agent, ce qui augmenterait les coûts et potentiellement confondrait le modèle. Conclusion Bien que la construction d'un bot de connaissances avec RAG et des agents AI soit techniquement complexe, des outils et des frameworks modernes rendent ce processus accessible. Les entreprises peuvent commencer par des systèmes simples, en se concentrant sur la préparation des documents, l'optimisation des API calls et l'amélioration de la latence. Cela permet de minimiser les coûts tout en offrant une expérience utilisateur fluide et précise. À mesure que ces technologies évoluent, des modèles plus performants et moins gourmands en ressources seront disponibles, rendant les systèmes d'agents encore plus attrayants. Évaluation de l'Industrie et Profil de l'Entreprise Les experts de l'industrie reconnaissent le potentiel transformateur de ces bots de connaissances, en soulignant leur capacité à réduire significativement le temps passé à fouiller des informations internes. Des compagnies comme Google, IBM et Microsoft sont en train d'intégrer ces solutions dans leurs workflows pour améliorer la productivité. Docubot Corp est une startup spécialisée dans la création de solutions d'bots de connaissances pour les entreprises. Elle utilise des technologies de pointe comme RAG et des agents AI pour simplifier l'accès aux informations internes, permettant aux employés de passer moins de temps à chercher des réponses et plus de temps à être productifs. L'entreprise a déjà réussi à attirer plusieurs clients importants en mettant en avant l'efficacité et la simplicité de ses bots. Docubot Corp continue d'innover en développant des outils d'ingestion de documents plus sophistiqués et en optimisant les techniques de recherche par similarité. Avec un focus sur l'expérience utilisateur et l'optimisation des coûts, Docubot Corp promet de transformer la façon dont les entreprises gèrent et accessibilisent leurs connaissances internes.