Erweitere das Wissen deines LLMs mit RAG


Thanh Long Phan, Fabian Dechent


Large Language Models (LLMs) haben aufgrund ihrer bemerkenswerten, menschenähnlichen Fähigkeit, Texte zu verstehen und zu generieren, rasch an Popularität gewonnen. Trotz der großen Fortschritte gibt es auf dem Weg zu wirklich zuverlässigen Assistenten noch einige Herausforderungen zu bewältigen.

LLMs sind dafür bekannt, dass sie Antworten erfinden und oft Texte produzieren, die dem erwarteten Antwortstil entsprechen, denen es aber an Genauigkeit oder sachlicher Grundlage fehlt. Die generierten Wörter und Phrasen werden so ausgewählt, dass sie mit hoher Wahrscheinlichkeit auf einen früheren Text folgen. Die Wahrscheinlichkeit wird so angepasst, dass sie dem Trainingskorpus so gut wie möglich entspricht.

Dadurch besteht die Möglichkeit, dass eine Information veraltet ist, wenn der Korpus nicht aktualisiert und das Modell neu trainiert wird. Oder dass sie einfach sachlich falsch ist, während die generierten Wörter zwar richtig klingen und dem gewünschten Genre zugeordnet werden können. Das Kernproblem dabei ist, dass das LLM nicht weiß, was es nicht weiß.

Und selbst wenn eine Information korrekt ist, ist es schwierig, ihre Quelle zu finden, um eine Überprüfung der Fakten zu ermöglichen.

In diesem Artikel stellen wir RAG (Retrieval-Augmented Generation) als eine Methode vor, die beide Probleme angeht und die darauf abzielt, die Zuverlässigkeit und Genauigkeit der von LLMs generierten Informationen zu verbessern.


Was ist RAG ?


Im Jahr 2020 hat Meta einen Ansatz entwickelt, der als "retrieval-augmented generation" (RAG) bezeichnet wird und LLMs den Zugang zu Informationen ermöglicht, die über ihre Trainingsdaten hinausgehen.

Wie der Name bereits andeutet, besteht RAG aus zwei Phasen, einer Retrieval- und einer Generierungsphase.

Retrievalphase - In dieser Phase sucht der Algorithmus nach Informationsstücken, die für die Benutzeranfrage relevant sind. Es ist gängige Praxis, Dokumente in kleinere Teile zu zerlegen. Ein Embedding-Modell - in der Regel ein BERT-Modell - berechnet dann einen Embedding-Vektor für jeden Teil, und diese Daten werden in einer Vektordatenbank gespeichert. Die relevanten Informationsstücke können dann mithilfe einer semantischen Suche gefunden werden.

Generative Phase - Ausgehend von den abgerufenen Informationen und der Benutzeranfrage wird nun ein LLM verwendet, um eine passende Antwort zu generieren. Durch Prompt-Engineering und Fine-Tuning ist es möglich, die Fakten innerhalb der LLM-Antwort auf Informationen aus der Datenbank zu beschränken. Als Bonus kann neben der Antwort auch das Quelldokument angegeben werden.

In Fällen, in denen die Frage nicht allein mit den verfügbaren Informationen beantwortet werden kann, hat das LLM die Möglichkeit, seine Limitierung anzuerkennen und mitzuteilen, dass es keine Antwort auf der Grundlage der bereitgestellten Informationen generieren kann.


Anwendung


Heutige Chatbots, die mit LLMs gebaut werden, können Nutzern personalisierte Antworten geben. RAG stellt das auf eine neue Stufe, indem es die sachliche Korrektheit durch die Einbindung aktueller Quellen erhöht. Fügen Sie einfach die neuen Dokumente zur Datenbank hinzu.

Eine andere Art von Anwendung, die sich auf das Abrufen von Informationen zur Kontexterweiterung stützt, sind LLM-gestützte Agenten. Sie sind darauf ausgelegt, mehrstufige Probleme zu lösen und verfügen über ein Gedächtnis, komplexe Logikfähigkeiten sowie die Möglichkeit, auf das Internet und verschiedene andere Tools zuzugreifen.

Natürlich kann ein Agent auch chatten.


Grenzen von RAG


