20. März 2024
In meinen letzten Artikeln hatte ich mich damit beschäftigt, was RAG (Retrieval Augemente Generation) ist und wie es funktioniert.
In diesem Artikel vergleiche ich verschiedene Tools und gehe auf die Besonderheiten und Unterschiede ein.
Dazu habe ich eine Anleitung und Produktinformation von einem E-Bike Hersteller genommen, sowie mehrere Dokumente aus dem HR zu Unternehmensregelungen (beispielhaft und generisch).
Die Inhalte sind in deutscher bzw. englischer Sprache verfasst – was aber keine Rolle spielt.
Zum Vergleich habe ich ein lokales LLM auf Basis von Mixtral mit Olama, Choma und Langchain, sowie Azure AI Studio, Copilot Studio (basiert auch auf AI Studio), Cohere (ein Spezialist für RAG) und ChatGPT 4 verwendet.
ChatGPT 4 fällt etwas aus der Rolle, da ich hier die Dokumente in den Prompt hochgeladen habe und nicht vorab einem separaten Index Prozess unterzogen (ChatGPT macht vergleichbares im Hintergrund).
Die Ergebnisse von Azure AI (GPT3.5 turbo 16k und Vector Index), Copilot Studio Dataverse und ChatGPT4 waren sehr ähnlich und einigermaßen hilfreich und richtig. Datenqualität des Ausgangsdaten und der richtige Prompt ist immer entscheidend. Im Falle von Azure AI war es auch notwendig die Instruktion anzupassen, da sonst zu oft allgemeine Antworten kamen, die nichts mit den Dokumenten zu tun hatten.
Das Ergebnis von Cohere wich stärker ab und hatte andere Aspekte berücksichtigt. Gut ist, dass die Quellen im Detail zitiert werden – Stichwort Verlässliche KI und Nachvollziehbarkeit.
Bei der lokalen Lösung war das erste Ergebnis sehr ernüchternd hier waren Anpassungen an der Instruktion notwendig – die bei einer lokalen Lösung ohnehin vorgenommen werden müssen. Anschließend war das Ergebnis auch brauchbar. Hier würde es sich auch anbieten noch tiefer in die Optimierungen einzusteigen. Es dauerte auch länger auf das die Antwort zu warten, evtl. tun es hier auch kleiner Modelle als Mixtral (mit Mistral geht es schneller aber die Leistung kann schlechter sein).
Herausforderung Index und Suche
Was auffällig war, dass es große Unterschiede bei der Suche nach den geeigneten Dokumenten bzw. Quellen gab. Copilot Studio und meine lokale Lösung konnten nur ein gutes Ergebnis liefern, wenn der Schlüsselbegriff in der Frage auch in den Dokumenten vorhanden war. (Siehe unten das Beispiel suche nach Grippe vs. Krankheit). Auch unter Azure AI hat das nur mit der expliziten Auswahl des “Vector” Index funktioniert. Wird ein Keyword oder Hybrid gewählt scheitert es ebenso.
Im Falle von Copilot Studio kam es auch vor, dass zwar ein Dokument mit dem richtigen Keyword gefunden wurde, das aber im Vergleich zu einem anderen geringere Relevanz hat und damit auch ein Ergebnis ausgegeben hat, das irrelevant war.
Herausforderung Dokumentenqualität
Diesen Punkt habe ich diesmal einfach gehalten. Die Dokumente zur Unternehmensregelungen waren einfach Textdokumente wie sie in Intranets oder Wikis verwendet werden. Die Anleitung war ein etwas komplexeres PDF aber der relevante Inhalt war auch den Texten. Komplex wird es mit Bildern und Tabellen – das wäre ein eigenes Thema.
Praktischer Einsatz:
Mit ChatGPT4 ist es am einfachsten. wenn man nur ein paar Dokumente hat und es keine Rolle spielt, dass die Dokumente irgendwo bei OpenAI sind.
Dann kommt Microsoft Copilot Studio – Ein RAG lässt sich prototypisch in 15 Min. einrichten, sofern man schon mal einen Copilot Studio Chatbot gebaut hat. Für die Nutzung wird eine Copilot Studio Lizenz mit Credits benötigt.
Cohere kann für einen Test Online genutzt werden, als API angebunden oder in einer eigenen Umgebung betrieben werden. Für die API oder intern Nutzung sind kostenpflichtige Lizenzen notwendig.
Azure AI mit dem Azure AI Studio ist dagegen komplexer einzurichten, wobei die Azure AI Studio Oberfläche es vergleichbar einfach macht, benötigt es doch Grundlagen in Azure und man sollte die Funktionsweise von RAG kennen. Dafür können individuelle Einstellungen und Optimierungen vorgenommen werden, was für ein gutes Ergebnis auch nötig ist. Abrechnung erfolgt auf Basis der einzelnen Ressourcen.
Die lokale Lösung ist am komplexesten einzurichten und erfordert auch etwas mehr Hardware. (In meinem Fall ein Gaming-Notebook mit GPU die für KI nutzbar ist). Hier sind die Betriebskosten zu berücksichtigen wenn die Lösung auf einem dedizierten Server onPremis oder in der Cloud läuft.
Mein Fazit an der Stelle ist, dass die Leistungen der LLMs durchgehend gut waren, die Probleme im Prozess liegen, insbesondere in der Indexierung und auffinden der richtigen Dokumente (Daten). Azure AI bietet hier sicher die größte Spannweite an Möglichkeiten, wobei Cohere sicher einen Blick und Evaluation wert ist, insbesondere wenn ein lokaler Betrieb in Frage kommen soll.
Mit einer lokalen Lösung kann man sicher auch sehr gute Ergebnisse erzielen aber mit höherem Aufwand. Dafür kann es besser auf die individuelle Situation und Anforderungen angepasst werden.
Wenn die Einschränkungen des Copilot Studios nicht stören, ist es eine schnelle und einfach einzuführende Lösung, die im Gegensatz zu den anderen noch eine umfangreiches Chatbot Framework mitbringt um auch Prozesse einzubinden. Da hier noch vieles in der Preview ist, könnte sich Schwächen in den nächsten Monaten vielleicht auch noch auswachsen, da die technische Basis in Azure bereits vorhanden ist.
Anbei die Demobeispiele:
Fragestellung gegen die HR-Dokumente:
Was muss ich bei einer Grippe beachten?
Cohere:
Azure AI (Vectorindex und optimierten Instruktion)
Copilot Studio
ohne angepasste Instruktion kam eine allgemeine Antwort:
Nach dem Hinweis in der Instruktion doch bitte auf Basis der Dokumente zu antworten:
Mit dem richtigen Keyword:
Mein lokales System:
Hier ist zu sehen, erst kommt eine allgemeine Antwort, da das Keyword nicht gefunden wurde (die Instruktion war wohl immer noch nicht scharf genug). Dass die Antwort kürzer ist hat auch mit der Instruktion zu tun, da nicht so viel Text generiert werden sollte.
ChatGPT4
Was muss ich tun, wenn ich eine Grippe habe?
Bei Krankheit aufgrund von Grippe musst du dies umgehend deinem Vorgesetzten oder der Personalabteilung melden, wobei eine klare Angabe über die voraussichtliche Dauer der Krankheit wichtig ist. Die Krankmeldung kann telefonisch oder per E-Mail erfolgen, je nach betrieblichen Vereinbarungen. Die ärztliche Bescheinigung, also der Krankenschein, muss spätestens am dritten Tag der Krankheit eingereicht werden, um die Lohnfortzahlung zu gewährleisten