Entwicklung generativer KI-Anwendungen mit
Im vorherigen Artikel dieser Reihe haben wir uns mit der Einbettungspipeline befasst, die die bevölkert
Hier werfen wir einen Blick auf die tatsächliche Interaktion mit dem LLM und untersuchen einige häufige Probleme, die zu schlechten Ergebnissen führen können: ungenaue Eingabeaufforderungen und unzureichende Generierungsansätze.
Selbst die besten Einbettungs- und Chunking-Strategien können das Bedürfnis nach Qualität nicht ersetzen
Insbesondere sollten Sie beim Erstellen Ihrer Eingabeaufforderungen für RAG-Anwendungen mehrere Dinge berücksichtigen. Diese beinhalten:
Teilen Sie dem LLM seine Rolle mit: Bei der Interaktion mit LLM-Agenten wie ChatGPT verhalten sich diese standardmäßig wie ein hilfreicher Chatbot. Sie können jedoch die Art der generierten Antworten ändern, indem Sie den LLM anweisen, auf eine bestimmte Weise zu handeln. Beispiele könnten Dinge sein wie „Sie sind ein Anwalt, der prüft, ob eine der Parteien gegen eine Vereinbarung verstößt“ oder „Sie sind ein Kundendienstmitarbeiter für einen Internetdienstanbieter; Ihre Aufgabe ist es, Menschen bei der Behebung ihrer Internetprobleme zu helfen“ oder was auch immer für Ihre spezielle Situation sinnvoll ist.
Weisen Sie den LLM ausdrücklich an, den bereitgestellten Kontext zu verwenden : Machen Sie dem LLM klar, dass Sie Kontext bereitstellen und dass die generierte Antwort diesen Kontext widerspiegeln soll. Sie können dies tun, indem Sie etwas sagen wie „Ihre Antwort sollte den folgenden Kontext berücksichtigen“, gefolgt vom Kontext. Anwendungsbeispiele: In dem gerade erwähnten Szenario, in dem der LLM gebeten wird, als Anwalt bei der Bewertung von Verträgen zu fungieren, möchten Sie möglicherweise mehrere Beispiele in die Aufforderung aufnehmen. Sie könnten beispielsweise ein Beispiel für einen Vertrag angeben, der besagt, dass die Zahlung innerhalb von 30 Tagen fällig ist, der Käufer seine Zahlung jedoch erst 40 Tage nach Vertragsunterzeichnung geleistet hat und somit gegen die Vereinbarung verstoßen hat. Sie könnten zusätzliche Beispiele für Rechtsbehelfe und mögliche Wege zur Lösung von Vertragsverletzungen nennen.
Geben Sie das Ausgabeformat an: Wenn Ihr Anwendungsfall eine bestimmte Ausgabe erfordert, können Sie das Format angeben, dem die generierte Ausgabe entsprechen soll. Sie können diese Technik mit dem obigen Tipp kombinieren, um dem LLM anhand von Beispielen deutlich zu machen, wie er reagieren soll und welche Kerninformationen Sie in der generierten Antwort erwarten.
Verwenden Sie die Gedankenkette : Für Anwendungsfälle, bei denen es auf Argumentation ankommt, um die geeignete Antwort zu bestimmen, können Sie die Verwendung einer Technik namens Gedankenkette in Betracht ziehen, um die Schritte zu erklären, die das LLM befolgen soll, um zu einer generierten Antwort zu gelangen. Im Fall von Rechtsverträgen möchten Sie beispielsweise das LLM durch die logischen Schritte führen, die eine Person befolgen würde, um festzustellen, ob eine Vertragsbedingung verletzt wurde. Wenn Sie sich beispielsweise mit rechtlichen Verträgen befassen, können Sie das LLM anweisen, zunächst nach Klauseln zu suchen, die Zahlungsbedingungen festlegen, dann die Zeitspanne zu ermitteln, die der Käufer für die Zahlung hatte, und dann die Anzahl der Tage zwischen dem Zeitpunkt des Zahlungseingangs und dem Zeitpunkt zu berechnen Datum der Vertragsunterzeichnung. Wenn die Zahlung dann länger als die vereinbarte Frist dauerte, verstieß der Käufer gegen die Vereinbarung.
Der Einsatz dieser Techniken zur Verbesserung Ihres Prompt-Engineerings kann erhebliche Auswirkungen auf die Qualität der generierten Ergebnisse haben, die Sie in Ihren RAG-Anwendungen erzielen können. Manchmal müssen Sie jedoch Techniken verwenden, die mehrere Austausche mit dem LLM erfordern, um eine akzeptable Antwort zu erzielen.
Vorausschauendes aktives Abrufen, bzw
Ein Beispiel für die Funktionsweise von FLARE finden Sie im LangChain-Kochbuchbeispiel von FLARE .
Indem wir ähnliche Abfragen wie die Abfrage des Benutzers generieren und relevanten Kontext sowohl für die ursprüngliche Abfrage als auch für die generierten ähnlichen Abfragen abrufen, können wir die Wahrscheinlichkeit erhöhen, dass wir den nützlichsten Kontext ausgewählt haben, um genaue Ergebnisse zu generieren. Der als „RAG-Fusion“ bezeichnete Prozess sieht folgendermaßen aus:
Der entscheidende Schritt besteht darin, eine reziproke Rangfunktion zu verwenden, um die ANN-Ergebnisse weiter zu verfeinern und den relevantesten Kontext für die Generierung einer Antwort zu identifizieren.
RAG ist ein Ansatz, mit dem man leicht anfangen kann, der Entwickler jedoch aus unklaren Gründen oft mit unbefriedigenden Ergebnissen frustriert. Die Relevanz der Ergebnisse in RAG-fähigen generativen KI-Anwendungen kann durch mehrere Faktoren beeinflusst werden. Durch die sorgfältige Auswahl von Einbettungsmodellen, die Formulierung von Chunking-Strategien und die Gestaltung von Eingabeaufforderungen können Sie die Qualität und Präzision der generierten Antworten in Systemen, die auf LLMs wie ChatGPT basieren, erheblich steigern. Hoffentlich helfen Ihnen diese Tipps dabei, nützlichere RAG-Anwendungen zu erstellen, die das Erlebnis und den Wert bieten, den Sie anstreben.
Von Chris Latimer, DataStax
Erscheint auch hier .