Die Antwortgenerierung ist die Komponente einer RAG-Lösung, die eine Antwort auf die Anfrage eines Benutzers unter Verwendung der Informationen erstellt, die aus den angestrebten Unternehmensdatenquellen oder dem Textkorpus abgerufen wurden.
Die Zahlen hinter den Namen der Open-Source-LLMs bezeichnen die Parameter des Modells. Beispielsweise ist Granite 3.0 8B Instruct ein Modell mit 8B-Parametern. Denken Sie an die Parameter als die Dirigenten, die steuern, wie das Modell die Eingabe manipuliert und versteht und Ausgaben erzeugt. Sie könnten sich als Gewichtungen oder Verzerrungen manifestieren und die Bedeutung bestimmter Eingabemerkmale für die generierte Ausgabe beeinflussen.
Eine größere Parameteranzahl entspricht im Allgemeinen einem Modell mit erhöhter Komplexität und Anpassungsfähigkeit (obwohl dies nicht unbedingt auf verschiedene Architekturen zutrifft, im Allgemeinen innerhalb einer Transformer-Architektur). Ein großes Sprachmodell mit einer höheren Parameteranzahl kann aus den Daten komplexere Muster erkennen und so den Weg für reichhaltigere und präzisere Ausgaben ebnen. Aber wie bei vielen Dingen im Leben gibt es auch hier einen Kompromiss. Ein Anstieg der Parameter bedeutet höhere Rechenanforderungen, einen größeren Speicherbedarf und das Risiko einer Überanpassung.
Der Chat-Modus ist für Gesprächskontexte konzipiert, während der Anweisungsmodus für Aufgaben der Verarbeitung natürlicher Sprache in spezifischen Bereichen entwickelt wurde.
Die Feinabstimmung im Chat-Modus hilft dem LLM dabei, natürliche und kohärente Antworten zu generieren, die für den Benutzer relevant und ansprechend sind. Die Feinabstimmung im Anweisungsmodus hilft dem LLM, verschiedene Arten von Anweisungen besser zu befolgen und Ausgaben zu generieren, die genau und für die Aufgabe geeignet sind.
LLMs bieten eine Handvoll Einstellungen, um zu „konfigurieren“, wie Antworten generiert werden.
Zunächst einmal wollen wir uns mit Prompt-Regeln befassen, um die Leistung der Generierung von vornherein zu verbessern.
Beginnen Sie nicht damit, einen sehr langen Prompt zu schreiben und diesen erst anschließend zu testen.
Beginnen Sie beispielsweise nicht mit einem langen Prompt wie:
- Sie arbeiten in der Finanzabteilung eines großen Elektronikunternehmens in der S&P 1000. Sie müssen die Protokolle der vierteljährlichen Aktionärsversammlungen zusammenfassen, um die wichtigsten Themen, Trends und Stimmungen zu ermitteln.
Antworten Sie in einem numerischen Listenformat mit Aufzählungszeichen.
Stellen Sie sicher, dass jeder Satz ein vollständiger Satz ist.
Halluzinieren Sie nicht. Beantworten Sie die Fragen ausschließlich mit Informationen aus dem Protokoll.
Hier ist das Transkript in Kurzform:
Fangen Sie hier an:
- Fassen Sie die wichtigsten Themen aus dem folgenden Besprechungsprotokoll zusammen:
Nehmen Sie keine großen Änderungen an den Modellparametern vor.
In den meisten Fällen:
Wenden Sie die besten technischen Prinzipien an:
Versuchen Sie, Ihren Prompt zu unterbrechen. Testen Sie Ihren Prompt nicht ein einziges Mal und behaupten Sie, er sei erfolgreich. Führen Sie Dutzende von Tests mit Ihrem Prompt durch.
Erstellen Sie einen Testdatensatz und fügen Sie fortlaufend Ihre Beispiele hinzu. Testen Sie nach jeder POC-Veröffentlichung erneut, um sicherzustellen, dass Ihr Prompt weiterhin funktioniert.
Kein Problem, mehrere Prompts werden parallel mit watsonx.ai verarbeitet
Teilen Sie Aufgaben in kleinere Unteraufgaben auf.
Trennen Sie jeden Schritt des Prozesses über mehrere Prompts und ihr spezielles Modell.
Chatmodelle erfordern ein anderes Prompt-Design als Anweisungsmodelle.
Im Ernst, wir lernen genauso viel vom Spielen wie von der Arbeit. Probieren Sie die neuesten LLM-Programme aus und stellen Sie sich den Herausforderungen mit Aufgaben außerhalb Ihres normalen Arbeitsalltags.
Wählen Sie etwas, das das LLM wahrscheinlich leisten könnte.
Fügen Sie mehrstufige Interaktionen hinzu, um mit der Verkettung Ihrer Aufforderungen zu experimentieren.
Die Bearbeitung der Systemaufforderung ist ebenso wichtig wie die Bearbeitung der Benutzeraufforderung. Die Systemaufforderung kann einen großen Unterschied in der Qualität der Antwort, dem Tonfall usw. ausmachen. Systemaufforderungen legen den Kontext für die Interaktion fest, steuern das Verhalten des Modells und gewährleisten Konsistenz, während Benutzeraufforderungen den spezifischen Inhalt des Gesprächs bestimmen. Es ist wichtig, dass Sie die Systemaufforderungen bearbeiten können, um die Leistung zu verbessern.
Systemaufforderungen liefern die zugrundeliegenden Anweisungen, die das Verhalten der KI während der gesamten Interaktion steuern. Sie legen die Rolle, den Tonfall und die Grenzen des Modells fest. Die Verwendung von Begrenzungszeichen kann dem Modell helfen und Prompt-Injektionen vermeiden. Trennzeichen geben an, wo im Prompt die Benutzereingabe eingefügt wird, was dem Modell hilft zu erkennen, wo die Benutzereingabe beginnt und endet. Begrenzer helfen auch dabei, Prompt-Injektionen zu vermeiden. Als Trennzeichen können beispielsweise folgende verwendet werden: ``**, **”””**, **< >**, ** `.
Hier ist ein Beispiel für eine Systemaufforderung für das Granite-Modell:
<|system|>\nDu bist Granite Chat, ein von IBM entwickeltes KI-Sprachmodell. Du bist ein vorsichtiger Assistent. Du befolgst die Anweisungen sorgfältig. Du bist hilfsbereit und harmlos, hältst dich an ethische Richtlinien und förderst positives Verhalten. Du antwortest immer auf Begrüßungen (zum Beispiel Hallo, Guten Tag, Morgen, Nachmittag, Abend, Nacht, Wie gehts, Schön, dich zu treffen usw.) mit „Hallo! Ich bin Granite Chat, entwickelt von IBM. Wie kann ich Ihnen heute helfen?“ Bitte sag nichts weiter und beginne kein Gespräch. {instruction}\n{session_history}<|user|>\n{query}\n<|assistant|>\n
Benutzeraufforderungen sind die spezifischen Anweisungen oder Anfragen des Benutzers, um die gewünschte Antwort vom Modell zu erhalten. Sie sollten klar und prägnant sein, um sicherzustellen, dass das Modell die Aufgabe versteht.
Prompt Lab ist eine IBM Plattform, mit der Sie mit Foundation Models arbeiten und Prompts mit Hilfe von Prompt Engineering erstellen können. Im Prompt Lab können Nutzer im Prompt-Editor mit Foundation-Modellen im Modus Chat, Freeform oder Structured interagieren. Diese vielfältigen Optionen ermöglichen es Ihnen, die besten Modellkonfigurationen zu erstellen, um eine Reihe von Aufgaben im Stil Verarbeitung natürlicher Sprache zu unterstützen, darunter Fragestellung, Inhaltserstellung und -zusammenfassung, Textklassifikation und -extraktion.
Für Informationen zum Einstieg und alles Weitere zu Prompt Lab siehe bitte die offizielle Prompt Lab-Website
Eine neue Strategie zur Verbesserung der Genauigkeit einer RAG-Lösung besteht darin, ein Generationsmodell zu verwenden, das auf den Datenkorpus abgestimmt ist. Dies kann aus mehreren Gründen zu einer Verbesserung der End-to-End-Genauigkeit führen. Die bedeutendste Verbesserung ergibt sich aus der Fähigkeit der Generierungsphase, die Abrufergebnisse zu verbessern und sogar zu korrigieren. Es kann auch unternehmensspezifischere und relevantere Antworten liefern, da es auf Ihre unternehmensspezifischen Geschäftsinhalte abgestimmt werden kann.
Informationen zum Einstieg und zu allen weiteren Aspekten von InstructLab finden Sie im offiziellen InstructLab Repository.
Granite 3.0 umfasst eine Reihe von Modellen, wie den Granite 3.0 8B Instruct, 2B Instruct, 8B Base und 2B Base, die auf über 12 Billionen Token in 12 natürlichen Sprachen und 116 Programmiersprachen trainiert wurden. Diese Modelle erreichen oder übertreffen in akademischen und unternehmensinternen Benchmarks die Leistung ähnlich großer Modelle führender Anbieter und zeigen eine starke Performance bei Aufgaben wie Sprachverständnis, Codegenerierung und Dokumentenzusammenfassung.
Transparenz und Sicherheit
IBMs Engagement für Transparenz und Sicherheit zeigt sich in der detaillierten Offenlegung der Trainingsdatensätze, Filter- und Kurationsprozesse im technischen Bericht zu Granite 3.0. Die Modelle werden unter der freizügigen Apache 2.0-Lizenz veröffentlicht, was Flexibilität und Autonomie für Unternehmenskunden und die breitere KI-Community gewährleistet. Darüber hinaus bieten die Granite Guardian 3.0-Modelle umfassende Funktionen zur Erkennung von Risiken und Schäden und übertreffen damit andere Sicherheitsmodelle auf dem Markt.
Effizienz und Kosteneffektivität
Granite 3.0-Modelle sind kosteneffizient und ermöglichen es Unternehmen, eine Frontier-Modellleistung zu einem Bruchteil der Kosten zu erreichen. Der Einsatz von InstructLab, einem kollaborativen Open-Source-Ansatz, ermöglicht die Feinabstimmung kleinerer Modelle auf spezifische Aufgaben, wodurch die Kosten im Vergleich zu größeren Modellen um das 3- bis 23-fache gesenkt werden. Die Mixture of Experts (MoE)-Architekturmodelle, wie das Granite 3.0 3B-A800M und 1B-A400M, bieten eine hohe Inferenzeffizienz mit minimalen Leistungskompromissen und sind damit ideal für Anwendungen mit geringer Latenz und CPU-basierte Bereitstellungen.
Multimodale Funktionen und zukünftige Updates
Bis Ende 2024 werden die Granite 3.0-Modelle voraussichtlich ein erweitertes 128K-Kontextfenster und multimodale Funktionen zum Verstehen von Dokumenten unterstützen, einschließlich Bildeingabe- und Textausgabeaufgaben. Diese Erweiterung wird ihren Nutzen in verschiedenen Unternehmensanwendungen weiter steigern.
Ökosystemintegration
Die Granite 3.0-Modelle sind über mehrere Plattformen erhältlich, darunter IBMs watsonx.ai, Hugging Face, Google Clouds Vertex KI, NVIDIA NIM Microservices, Ollama und Replicate, bieten Entwicklern eine breite Palette an Bereitstellung und sorgen für eine nahtlose Integration in bestehende Workflows. Zusammenfassend bieten IBMs Granite 3.0-Modelle eine leistungsstarke, transparente und kosteneffiziente Lösung für Unternehmens-KI, die modernste Leistung mit robusten Sicherheitsfunktionen und umfassender Ökosystemunterstützung kombiniert.
Für Informationen zum Einstieg und zu allem anderen rund um Granite siehe bitte die offizielle Granite-Website
Der Inhalt und die Struktur der an LLMs eingereichten Prompts können die Qualität und Genauigkeit der generierten Antworten stark beeinflussen.
Prompts können in sechs Haupttypen unterteilt werden:
Suchanfragen, die nur aus Schlüsselwörtern bestehen, sind selbsterklärend; es handelt sich um Anfragen, die aus Schlüsselwörtern zusammengesetzt sind, die sich auf das jeweilige Thema beziehen. Zum Beispiel der Prompt:
Was ist die optimale Backzeit für einen Schokoladenkuchen in großer Höhe
lässt sich auf die folgenden Schlüsselwörter reduzieren:
Backzeit Schokoladenkuchen in großer Höhe
Aufforderungen, die nur auf Schlüsselwörter abzielen, führen in der Regel zu umfassenderen, stärker themenbezogenen Antworten mit hoher Relevanz für den abgerufenen Zusatztext. Dies kann ein erwünschter Effekt sein für eine Lösung, die umfassende, informative Antworten erfordert, wie beispielsweise ein Chatbot für einen Telefonassistenten. Bei Lösungen, die prägnante, dialogorientierte Antworten erfordern, kann dies jedoch zu einer zu großen Informationsmenge führen.
Vergleichende Prompts bitten das LLM, Vergleiche zwischen einem oder mehreren Themen oder Konzepten im Prompt anzustellen. Einige Beispiele:
Was ist der Unterschied zwischen einer Regel und einer Rollenzuweisung?
Vergleichende Prompts können nützlich sein, wenn das Generierungsmodell und das unterstützende Korpus Informationen zu allen Konzepten sowie offensichtliche Dimensionen oder unterstützendes Material enthalten, wie die Konzepte sinnvoll verglichen werden können. Ohne diese wird ein vergleichender Prompt wahrscheinlich eine sinnlose oder ineffektive Antwort hervorrufen.
Aggregierte Abfragen fordern das Modell auf, zwei oder mehr Konzepte oder Anfragen in einer einzigen Abfrage zusammenzufassen. Einige Beispiele:
Wie erstelle ich eine Berechtigung und eine Berechtigungsgruppe?
Zusammengefasste Aufgabenstellungen sind für LLMs im Allgemeinen schwieriger, da die Fragestellung eine inhärente Mehrdeutigkeit aufweist.
Um diese Mehrdeutigkeit zu beheben, wird allgemein empfohlen, aggregierte Prompts in mehrere einzelne Themenprompts aufzuteilen oder zusätzlichen Kontext bereitzustellen, der die gewünschte Antwort explizit beschreibt.
Ein mehrdeutiger Prompt kann auf mehrere Arten interpretiert werden. Einige Beispiele:
Was ist eine Rolle?
Dieser Prompt könnte Antworten zu Rollen im Kontext der Schauspielerei und einer anschließenden Diskussion über berühmte Schauspieler und ihre Rollen, Rollen im Kontext einer IT-Sicherheitslösung oder Rollen im Kontext eines Unternehmens hervorrufen. Aufgrund der Unsicherheit, die sie mit sich bringen, sind mehrdeutige Prompts für die meisten Lösungen eine schlechte Wahl. Sie sollten überarbeitet werden, um zusätzliche Details und Kontext hinzuzufügen und das LLM auf das gewünschte Thema zu fokussieren.
Im Kontext einer RAG-Lösung ist ein abweichender Prompt einer, für den keine Antwort im Korpus der unterstützenden Dokumente vorliegt. Dies kann zu halluzinatorischen/improvisierten Antworten führen, die auf dem im LLM enthaltenen Wissen basieren, oder zu irrelevanten Antworten, die auf schlecht relevanten Ergebnissen aus dem Korpus beruhen.
Es kann zwar unmöglich sein, sich in allen Anwendungsfällen vor abweichenden Antworten zu schützen (z. B. einem Chatbot), aber Lösungsentwickler können sie minimieren, indem sie die Eingaben durch Auswahllisten einschränken, z. B. „Ich kann Ihnen helfen bei …“, gefolgt von einer Reihe vordefinierter Themenbuttons, oder indem Benutzer durch beschreibende oder direktive Sprache in Benutzerhinweisen und Musterantworten zu sicheren Antworten „angestupst“ werden.
Indirekte Prompts sind Prompts, deren Schlüsselwörter nicht direkt im Korpus enthalten sind, es aber Synonyme gibt. Indirekte Prompts sind eine Herausforderung für Lösungsentwickler, da ihre Zuverlässigkeit davon abhängt, wie viele Synonyme es für die Prompt-Schlüsselwörter gibt und wie die Synonyme zu einer eindeutigen Abfrage führen.
Entwicklern wird empfohlen, einen Blacklisting-Abfragefiltermechanismus zu implementieren, um den Schlüsselwörtern eindeutige Details hinzuzufügen oder „problematische“ Schlüsselwörter durch eindeutige Synonyme oder Phrasen zu ersetzen.
Obwohl die Erstellung „guter“ Prompts ebenso eine Kunst wie eine Wissenschaft ist, gibt es eine Reihe anerkannter Praktiken, die zu besseren Prompts und damit besseren Ergebnissen führen.
Ein guter Prompt ist:
Relevant für die Zieldomäne und enthält genügend Details und Kontext, um den Inhalt und den Ton des gewünschten Outputs klar und spezifisch zu machen.
Auf die Zielgruppe zugeschnitten. Eine Antwort, die für einen Finanzanalysten in einem Unternehmen bestimmt ist, wird einen ganz anderen Ton, eine andere Struktur und einen anderen Inhalt haben als eine Antwort für einen Privatkunden im Bankwesen. Ein guter Prompt enthält Anweisungen („Du bist ein Finanzanalyst im mittleren Management. Erstelle einen Bericht …“) oder eine klare Angabe der Zielgruppe („… geschrieben für einen Privatkunden im Bankwesen, der keine Kenntnisse der Finanzterminologie hat“) für die Antwort.
Für einen bestimmten Anwendungsfall entwickelt. Ein guter Prompt sollte auf einen konkreten Anwendungsfall zugeschnitten sein und Angaben darüber enthalten, wo und wie die generierte Antwort verwendet wird („… die Antwort wird in einer Reiseindustrie-Branchenmagazin für Reiseveranstalter veröffentlicht“); dies wiederum beeinflusst den Ton, die Sprache und den Stil der generierten Antwort.
Vicky Kuo, Chris Kirby, Luke Major, Atin Chandel, Brant Li, Evan Wheldon
Aktualisiert: 15. November 2024