13.12.2024 - Fachartikel
Wie kann KI Projektron BCS bereichern? Ein Überblick über die Grundlagen und Entwicklungsansätze
Wie kann künstliche Intelligenz (KI) dazu beitragen, Projektron BCS noch leistungsfähiger und intuitiver zu machen? Diese spannende Frage treibt uns seit Ende 2023 an. In einem eigens dafür initiierten Entwicklungsprojekt haben wir erste Grundlagen geschaffen, um KI gezielt in unsere Software zu integrieren.
In diesem Artikel erhalten Sie einen Einblick in die Technik hinter den aktuell führenden KI-Sprachmodellen. Dabei gehen wir insbesondere auf die Transformer-Architektur, die es Maschinen ermöglicht, Sprache präzise zu verstehen und Texte zu generieren. Durch Anpassungen und Training auf spezifische Anforderungen können diese Modelle maßgeschneidert werden – etwa als Hilfsassistent in Projektron BCS. In einem Folgebeitrag zeigen wir, wie wir die Projektron-KI-Hilfe und andere Anwendungen entwickelt haben und wie sie unsere Software bereichern.
Die Transformer-Architektur: Aufmerksamkeit ist alles
Die Transformer-Architektur bildet das Herzstück moderner Sprachmodelle wie ChatGPT. Erstmals 2017 vorgestellt, hat sie die Verarbeitung von Sprache revolutioniert. Im Gegensatz zu älteren Modellen, die Informationen sequentiell verarbeiteten, erlaubt die Transformer-Technologie eine parallele Analyse der gesamten Eingabe – und das macht sie so effizient und leistungsstark.
Die Transformer-Architektur wurde initial 2017 von einer Gruppe von Google-Mitarbeitern vorgestellt mit der Veröffentlichung „Attention Is All You Need“ (Quelle: https://arxiv.org/abs/1706.03762).
Das Besondere an dieser Architektur ist nämlich der Aufmerksamkeitsmechanismus (Attention-Mechanismus). Dieser berechnet, welche Teile eines Textes besonders wichtig sind, um den Kontext eines Wortes zu verstehen. Mithilfe mathematischer Operationen wie der Vektorrechnung wird so jede Eingabe in einem komplexen Prozess in eine maschinenlesbare Form umgewandelt.
Der Aufmerksamkeitsmechanismus kommt, wie die folgende Grafik zeigt, an drei Stellen der Architektur vor. Damit ist es möglich, die gesamte Eingabe parallel zu bearbeiten. Davor verwendete Modelle (wie LSTM) haben die Eingabe sequentiell verarbeitet, was es schwieriger machte, den Sinnzusammenhang über eine längere Sequenz abzubilden.
Vom Token zur Ausgabe: Der Prozess im Detail
Schritt 1: Tokenisierung – Die Zerlegung der Eingabe in verarbeitbare Einheiten
Im ersten Schritt wird die Nutzereingabe "tokenisiert". Dabei wird der Eingabetext in kleinere Einheiten, sogenannte Tokens, zerlegt. Ein Token kann ein Wort, ein Teil eines Wortes oder sogar ein einzelnes Zeichen sein, je nach gewähltem Tokenisierungsverfahren.
Die Modelle arbeiten mit einem festen Zeichensatz, im Fall der OpenAI-Produkte sind das 100.256 Token. Ein Token kann ein einzelnes Zeichen, ein Wortbestandteil oder ein ganzes Wort sein. Die maximale gleichzeitig verarbeitbare Textgröße wird ebenfalls nach Token bemessen, ebenso die Kosten. Das Ziel ist, den Text in verarbeitbare Einheiten zu unterteilen, die das Modell effizient analysieren kann.
Auf der Seite https://platform.openai.com/tokenizer kann man einen Text testweise in Token umwandeln lassen. Wer sich einmal den kompletten Tokensatz von OpenAIs GPT 4 ansehen möchte, kann das unter https://gist.github.com/s-macke/ae83f6afb89794350f8d9a1ad8a09193 tun.
Der Tokensatz wird durch Analyse großer Textmengen mittels Byte-Pair Encoding erzeugt. Eine Erläuterung findet sich hier: https://huggingface.co/learn/nlp-course/chapter6/5
Da das Englische in den Trainingstexten weit überwiegt, lassen sich englische Texte gleichen Sinngehalts günstiger tokenisieren, d.h. sie kommen mit weniger Token aus, die Antwort kommt schneller, die Kosten sind geringer als in anderen Sprachen.
Schritt 2: Vektorisierung – Wie Worte mathematisch repräsentiert werden
Der Attention-Mechanismus basiert wesentlich auf Vektor- und Matrizenrechnung. Nachdem der Text in Tokens aufgeteilt wurde, wird jeder dieser Tokens in einen Vektor übersetzt („Vector Embeddings“). Dadurch erhält das Modell eine numerische Darstellung des Textes, die als Grundlage für die Verarbeitung und die Berechnung der Zusammenhänge dient.
Welcher Vektor ein Token abbildet, wird durch Analyse großer Textmengen ermittelt. Dabei wird der Vektor eines Wortes durch Analyse der Nachbarwörter ermittelt. Man kann sich z. B. vorstellen, das Synonyme wie "Katze" und "Stubentiger" sehr ähnliche Vektoren ergeben, da sie weitgehend in den gleichen Wortumgebungen vorkommen. Der "Stubentiger" wird häufiger in häuslichen Kontexten vorkommen, der Vektor also etwas "häuslicher" sein. Eine Erläuterung, wie die Vektorisierung im Detail funktioniert, findet man hier: https://medium.com/@zafaralibagh6/a-simple-word2vec-tutorial-61e64e38a6a1
Die von GPT 4 verwendeten Vektoren haben 512 Einträge („Dimensionen“).
Schritt 3: Positionskodierung – Die Reihenfolge der Wörter verstehen
Da die Transformer-Architektur die gesamte Nutzereingabe in einem Schritt verarbeitet, stehen per se keine Informationen über die Reihenfolge der Token zur Verfügung. Damit das Modell versteht, welche Tokens in welchem Zusammenhang stehen, wird jedem Token eine Positionsinformation hinzugefügt. Diese Positionskodierung sorgt dafür, dass das Modell nicht nur die Bedeutung der einzelnen Tokens, sondern auch deren Reihenfolge und Beziehungen zueinander erfassen kann. Dies ist wichtig, da die Bedeutung eines Satzes stark von der Wortstellung abhängt.
Schritt 4: Attention-Mechanismus – Wie der Kontext eines Wortes berechnet wird
Aus dem Mathematikunterricht ist vielleicht noch in Erinnerung, dass man Vektoren multiplizieren kann. Das Ergebnis dieses Skalarproduktes ist eine reelle Zahl (kein Vektor), und je größer diese ist, desto ähnlicher sind sich die Vektoren (Vorher normalisiert man die Vektoren).
Grob vereinfacht berechnet der Attention-Mechanismus so die Bedeutung eines Wortes für alle Wörter im Text: Er multipliziert die zugehörigen Vektoren. Ein hoher Aufmerksamkeitswert (Attention Score) bedeutet, dass die Wörter bedeutsam füreinander sind. Je größer das Skalarprodukt der Vektoren zweier Wörter, desto stärker ist ihre Verbindung. Dieser Schritt ermöglicht es, bedeutungsvolle Beziehungen und Zusammenhänge zwischen den Wörtern abzubilden.
Letztlich geht das darauf zurück - wenn wir uns kurz an die Art erinnern, wie wir die Wortvektoren ermittelt haben - dass die Wörter in den Trainingstexten in ähnlichen Wortumgebungen standen, oder anders gesagt, sie selber kamen in den untersuchten Texten häufig in naher Nachbarschaft vor: sie haben folglich etwas miteinander zu tun.
Diese Multiplikation liefert uns zu einem bestimmten Wort einen Aufmerksamkeitswert für jedes Wort des Textes. Im nächsten Schritt multiplizieren wir die Aufmerksamkeitswerte mit den zugehörigen Wortvektoren und erhalten so die gewichteten Wortvektoren. Diese werden jetzt alle addiert, und ergeben zu unserem untersuchten Wort einen Vektor, der das Wort mit dem gesamten Kontext repräsentiert. Diese Rechnung erfolgt für jedes Wort des Textes.
Der Transformer enthält drei Aufmerksamkeits-Mechanismen mit je etwas anderem Fokus, wie in der Grafik bezeichnet. Der dritte Mechanismus erzeugt schließlich einen Vektor, aus dem in der letzten „Linear“-Schicht des Transformers für alle Token die Wahrscheinlichkeit berechnet wird, das nächste Token der Antwortsequenz zu sein. Die Anzahl der Neuronen in der letzten Schicht des Transformers ist daher gleich der Tokenzahl, mit der die Maschine arbeitet. Das folgende Bild zeigt den Ablauf.
Die Ausgabe des Modells entsteht schließlich durch wiederholte Auswahl der wahrscheinlichsten Token, bis das End-of-Sequence-Token (<EOS>) erreicht wird. Dieser iterative Prozess führt zu einer Textsequenz, die sich so liest, als wäre sie von einem Menschen verfasst worden.
Sampling: Kreativität durch kontrollierten Zufall
Beim Generieren von Texten mit Sprachmodellen wie dem Transformer liegt es nahe, stets das Token mit der höchsten Wahrscheinlichkeit auszuwählen und dieses an die bestehende Sequenz anzuhängen. Diese deterministische Herangehensweise führt jedoch oft zu monotonen, repetitiven oder gar langweiligen Ergebnissen. Um die generierten Texte kreativer und vielseitiger zu gestalten, wird stattdessen das sogenannte Sampling eingesetzt.
Sampling fügt eine Zufallskomponente in die Token-Auswahl ein. Statt strikt das wahrscheinlichste Token zu wählen, wird aus einer Gruppe der wahrscheinlichsten Tokens (man spricht oft von der Top-k-Methode) gewürfelt, welches tatsächlich angehängt wird. Auf diese Weise entstehen Texte, die weniger vorhersehbar und repetitiv sind. Wann man die gleiche Frage mehrmals stellt, können die Antworten dadurch unterschiedlich ausfallen.
Eine Erläuterung findet sich hier: https://huggingface.co/blog/how-to-generate
Durch die Anwendung von Sampling ist die Ausgabe nicht mehr deterministisch.
Die Ergebnisse dieser Technik sind recht erstaunlich. Es entstehen Texte, die wie von Menschen gemacht klingen. Was man aber immer im Gedächtnis behalten muss: Die Maschine lebt in einer selbstbezüglichen, hermetischen Tokenwelt. Die Bedeutung von Wörtern wird ausschließlich durch andere Wörter dargestellt, nicht durch Bezug zu irgendwelchen Objekten der realen Welt.
Deutlich wird das in der folgenden Unterhaltung mit ChatGPT: Die Frage nach den Primzahlen wird richtig beantwortet, die Frage nach dem Rechenweg nicht: statt zu sagen, dass es Token aneinandergehängt hat, aufgrund von Wahrscheinlichkeitsstudien an großen Textmengen, behauptet ChatGPT, es hätte einen Prozess gedanklich durchlaufen und eine Definition verwendet. Davon kann aber keine Rede sein, die Architektur ist dazu nicht in der Lage.
KI-Alignment: Der Weg zu zuverlässigem Verhalten
Das AI Alignment beschäftigt sich mit der Frage, wie man die KI auf ein erwünschtes Verhalten ausrichten kann. Risiken wie Vorurteile oder Fehlinformationen sollen minimiert werden. Sprachmodelle wie die aktuellen KI-Systeme werden mit enormen Textmengen – darunter Daten aus dem Internet – trainiert. Diese Trainingsdaten enthalten jedoch häufig Verzerrungen und fehlerhafte Informationen. Sprachmodelle sind in der Lage, von den vorliegenden Beispielen zu abstrahieren, Muster zu erkennen und diese auf neue Situationen anzuwenden. Gleichzeitig fließen die in den Trainingsdaten enthaltenen Vorurteile oder falschen Annahmen unbemerkt in die Ergebnisse ein.
Zwei Beispiele verdeutlichen diese Problematik:
- Das Thema gewann an Bedeutung, als Fälle wie der des automatischen Bewertungssystems von Bewerbungen bei Amazon bekannt wurden. Trainiert wurde mit Entscheidungen der Vergangenheit - und da hatte Amazon vor allem Männer eingestellt. Die Amazon KI hatte dann Frauen systematisch benachteiligt, obwohl die Bewerbungstexte keine expliziten Informationen zum Geschlecht enthielten. Es hatte gereicht, dass die KI das Geschlecht indirekt etwa aus Hobbys, Sportarten oder der Art des sozialen Engagements erschließen konnte. Ein Alignment gelang hier nicht, die Nutzung wurde weitgehend eingestellt.
- Einen etwas zu großen Erfolg beim Alignment hatten dagegen die Google-Entwickler in ihrem Bestreben, als benachteiligt geltende Angehörige von Minderheiten in den Ausgaben höher zu gewichten. Bekannt sind von der Google KI-generierte Bilder schwarzer Päpste, einige frühe US-Präsidenten wurden auch dunkelhäutig dargestellt.
Hier zeigt sich eine große Herausforderung: Das Alignment stellt nicht nur technische, sondern auch ethische Fragen:
- Klärung der Ziele: Bevor ein KI-System ausgerichtet werden kann, muss definiert werden, welches Verhalten als „erwünscht“ gilt. Diese Definition ist oft subjektiv und abhängig von gesellschaftlichen Normen und Kontexten.
- Einhalten der Ziele: Selbst wenn ein Verhaltensziel klar ist, bleibt die technische Herausforderung bestehen, ein System so zu gestalten, dass es dieses Ziel dauerhaft und konsistent erfüllt.
Dazu sind viele Methoden entwickelt worden, einen Überblick findet man bei Shen et al: Large Language Model Alignment: A Survey https://arxiv.org/pdf/2309.15025. Aus dieser Quelle wurden die folgenden drei Bilder entnommen.
Die zentralen Themenfelder des Alignments lassen sich in fünf große Bereiche gliedern:
- Äußeres Alignment: Die Fähigkeit der KI, vorgegebene Ziele korrekt umzusetzen.
- Inneres Alignment: Die Übereinstimmung zwischen den Absichten eines Modells und seinen tatsächlichen internen Prozessen.
- Interpretierbarkeit: Die Möglichkeit, Entscheidungen und Prozesse der KI für Menschen nachvollziehbar zu machen.
- Angriffe (Adversarial Attacks): Der Schutz der KI vor Manipulationen.
- Evaluation: Die Bewertung, wie gut ein System den definierten Zielen entspricht.
Diese fünf großen Themenfelder spalten sich wieder in eine größere Anzahl von Unterthemen auf. Ich zeige das hier nur für das äußere Alignment, um einen Eindruck vom Umfang der Arbeiten auf dem Feld zu geben.
Beispiel: Die Methode „Debate“
Das Beispiel rechts zeigt die Methode „Debate“. Dabei treten zwei KI-Systeme gegeneinander an und bewerten in mehreren Runden die Ansichten der jeweils anderen KI. Ziel ist es, zu einer Übereinstimmung zu kommen, ob eine Ausgabe den Alignment-Kriterien entspricht, oder wenigstens Aussagen zu erzeugen, die für Menschen leicht zu überprüfen sind (z. B. „ja“ oder „nein“).
Individualisierung der KI für Projektron BCS
Die vortrainierten Sprachmodelle wie GPT4, Gemma oder Llama verfügen bringen Sprachverständnis und allgemeines Trainingswissen mit. Um diese Modelle für eine eigene Anwendung zu nutzen, müssen sie mit firmenspezifischen Spezialwissen umgehen können. Das folgende Schaubild zeigt mögliche Wege zur Anpassung. Ein komplett neues Training von Grund auf scheidet in der Regel aufgrund der Kosten aus. Praktisch anwendbar für mittelständische Unternehmen sind Prompt Engineering, Finetuning und RAG.
Vortraining
In der Regel setzt man auf ein allgemein anwendbares „Pretrained LLM“ auf.
Man kann aber auch komplett mit eigenen Daten trainieren:
Vorteil: vollständige Kontrolle
Nachteil: extremer Aufwand
Prompt Engineering: Anweisung für das LLM ins System-Prompt
Schnell, wenig Aufwand, leicht anpassbar, wenig individuelle Daten
Finetuning
Ein vortrainiertes LLM wird mit eigenen Datensätzen nachtrainiert
Retrieval Augmented Generation (RAG)
Zweistufig, semantisch passende Information wird als Kontext ans LLM übergeben, Wissen dynamisch anpassbar, aktuell, wenig Erfundenes
Finetuning: Einschränkungen und Herausforderungen
Unsere Versuche mit Finetuning waren weniger erfolgreich. Finetuning erfolgt mit kleinen, spezifischen Datensätzen aus einer speziellen Wissensdomäne. Ziel ist, ein Allzweckmodell in ein Spezialmodell umzuwandeln. Das Modell wird dabei „nachtrainiert“, d.h. die inneren Gewichte im neuronalen Netz werden verändert. Das ist die gleiche Vorgehensweise wie beim initialen Training. Es entsteht ein neues Modell.
In unseren bisherigen Versuchen beeinträchtigte Finetuning die generellen Fähigkeiten der Modelle, ohne ausreichende spezielle Fähigkeiten aufzubauen. Die Modelle hatten zwar verstanden, dass sie etwas gelernt haben. Sie gaben allerdings unbrauchbare, generische Antworten, vorwiegend auf Basis ihres allgemeinen Vorwissens aus dem Training. Allgemeine Kontrollfragen wurden nach dem Finetuning eher schlechter beantwortet.
Als wesentlichen Nachteil des Finetunings sehen wir die umständliche Anpassung an neue Datenbestände: Für einen Hilfeassistenten müsste das Modell mit jeder neuen Version neu trainiert werden. Ein agiler Workflow, wie in der Dokumentation von Projektron etabliert, mit einem Hilferelease pro Woche, ist damit praktisch nicht abbildbar. Für eine auf RAG basierende Anwendung ist das dagegen kein Problem. Wir haben daher erst mal keine weiteren Aufwände in Finetuning investiert.
Prompt Engineering – Flexibel durch intelligente Eingaben
Über Prompts interagiert der Nutzer mit dem Sprachmodell. Die Eingaben erfolgen dabei in natürlicher Sprache, und nicht in einer speziellen Programmiersprache, die erst gelernt werden müsste. Allgemein kann ein Prompt folgende Elemente enthalten:
Eingabe | Aufgabe oder Frage, die das Modell beantworten soll (Query). Dieser Teil des Prompts ist immer für den Nutzer sichtbar. |
System | Beschreibt die Art und Weise, wie das Modell die Aufgabe lösen soll. Das System-Prompt bleibt in der Regel für den Nutzer unsichtbar. |
Kontext | Zusätzliches externes Material, das für die Lösung der Aufgabe herangezogen wird, z. B. die bisherige Unterhaltung im Chatmodus. |
Ausgabe | Format- oder Sprachanforderungen. |
Das alles zusammen wird an das Sprachmodell zur Verarbeitung übergeben.
Neben der eigentlichen Nutzereingabe handelt sich also um Anweisungen und zusätzliche Informationen an die KI, wie eine Aufgabe gelöst werden soll. Das Prompt-Engineering beschäftigt sich mit der Frage, wie diese Prompts am besten gestaltet und optimiert werden. Mittlerweile sind viele spezielle Techniken entstanden, die einem helfen, für eine bestimmte Fragestellung einen guten Prompt zu schreiben. Detaillierte Anleitungen finden sich im Netz, z. B.: https://www.promptingguide.ai oder https://platform.openai.com/docs/guides/prompt-engineering
Durch gezielte Anweisungen im System-Prompt kann eine allgemeine KI für spezifische Aufgaben genutzt werden, wie etwa zur Zusammenfassung, Verschlagwortung oder Anonymisierung. Diese Anweisungen bleiben dem Nutzer verborgen. Bei einer Applikation zur „Verschlagwortung“ beispielsweise wird im Hintergrund ein entsprechender System-Prompt generiert, der die Art der Verschlagwortung definiert und eventuell eine Liste von Schlagwörtern vorgibt. Dieser Prompt wird zusammen mit dem Nutzereingabetext an die KI übermittelt.
Wie diese Anweisungen an die Maschine sich auf die Ausgabe auswirken, zeigen die folgenden Beispiele. Die Frage ist immer die gleiche: „Wer war Richard Wagner?“. Die Antwort des Modells hängt ersichtlich stark vom System-Prompt ab.
Neben inhaltlichen Festlegungen wirken sich auch Anforderungen zur Ausgabesprache und Formatierung aus, wie das folgende Beispiel zeigt. Entsprechend trainierte Tools sind Multilingual. Die Ausgabe wird direkt in der Fremdsprache erzeugt, es erfolgt keine Übersetzung.
In der Regel ist Prompt Engineering ein iterativer Prozess, der aus diversen Runden von Änderungen am Prompt und Testen besteht. Die Gestaltung des Prompts wird dabei vom Sprachmodell abhängen. So verbessern in der Regel Beispiele („shots“) für die zu lösende Aufgabe das Ergebnis („Few shot Prompt“). Je „intelligenter“ das Modell ist, desto weniger Beispiele werden benötigt. Neuen großen Modellen reicht dann eine Beschreibung der Aufgabe ohne Beispiel („Zero shot Prompt“).
Ebenso hilft es oft, wenn man dem Modell beispielhaft einen Lösungsweg („Gedankenkette, Chain of thought prompting“) vorgibt. Die folgende Grafik zeigt als Beispiel einen Vergleich zwischen Standard-Prompting und Chain-of-thought-Prompting. Neue große Modelle kommen auch hier meist mit der reinen Anweisung aus, ohne Gedankenkette. Man sieht, mit dem Fortschritt der Sprachmodelle werden manche Techniken obsolet.
Weitere Quelle für Methoden und Techniken sind z. B.: https://www.promptingguide.ai oder https://platform.openai.com/docs/guides/prompt-engineering
Nach unseren Erfahrungen mit Prompts funktioniert es gut, den ersten Aufschlag für den Prompt durch eine KI erstellen zu lassen: hier als Eingabe kurz beschreiben, was den Prompt leisten soll, und dann ein Tool wie ChatGPT den Prompt erstellen lassen.
Wichtig ist, dass man sich möglichst genau, klar und konkret überlegt, welches Ergebnis man erwartet. Wenn dann doch etwas anderes herauskommt, stellt sich die Antwort der KI bei genauer Betrachtung oft als gute und direkte Umsetzung des Prompts heraus – nur den Prompt bildete leider unsere Anforderung nicht richtig ab. Man bekommt, was man spezifiziert, und nicht, was man haben will. Deshalb ist Testen und schrittweises Verbessern wichtig: Prompting ist ein iterativer Vorgang.
Prompts auf Englisch werden besser verstanden. Auf den Vorteil der englischen Sprache bin ich bei der Tokenisierung schon eingegangen. „Nicht“-Anweisungen im System-Prompt werden schlechter verstanden als positive Formulierungen des Erwünschten.
Retrieval-Augmented Generation (RAG) – Dynamische Wissensnutzung in Echtzeit
RAG bedeutet „Retrieval Augmented Generation“. Das native Sprachmodell erhält zusätzlich zur Frage ausgewählte Texte als „Kontextinformation“, die es zur Beantwortung heranziehen soll. Über den System-Prompt wird gesteuert, wie mit dem Material umgegangen wird.
Das Verfahren ist zweistufig. In der Indexierungsphase wird aus einem Datensatz ein Vektorindex erzeugt. In einem unserer Anwendungsfälle bei Projektron besteht der Datensatz aus ca. 2.500 HTML-Dokumenten der BCS-Softwarehilfe. In der Inferenzphase stellt der Nutzer seine Frage, diese wird in einen Abfragevektor umgewandelt, dazu werden dann passende Dokumente ermittelt (die Kontextinformationen). Frage, Systemprompt und Kontext werden ans Sprachmodell zur Verarbeitung übermittelt.
Das ist die Phase, in der die Nutzung stattfindet.
Indexierungsphase
Die Dokumente werden im ersten Schritt gesplittet. Hier gibt es verschiedene Methoden, z. B. Splits mit fixer Länge, Trennung bei bestimmten Formatierungszeichen wie doppelter Zeilenumbruch, oder nach Semantik.
Der in der Literatur empfohlene Textsplitter für allgemeinen Text ist „Rekursives Splitting nach Zeichen“. Der Splitter wird durch eine Liste von Zeichen parametrisiert, in der Voreinstellung [„\n\n“, „\n“, „ ‚, ‘“]. Der Splitter teilt den Text an den Trennzeichen der Liste auf, also zunächst bei doppelten Zeilenumbrüchen. Wenn daraus zu lange Splits resultieren, teilt der Splitter bei einfachen Zeilenumbrüchen. Dieser Prozess setzt sich so lange fort, bis die Stücke klein genug sind. Man möchte auf diese Weise Absätze, dann Sätze, dann Wörter zusammenhalten, da diese im Allgemeinen die semantisch zusammenhängenden Textstücke sind.
Nach unseren Erfahrungen ist die Methode nicht optimal geeignet für semantisch ähnliche, stark gegliederte und vorstrukturierte Texte wie z. B. eine Softwarehilfe. Vermutlich ist es dort am besten, einfach Splits konstanter Länge mit einer gewissen Überlappung zu erzeugen, wie die Grafik rechts zeigt.
Ein guter Überblick zu verschiedenen Splittingmethoden findet sich in der Quelle zum Bild.
Die Splits (auch „Chunks“ genannt) werden im zweiten Schritt „embedded“: Jedem Split wird ein Vektor zugeordnet, der die Semantik kodiert. Genutzt wird ein Text-Embedding wie text-embedding-ada-002 (von Open AI) oder BAAI/bge-m3 (lokal installierbar). Für das Embedding ist ein gutes Splitting entscheidend. Die Splits dürfen nicht zu lang sein, weil sich andernfalls kein trennscharfer Vektor zuordnen ließe. Sie dürfen auch nicht zu kurz sein, damit sich der Sinn vernünftig erfassen lässt.
Im dritten Schritt übernimmt die Vektordatenbank (z. B. FAISS) die Vektoren und baut daraus einen Vektorindex auf. Die Vektordatenbank ist darauf spezialisiert, zu einem Abfragevektor aus einer sehr großen Zahl von Vektoren eine vorgegebene Anzahl von nächsten Nachbarvektoren zu finden. Damit ist die erste Phase abgeschlossen.
Inferenzphase
Wenn der Nutzer eine Frage eingibt, wird diese vom gleichen Text-Embedding in einen Vektor umgewandelt. Die Vektordatenbank liefert die zu diesem Vektor am nächsten benachbarten Vektoren, die zu Textsplits gehören, die die gleiche Semantik wie die Frage haben. Diese Textsplits sollen also Informationen zur Beantwortung der Fragen enthalten. Sie werden zusammen mit der Frage und dem Systemprompt an das Sprachmodell zur Bearbeitung übergeben. Die Antwort wird dann an den Nutzer ausgegeben.
Hier ein Beispiel für eine KI-Anwendung, die Nutzerfragen auf Basis einer FAQ-Sammlung beantwortet:
Der Textkorpus besteht aus einigen hundert heterogenen FAQ-Dokumenten, verfasst von verschiedenen Autoren. Anders als bei den Hilfetexten gibt es keinen einheitlichen Stil. Die einzelnen FAQ wurden immer wieder ergänzt und sind gewachsen im Laufe der Zeit, wurden aber wenig konsolidiert. Manche Themen werden in mehreren FAQ behandelt.
Der Screenshot zeigt eine Nutzerfrage, die auf Basis von zwei FAQ beantwortet wird. Der Systemprompt enthält die Anweisung, die verwendeten Quellen am Ende des Textes anzuführen.
Das Ergebnis
Die Abfrage der FAQ ergibt gute und brauchbare Antworten, auch wenn die Fragen vom Wortlaut der Quellen abweichen, nur einen Teilaspekt der Antwort oder auch mehrere Retrievaltexte betreffen. | |
Die Antwort passt genau auf die Frage, man muss die Infos nicht aus dem Gesamttext extrahieren. | |
Die Reihenfolge der Instruktionen ist besser als im Original, und die Informationen sind besser strukturiert dargestellt. | |
Die Texte sind zudem besser formuliert. |
Als Sprachmodell wurde in diesem Versuch GPT4 verwendet.
Ein weiterer Vorteil ist, dass die Ausgabe auch in Fremdsprachen erfolgen kann, ohne dass eine Übersetzung erforderlich ist. Die Datenbasis ist einfach um neues Wissen erweiterbar.
Fazit: Potenzial und Vielseitigkeit von RAG für Projektron
Die positiven Erfahrungen mit der Retrieval-Augmented Generation (RAG) haben uns überzeugt, diese Methode in unserer ersten Hauptanwendung, der KI-Softwarehilfe, einzusetzen. Sobald die Technik in einer Anwendung erfolgreich funktioniert, lässt sie sich problemlos auf andere Bereiche wie Vertragsverhandlungen übertragen. Wichtig dabei ist, den passenden Datensatz zu erstellen und einen passenden System-Prompt zu entwickeln.
Weitere Details zur Entwicklung der Softwarehilfe und den zugrundeliegenden KI-Frameworks folgen in unserem nächsten Blogartikel. Zudem werden wir in einem kommenden Beitrag tiefer auf die RAG-Technik eingehen, da sie eine zentrale Rolle in unseren Applikationen spielt.
Projektron-KI: Erfahrungen bei der Entwicklung und Optimierung der Projektron BCS-Hilfe
Bei Projektron haben wir uns zum Ziel gesetzt, ein flexibles Framework zu entwickeln, das KI-basierte Funktionen in Projektron BCS nahtlos integriert. Im Zentrum steht eine Lösung, die lokal und datensicher betrieben werden kann, ohne auf externe Produkte angewiesen zu sein. Erfahren Sie in unserem Artikel, wie wir durch den Einsatz von Technologien wie RAG und Prompt Engineering eine präzise und zuverlässige KI-Erfahrung für unsere Kunden schaffen und welche konkreten Anwendungsmöglichkeiten bereits in der Pipeline sind.
Zum Artikel "Projektron und KI: Erfahrungen bei der Entwicklung der Projektron BCS-Hilfe"
Über den Autor
Dr. Marten Huisinga leitet die teknow GmbH, eine Plattform für Laser-Blechzuschnitte. Künftig sollen KI-Methoden das Angebot für Amateurkunden vereinfachen. Huisinga war einer der drei Gründer und bis 2015 Co-Geschäftsführer der Projektron GmbH, für die er heute beratend tätig ist. Als DPO ist er verantwortlich für die Umsetzung erster KI-Applikationen, um den Nutzen von KI für Projektron BCS und die Projektron GmbH zu beurteilen.
Weitere interessante Artikel im Projektron-Blog
Harvard-Konzept
Das Harvard-Konzept hilft Ihnen weiter und schafft Win-Win-Situationen in Verhandlungen - ganz gleich ob im beruflichen, geschäftlichen oder privaten Kontext. Erfahren Sie, wie die Verhandlungs-, Konfliktlösungs- und Konflikt-Management-Strategie funktioniert und wie Sie sie anwenden.
Projektzeiterfassung
Bei der Projektzeiterfassung geht es um die detaillierte Buchung von Zeiten für Projekttätigkeiten. Welche Vorteile bietet die projektspezifische Zeiterfassung? Was spricht gegen sie? 10 Tipps für die Einführung und 3 Best Practice Beispiele gibt es hier.
Scrum in der Softwareentwicklung
Geht es um agile Methoden der Softwareentwicklung, kommen Sie um einen Begriff nicht herum: Scrum. Was aber ist Scrum eigentlich und wie entfaltet es seine Stärken in der Softwareentwicklung?
Projektkommunikation
Ein Hauptgrund für das Scheitern von Projekten ist mangelnde Projektkommunikation – laut einer PMI-Studie ist Kommunikationsmanagement im Projekt genauso wichtig wie eine genaue Kostenabschätzung, eine klare Definition der Projektziele und eine gründliche Risikoanalyse. 3 Praxis-Tipps für Ihre Projektkommunikation!