Ich habe mich mit dem Thema tiefer beschäftigt und mit Hilfe von ein paar Demo Dokumenten zu internen Regelungen im Unternehmen (HR-Themen) einen Test durchgeführt und mit einem RAG (Retrieval Augementation Generation) basierend auf Zephyr 7B Alpha, ChromaDB, HuggingFace, und Langchain verglichen.
Die Ergebnisse des Copilot Studios waren vergleichbar mit denen der RAG Lösung, solange in der Frage die Keywords enthalten waren. Es war auch hilfreich, dass die Informationen (fast) immer in einem Dokument waren. Es wurde von Copilot Studio für die Beantwortung immer nur eine Quelle (Dokument) herangezogen, das einen Treffer auf das Suchwort hatte. Auf dessen Inhalt wurde die Antwort von dem Bot formuliert.
Hier war die RAG Lösung flexibler und konnte den Kontent auch von anderen Dokumenten einbeziehen. Bei einer guten Strukturierung der Quelldokumente wäre das aber lösbar, insbesondere in solchen FAQ-Szenarien, da im Copilot Dokumente bis max. 3 MB verwendet werde können.
Problematischer fand ich, dass der Copilot Studio (PVA) Bot nur Antworten liefert, wenn er mit dem Stichwort in den Dokumenten fündig wurde. Hier zeigte sich die RAG Lösung flexibler und konnte auch Antworten liefern ohne ein passendes Stichwort.
Hier ein passendes Beispiel:
Antwort vom CopilotStudio:
Antwort vom RAG:
Es bezieht sich hier richtigerweise auf die Regelungen bei Krankheit.
Ich hatte noch andere Dokumente hochgeladen die keinen HR Kontext hatten. Das konnte dann zu unerwarteten Antworten führen. Daher ist es wichtig welche Dokumente welchem Bot in welchem Kontext zur Verfügung gestellt werden. Für Copilot Studio können für den Bot auch Dokumente ausgeschlossen werden um unvorhergesehene Antworten/Treffer zu vermeiden. Mit SharePoint wird auch die Zugriffsberechtigung des Users auf das Quelldokument berücksichtigt. Damit kann der Chatbot nichts „ausplaudern“ ohne Berechtigung – für die Dataverse Dokumente gilt das allerdings nicht.
Ich vermute, dass Copilot Studio bei den Generativen AI und den hinterlegten Dokumenten einen klassische Stichwortsuche durchführt und das gefundene Dokument mit der Frage in einen Prompt packt und das Ergebnis ausgibt. Eine RAG Lösung geht hier weiter, da die Dokumente zerlegt, Embbeded und einer Vector-DB abgelegt werden. (Ihr findet im Internet sehr viel Infos dazu, ansonsten kann ich gerne noch ein paar Links liefern ;-)). Ebenso wird mit der Frage verfahren und damit können auch Ähnlichkeiten gefunden und „verstanden“ werden, die über einfache Stichworte hinausgehen.
Fazit:
Copilot Studio und Generative AI auf Basis der eigenen funktionieren gut, wenn die Dokumente jeweils umfassend sind und die Stichworte gut berücksichtig, bzw. die User wissen, wie sie mit den richtigen Stichworten fragen.
Mit Anbindung eines Azure OpenAI-Dienst können die Leistungen des Copilot Studio erweitert werden und die einer starken und flexiblen RAG-Lösung auf Basis eigener Dokumente ergänzen. Das wäre auch mein nächstes Projekt 😉
Update 14.01.2024
Eine Lösung des Problems mit dem fehlenden semantischen Verständnis der Suche ist die Integration von AI-Builder mit einem „Custom Prompt“.
Wird bei der Generativen Antwort kein Ergebnis gefunden, kann die Anfrage an den Custom Prompt geliefert werden. Hier kann die Frage des Users nach Kategorien analysiert werden. In meinem Fall habe ich für die Themen und Dokumente Kategorien, bzw. Keywords definiert. Der Prompt prüft, ob die Frage zu einer der Kategorien/Stichworte passt und gibt dieses zurück.
Damit kann dann die Suche nach dem geeigneten Dokument ergänzt werden und somit über die Generative Antwort eher ein Ergebnis gefunden werden.
Wird hier auch kein Ergebnis gefunden kommt der Bot mit dem Kommentar zurück, dass kein Eintrag gefunden werden kann und die Anfrage eskalieren.
Wenn Sie mehr darüber erfahren möchten, würde ich mich über Ihre Anfrage freuen oder über LinkedIn Jörn Bülow | LinkedIn