Nicht immer werden die relevanten Dokumente gefunden - Damit RAG funktioniert, muss die Suchmethode gut genug sein. Dies steht und fällt mit der Erstellung einer guten Einbettung Ihrer Dokumente sowie der Suche nach Phrasen, die dem in den Dokumenten verwendeten Wortlaut ausreichend ähnlich sind. Wenn die relevanten Informationen nicht gefunden werden, funktioniert die Methode nicht.

Es verlängert die Bearbeitungszeit - Abhängig von der Art der Datenbank und der Größe des LLM kann der Prozess langsam sein. Bevor alle gefundenen Daten an das LLM weitergegeben werden, kann das LLM eine Zusammenfassung der Daten vornehmen oder die gefundenen Daten können neu geordnet werden. Es können aber auch zusätzliche Umformungen auf die Eingabeabfrage selbst angewendet werden.

Genaue Antwort - Die Größe des Kontextes, der für eine gegebene Antwort berücksichtigt wird, ist begrenzt und daher muss besonders darauf geachtet werden, ihn so klein wie möglich und gleichzeitig so groß wie nötig zu gestalten. Manchmal ist das Kontextfenster einfach zu klein, um alle relevanten Informationen zu speichern, aber unterhalb dieser Schwelle ist das Gleichgewicht empfindlich. Hier ist die Größe der einzelnen Informationsstücke entscheidend. Wird sie zu stark reduziert und zu feinkörnig, besteht die Gefahr, dass die Kohärenz des Textes verloren geht, was zu einem fragmentierten Verständnis führt. In solchen Fällen versteht das Modell zwar einzelne Teile, hat aber Schwierigkeiten, das Dokument als Ganzes zu erfassen. Wenn die Stücke zu groß sind, passen möglicherweise nicht alle abgerufenen Teile in den Kontext.

Außerdem werden möglicherweise falsche Teile gefunden. Vor allem bei Anfragen, die mehrere thematisch getrennte Komponenten enthalten, können weniger ausgefeilte Retrievalmethoden möglicherweise nicht alle relevanten Teilstücke finden.

Eine weitere Herausforderung ist die Leistung des Modells; wenn es sich als unzureichend erweist, kann ein größeres, fortschrittlicheres Modell für eine besseres Ergebnis erforderlich sein.


Wie kann RAG verbessert werden ?


Verbesserung des Retrievals - Wie wir bereits erwähnt haben, ist ein guter Retriever die wichtigste Komponente, damit RAG funktioniert.

Um sicherzustellen, dass das Retrieval relevante Informationen für die größtmögliche Anzahl möglicher Nutzeranfragen liefert, kann es hilfreich sein, das Embedding-Modell auf Ihre persönlichen Daten abzustimmen. Außerdem müssen wichtige Parameter wie die Größe der Fragmente und die Anzahl der zurückgegebenen Fragmente optimiert werden. Eine weitere Option ist die Anwendung von Metadatenfiltern, um z. B. die neuesten Dokumente zu priorisieren.

Die Anfrage kann auch vorverarbeitet werden, indem sie in thematisch getrennte Teilanfragen zerlegt oder mehrere Paraphrasen erstellt werden, die dann dem semantischen Suchalgorithmus zugeführt werden.

Bereinigung der Daten - Ähnlich wie bei anderen Aufgaben des Machine Learnings und der Data Science ist die Qualität der Datenbank entscheidend. Selbst wenn die Informationen aus vertrauenswürdigen Quellen stammen, können sie irrelevanten und irreführenden Text enthalten, z. B. HTML-Tags; in solchen Fällen kann eine Vorverarbeitung zur Entfernung des Rauschens erforderlich sein.

Besteht die Datenbank aus einer großen Anzahl von Dokumenten aus verschiedenen Themenbereichen (z. B. Naturwissenschaften, Geschichte, Literatur usw.), kann es sinnvoll sein, mehrere thematische Datenbanken anzulegen, aus denen man selektiv Dokumente abrufen kann.

Bei der Vorverarbeitung könnte man einen Schritt weiter gehen und vorab Zusammenfassungen von Dokumenten erstellen und speichern. Beim Retrieval wird der Prozess zunächst über diese Zusammenfassungen ausgeführt, bevor später auf die Details eingegangen wird.


Further Reading


  • Bringe dem LLM bei den Kontext eigenständig anzufordern mit Self-RAG

  • Vergrößere das Kontextfenster mit YaRN

  • Wie gut ist RAG im Vergleich zur Erweiterung des Kontextfensters ? (Link)