Guten Morgen zusammen! Ich bin Louis-Francois, Mitbegründer und CTO von Towards AI, und heute werden wir uns mit dem wahrscheinlich besten Retrieval-Augmented Generation (RAG)-Stack beschäftigen, der heute verfügbar ist - dank der großartigen Forschung von Wang et al. (2024). Diese Forschung bietet eine großartige Gelegenheit zum Aufbau optimaler RAG Das System bietet wertvolle Einblicke, und ich bin hier, um die Geheimnisse zu lüften.
Was macht also ein wirklich erstklassiges RAG-System aus? Natürlich seine Komponenten! Werfen wir einen Blick auf diese besten Komponenten und ihre Funktionsweise, damit auch Sie ein erstklassiges RAG-System aufbauen können, mit einem multimodalen Ei am Ende.
Klassifizierung der Anfrage
Klassifizierung von Abfragen
Beginnen wir mit der Klassifizierung der Anfrage Start. Nicht alle Abfragen müssen abgerufen werden - denn manchmal kennt das große Sprachmodell die Antwort bereits. Wenn Sie zum Beispiel fragen: "Wer ist Lionel Messi?" kann Ihnen das große Sprachmodell bereits antworten, ohne dass Sie es abrufen müssen!
Wang et al. erstellten 15 Aufgabenkategorien, um festzustellen, ob eine Anfrage genügend Informationen liefert oder abgerufen werden muss. Sie trainierten einen binären Klassifikator, um zwischen den Aufgaben zu unterscheiden, wobei Aufgaben, die als "ausreichend" gekennzeichnet sind, nicht abgerufen werden müssen, und solche, die als "unzureichend" gekennzeichnet sind, abgerufen werden müssen. In diesem Bild bedeutet gelb, dass kein Abruf erforderlich ist, und rot, dass einige Dokumente abgerufen werden müssen!
chunking
Chunking
Nächste. chunking. Die Herausforderung besteht darin, die optimale Chunk-Größe für Ihre Daten zu finden. Zu lang? Sie fügen unnötiges Rauschen und Kosten hinzu. Zu kurz? Ihnen entgehen kontextbezogene Informationen.
Wang et al. fanden heraus, dass Chunk-Größen zwischen 256 und 512 Token Zwischen funktioniert am besten. Aber denken Sie daran, dass dies von der Art der Daten abhängt - führen Sie also unbedingt eine Bewertung durch! PRO TIPP: Verwenden Sie die klein2groß(bei der Suche mit kleinen Brocken beginnen, bei der Generierung dann größere Brocken verwenden), oder versuchen Sie die Schiebefenster um Token zwischen Chunks zu überlappen.
Metadaten und hybride Suche
Metadaten und hybride Suche
Nutzen Sie Ihre Metadaten! Fügen Sie Titel, Schlüsselwörter und sogar hypothetische Fragen hinzu. Arbeiten Sie dann mit dem Hybride Suchedas die Vektorsuche (für den semantischen Abgleich) mit der klassischen BM25 Stichwortsuche wird Ihr System hervorragend funktionieren.
HyDE (Generierung von Pseudodokumenten zur Verbesserung der Suche) ist cool und liefert bessere Ergebnisse, ist aber extrem ineffizient. Bleiben Sie vorerst bei der hybriden Suche - sie bietet einen besseren Leistungsausgleich und eignet sich besonders gut für das Prototyping.
Modelle einbetten
Einbettungsmodell
Die Auswahl des richtigen Modelle einbetten Es ist wie bei der Suche nach dem richtigen Paar Schuhe. Du würdest auch keine Fußballschuhe zum Tennisspielen tragen.FlagEmbedding's LLM-Embedder Die beste Passform in dieser Studie - eine gute Balance zwischen Leistung und Größe. Nicht zu groß und nicht zu klein - genau richtig.
Beachten Sie, dass sie nur das Open-Source-Modell getestet haben, so dass die Cohere und die Modelle von OpenAI werden nicht berücksichtigt. Ansonsten ist Cohere wahrscheinlich die beste Wahl.
Vektordatenbank
Vektor-Datenbank
Nun zur Datenbank. Für den langfristigen Einsatz ist dieMilvus ist die Vektordatenbank ihrer Wahl. Sie ist quelloffen, zuverlässig und eine ausgezeichnete Wahl für ein reibungslos funktionierendes Retrievalsystem. Ich habe in der Beschreibung unten auch Links angegeben.
Abfrage-Konvertierung
Umwandlung von Abfragen
Vor dem Abruf müssen Sie zunächst Umwandlungen Anfrage des Nutzers! Entweder über die Abfrage umschreiben um die Übersichtlichkeit zu verbessern, oder Zerlegung der Abfrage Die Zerlegung komplexer Probleme in kleinere und die Abfrage jedes Teilproblems oder sogar die Erstellung von Pseudodokumenten (z. B. HyDE Dieser Schritt ist entscheidend für die Verbesserung der Genauigkeit. Denken Sie daran, dass mehr Konvertierungen die Latenzzeit erhöhen, insbesondere bei HyDE.
Umstrukturierung
Neueinstufung
Und jetzt lassen Sie uns reden. Umstrukturierung. Nachdem Sie die Dokumente abgerufen haben, müssen Sie sicherstellen, dass die relevantesten Dokumente ganz oben stehen, und hier kommt die Neuordnung ins Spiel.
In dieser Studie.monoT5 ist die beste Option zwischen Leistung und Effizienz. Sie nimmt eine Feinabstimmung des T5-Modells vor, indem sie die Dokumente auf der Grundlage ihrer Relevanz für die Abfrage neu ordnet und sicherstellt, dass die besten Treffer zuerst angezeigt werden.RankLLaMA Beste Gesamtleistung, aber TILDEv2 Die schnellste Geschwindigkeit. Wenn Sie daran interessiert sind, finden Sie in der Zeitung weitere Informationen dazu.
Umpacken von Dokumenten
Dokumente neu verpacken
Nach der Neubestellung müssen Sie einige Umpacken von Dokumenten Wang et al. empfehlen die "umgekehrte" Methode, d.h. die Anordnung der Dokumente in aufsteigender Reihenfolge ihrer Relevanz. Liu et al. (2024) Es hat sich gezeigt, dass dieser Ansatz, relevante Informationen an den Anfang oder das Ende zu stellen, die Leistung verbessert. Das Repackaging optimiert die Art und Weise, wie die Informationen dem großen Sprachmodell nach der Neuordnung präsentiert werden, um dem Modell zu helfen, die Reihenfolge, in der die Informationen bereitgestellt werden, besser zu verstehen und nicht nur auf der Grundlage einer theoretischen Reihenfolge der Relevanz.
Zusammenfassungen
Zusammenfassungen
Bevor Sie dann das große Sprachmodell aufrufen, müssen Sie die Zusammenfassungen um redundante Informationen zu entfernen. Lange Prompts, die an große Sprachmodelle gesendet werden, sind kostspielig und oft unnötig. Eine Zusammenfassung kann dazu beitragen, redundante oder unnötige Informationen zu entfernen und so die Kosten zu senken.
Sie können etwas verwenden wie Recomp Tools wie dieses führen eine extraktive Komprimierung durch, um nützliche Sätze auszuwählen, oder eine generative Komprimierung, um Informationen aus mehreren Dokumenten zu konsolidieren. Wenn Sie jedoch Wert auf Geschwindigkeit legen, können Sie diesen Schritt auch überspringen.
Feinabstimmung des Generators
Feinabstimmung des Generators
Ist es schließlich angebracht, eine Liste der Namen zu erstellen, die Sie für die Erzeugung von Feinabstimmung des großen Sprachmodells? Das sollte es unbedingt! Die Feinabstimmung mit einer Mischung aus korrelierten und zufälligen Dokumentdaten verbessert die Fähigkeit des Generators, irrelevante Informationen zu verarbeiten. Dadurch wird das Modell robuster und liefert insgesamt bessere Antworten. Obwohl das genaue Verhältnis in der Arbeit nicht angegeben ist, sind die Ergebnisse ziemlich eindeutig: Feinabstimmung lohnt sich! Natürlich hängt dies auch von Ihrem spezifischen Bereich ab.
multimodal
Multimodalitäten
Bei der Verarbeitung von Bildern? Verwirklichung multimodal Abruf. Bei Text-zu-Bild-Aufgaben kann das Abfragen der Datenbank nach ähnlichen Bildern den Prozess beschleunigen. Bei Bild-zu-Text-Aufgaben können durch den Abgleich ähnlicher Bilder genaue, bereits vorhandene Beschreibungen abgerufen werden. Der Schlüssel liegt in echten und überprüften Informationen.
ein Urteil fällen
Kurz gesagt, dieses Papier von Wang et al. liefert uns einen soliden Entwurf für den Aufbau effizienter RAG-Systeme. Beachten Sie jedoch, dass dies nur eine Arbeit ist und nicht alle Aspekte der RAG-Pipeline abdeckt. So wird beispielsweise nicht auf das gemeinsame Training von Retrievern und Generatoren eingegangen, das möglicherweise mehr Potenzial birgt. Auch wird nicht auf Chunking-Techniken eingegangen, die aus Kostengründen noch nicht untersucht wurden, doch ist dies eine Richtung, die es zu erforschen lohnt.
Ich empfehle dringend, die vollständige Veröffentlichung zu lesen, um weitere Informationen zu erhalten.
Wie immer, vielen Dank fürs Lesen. Wenn Sie diese Aufschlüsselung hilfreich fanden oder Anmerkungen haben, lassen Sie es mich in den Kommentaren wissen und wir sehen uns beim nächsten Mal!
bibliographie
Aufbau von LLMs für die Produktion. https://amzn.to/4bqYU9b
Wang et al., 2024 (Verweis auf die Dissertation). https://arxiv.org/abs/2407.01219
LLM-Embedder (Einbettungsmodelle). https://github.com/FlagOpen/FlagEmbedding/tree/master/FlagEmbedding/llm_embedder
Milvus (Vektor-Datenbank). https://milvus.io/
Liu et al., 2024 (Umverpackung von Dokumenten). https://arxiv.org/abs/2307.03172
Recomp (zusammenfassendes Instrument). https://github.com/carriex/recomp