Pourquoi mon assistant AI sur le forum a-t-il du mal à répondre aux questions?

Une idée fausse que beaucoup d’entre nous ont à propos de l’IA est que nos attentes sont :

graph TD
    Question -->|"Magie IA coûteuse"| Answer
    Answer["La réponse parfaite"]

Il peut être extrêmement frustrant de dépenser beaucoup d’argent pour un modèle phare et d’obtenir toujours des résultats médiocres.

Dans ce sujet, j’aimerais prendre le temps d’ajuster les attentes et de pointer diverses fonctionnalités que Discourse AI propose pour obtenir de meilleures réponses.

Comment fonctionne réellement Discourse AI

La réalité est plus nuancée. Lorsque vous posez une question, voici ce qui se passe :

graph TD
    Question --> Consolidation[Consolidation de la question]
    Consolidation --> RAG[Système RAG]
    RAG --> ToolSelection[Sélection d'outils]
    ToolSelection --> Search[Recherche]
    ToolSelection --> Categories[Catégories]
    ToolSelection --> Tags[Étiquettes]
    Search --> Context[Collecter le contexte]
    Categories --> Context
    Tags --> Context
    Context --> Answer[Générer la réponse]
  1. Votre question est d’abord consolidée et comprise.
  2. Notre système RAG recherche dans les connaissances disponibles (facultatif).
  3. En fonction de ce qu’il trouve, il décide quels outils utiliser (facultatif).
  4. Les outils collectent des informations spécifiques.
  5. Tout est combiné pour générer une réponse.

Le contexte est primordial

Lorsque vous utilisez des systèmes d’IA pour répondre à des questions, le contexte est essentiel.

Les grands modèles linguistiques (LLM) tels que GPT-4 ou Claude 3.5 Sonnet sont entraînés sur une énorme quantité de données publiques. Cependant, deux mises en garde les rendent moins idéaux pour répondre à des questions spécifiques à un domaine :

  1. Les LLM sont entraînés sur des données publiques.
  2. Les LLM ont une date limite d’entraînement, ce qui signifie que les données publiques vieilles de quelques mois sont probablement absentes de l’ensemble de données.

Dans le cas d’un forum fermé, rien ne sera présent dans l’ensemble de données, ce qui rend le contexte encore plus crucial.

Le contexte est l’information que nous fournissons à un LLM avant qu’il ne réponde à une question pour l’aider à y répondre correctement.

Comment obtenir du contexte ?

Le contexte peut être fourni de plusieurs manières :

  • Automatiquement en utilisant RAG (Retrieval-Augmented Generation) - Lorsque vous téléchargez des documents sur un persona, nous pouvons rechercher des réponses dans le document avant de répondre. Nous consolidons d’abord votre question, puis nous recherchons le contenu à l’aide de la recherche sémantique. Cela aide à guider le choix des outils.
  • Automatiquement en utilisant des outils - Les LLM peuvent utiliser des outils (tels que la recherche ou la lecture de sujets) pour trouver des informations supplémentaires basées sur les indications du RAG.
  • Manuellement - vous pouvez coller une grande quantité de texte, puis poser des questions à un LLM à son sujet.

Contexte basé sur les outils

L’assistant de forum Discourse utilise des outils pour la recherche, la lecture de sujets et de messages, la liste des catégories ou des étiquettes.

Lorsque vous posez une question à l’assistant de forum, le modèle utilise d’abord le RAG pour comprendre ce qui pourrait être pertinent, puis décide quels outils aideront à obtenir de meilleures réponses.

Dans cet exemple, vous pouvez voir que j’ai demandé à l’assistant de forum ce que je faisais, il a décidé de rechercher du contenu de Sam posté la semaine dernière et a obtenu 21 résultats.

Pour comprendre quel nouveau contexte le modèle a obtenu de cette recherche, vous pouvez activer le paramètre : AI bot debugging allowed groups

Cela ajoutera un bouton de débogage en bas de chaque message, lorsque vous cliquerez dessus, il pourra afficher le contexte exact qui a été fourni au LLM.

L’outil de recherche Discourse est très riche en options :

C’est à la fois une bénédiction et une malédiction. Les LLM font souvent des choix sous-optimaux s’il y a trop d’options sur la table, nous avons essayé de ne pas garder le nombre d’options trop élevé… mais selon vos besoins, vous pourriez préférer utiliser un outil personnalisé pour la recherche.

Que faire si je n’obtiens pas les résultats escomptés ?

Étant donné que le contexte est primordial, la première chose à vérifier est :

  1. Le système RAG a-t-il trouvé du contenu pertinent pour guider les outils ?
  2. Le LLM a-t-il utilisé les bons outils sur la base de ces indications ?
  3. Les outils ont-ils trouvé les résultats attendus ?

Prenons par exemple cet échec :

C’est un échec classique à la fois des indications RAG et de l’utilisation des outils.

Le LLM a recherché :

bug critical urgent broken order:latest status:open status:public

La composante mot-clé de cette recherche est assez médiocre, ne produisant qu’un seul résultat. La recherche sémantique a alors beaucoup de mal à trouver les résultats, car chaque fois que quelqu’un crie fort, elle la traite comme urgente.

Ce qui donnerait probablement un meilleur résultat, c’est :

Trouver tous les bugs ouverts classés par op_likes et signalés au cours des 2 dernières semaines. Cependant, ce sous-ensemble particulier d’informations n’est pas disponible pour la fonction de recherche telle quelle, cela nécessiterait un outil personnalisé.

Étant donné la grande variance et la nuance ici, la première chose à faire est de surveiller les interactions existantes des utilisateurs avec vos bots et de collecter autant d’échecs que possible.

Que faire en cas d’échec ?

En cas d’interaction échouée, vous avez plusieurs options :

  1. Vous pouvez améliorer l’invite système pour mieux guider le bot.
  2. Vous pouvez documenter des informations sur le forum pour donner de meilleurs résultats de recherche au bot - vous pouvez prioriser votre catégorie de documentation pour qu’elle soit plus susceptible d’être trouvée.
  3. Vous pouvez télécharger un document avec plus de contexte, nous diviserons le document en fragments et fournirons les fragments les plus proches de la question consolidée pour aider à ancrer le bot.
  4. Si votre persona est principalement axé sur la recherche, forcez l’utilisation de l’outil de recherche.
  5. Vous pouvez développer des outils personnalisés pour mieux répondre à vos besoins.
  6. Vous pouvez augmenter la quantité de contexte que vous fournissez au LLM (plus de résultats de recherche, etc.).

L’IA peut être floue, résoudre un problème peut en créer un autre

Gardez à l’esprit que créer le bot de réponse aux questions IA “parfait” est un parcours. La création de boucles de rétroaction surveillées et l’évaluation régulière de ses performances vous permettront de l’améliorer au fil du temps.

Soyez conscient de la façon dont la technologie est construite, si vous avez besoin d’accéder au contexte de 10 000 messages pour répondre à une question, il peut être irréalisable de fournir la liste complète des messages dans le contexte pour répondre avec les fenêtres de contexte actuelles.

La clé est de comprendre que l’obtention de meilleurs résultats est un processus itératif.

17 « J'aime »

C’est un excellent article, Sam, surtout pour les personnes sans expérience en développement ! :heart:

Il devrait absolument être ajouté au premier message de AI bot - Personas.

1 « J'aime »

Merci Sam !

C’est très perspicace. J’ai toujours considéré les documents RAG comme quelque chose qui fonctionne en parallèle des outils (généralement la recherche et la lecture). Par exemple, utiliser des outils pour obtenir des réponses sur le forum et RAG pour ajouter des connaissances supplémentaires, comme des articles de blog, des documents externes, etc. Et ensuite, sélectionner le plus pertinent parmi tout cela.

Et j’ai utilisé l’invite pour guider la persona sur la façon d’utiliser ce contexte, mais je n’avais pas pensé à ceci :

Serait-ce fait en fournissant des explications sur la structure du forum et des exemples de questions/réponses dans les documents ?

Pourriez-vous donner un peu plus de détails sur la façon dont la question est consolidée ?

Un exemple serait :

  1. L’IA consolide une très longue conversation en : « Tony aimerait comprendre comment fonctionne la consolidation des questions et comment les exemples sont fournis »
  2. Le RAG est effectué sur le texte « Tony aimerait comprendre comment fonctionne la consolidation des questions et comment les exemples sont fournis » à la recherche de fragments similaires (par exemple, cela pourrait être « la consolidation des questions fonctionne par XYZ »)
  3. Ensuite, les morceaux qui sont proches de la question posée sont ajoutés à la conversation comme contexte préexistant.
1 « J'aime »

9 messages ont été déplacées vers un nouveau sujet : Exploration des options de re-classement pour Discourse AI