AI Personal Learning
und praktische Anleitung
Sitzsack Marscode

2023 Überprüfung eines alten Artikels: Ein Leitfaden für den Aufbau des RAG-Systems und dessen Bewertung

Retrieval Augmented Generation (RAG) ist eine der populärsten Anwendungen von Large Language Models (LLMs) und Vektordatenbanken.RAG wird durch Extraktion von Daten aus Vektordatenbanken wie WeaviateRAG-Anwendungen werden häufig in Chatbots und Q&A-Systemen eingesetzt.

Wie bei jedem technischen System ist die Leistungsbewertung wichtig für RAG Die RAG-Pipeline ist in drei Komponenten unterteilt:

  1. Indizierung
  2. abrufen (Daten)
  3. Erzeugung von

Die Evaluierung von RAG ist aufgrund der Komplexität der Wechselwirkungen zwischen diesen Komponenten und der Schwierigkeit der Erhebung von Testdaten eine Herausforderung. In diesem Beitrag wird eine spannende Entwicklung bei der Verwendung von LLM für die Bewertung und den aktuellen Stand der RAG-Komponenten aufgezeigt.


kurz und bündigWir sind inspiriert durch eine Partnerschaft mit Ragas Der Dialog zwischen Jithin James und Shauhul Es, den Machern von Diese Dialoge, geschrieben von Ragas und neue Entwicklungen bei der LLM-Bewertung von RAG-Systemen, bei der ARES Pionierarbeit geleistet hat, haben uns veranlasst, über bestehende Metriken nachzudenken und eine Bestandsaufnahme der einstellbaren RAG-Parameter vorzunehmen. Im Laufe unserer Forschung haben wir weiter über die möglichen Formen der experimentellen RAG-Tracking-Software nachgedacht und weiter geklärt, wie sich RAG-Systeme von Agentensystemen unterscheiden und wie sie bewertet werden.

Unsere Blogbeiträge enthalten die folgenden fünf Hauptabschnitte:

  • LLM-BewertungAufkommende Trends bei der Bewertung der RAG-Leistung unter Verwendung des LLM, einschließlich Null-Stichproben, wenige Stichproben und Feinabstimmung der Größe des LLM-Evaluators.
  • RAG-IndikatorenAllgemeine Metriken zur Bewertung von Generierung, Suche und Indexierung und deren Zusammenspiel.
  • Anpassungsparameter für RAGWelches sind die Entscheidungen, die die Leistung des RAG-Systems auf sehr unterschiedliche Weise beeinflussen?
  • TerminplanungWie verwalte ich die Verfolgung der Experimentkonfiguration für das RAG-System?
  • Von der RAG zur AgentenbewertungWir definieren eine RAG als einen dreistufigen Prozess von Indizierung, Abruf und Generierung. In diesem Abschnitt wird beschrieben, wann ein RAG-System in ein Agentensystem umgewandelt wird und wie die Unterschiede zu bewerten sind.

 

LLM-Bewertung

Beginnen wir mit dem neuesten und aufregendsten Teil dieser Aufgabe - der LLM-Bewertung! Die Geschichte des maschinellen Lernens stützt sich stark auf die Arbeit der manuellen Annotation von Daten, wie z. B. die Bestimmung, ob eine Yelp-Bewertung positiv oder negativ ist, oder ob ein Artikel für die Frage "Wer ist der Cheftrainer der Boston Celtics? LLM wird allmählich effizienter bei der Annotation von Daten mit weniger manuellem Aufwand. Dies ist ein wichtiger **"neuer Trend "**, der das Wachstum von RAG-Anwendungen beschleunigt.

es (jemandem) überlassen Ragas Die häufigste Technik, die von Frameworks wie der Zero Sample LLM Evaluation entwickelt wurde, ist die Zero Sample LLM Evaluation. Bei der Nullstichproben-LLM-Evaluierung wird das große Sprachmodell mit Vorlagen wie den folgenden aufgefordert: "Bitte bewerten Sie die Relevanz dieser Suchergebnisse auf einer Skala von 1 bis 10. Die Suchanfrage ist {query} und die Suchergebnisse sind {search_results}". Die folgende Abbildung zeigt, wie LLM verwendet werden kann, um die Leistung eines RAG-Systems zu bewerten.

RAG-Bewertung Übersicht-1

Bei der LLM-Evaluierung mit Nullproben gibt es drei wichtige Einstellungsmöglichkeiten: 1. die Design-Metriken, wie Präzision, Recall oder nDCG, 2. die spezifische Sprache dieser Cues und 3. das für die Evaluierung verwendete Sprachmodell, z. B. GPT-4, Coral, Llama-2, Mistral usw. Ein großes Problem sind derzeit die Kosten für die Verwendung des LLM für die Bewertung. Zum Beispiel würde die Auswertung von 10 Suchergebnissen mit GPT-4 (unter der Annahme von 500 Token pro Ergebnis, plus 100 Token für die Anfrage und den Befehl, also insgesamt etwa 6.000 Token) etwa $1000 pro Token 0,005, oder $3 für die Auswertung von 100 Abfragen.

Da Rahmenwerke wie Ragas die LLM-Bewertung mit Null-Stichproben fördern, beginnen die Menschen die Notwendigkeit einer LLM-Bewertung mit weniger Stichproben in Frage zu stellen. Da die stichprobenlose LLM-Bewertung "gut genug" ist, kann sie als Nordstern für die Abstimmung des RAG-Systems ausreichen. Wie in der nachstehenden Abbildung dargestellt, besteht die RAGAS-Bewertung aus vier LLM-Aufforderungen mit Null-Stichproben für jede der beiden erzeugten Metriken:Treu und Glauben im Gesang antworten Relevanz der Antworten (Relevanz der Antworten)sowie zwei Indikatoren für den Abruf:Kontextgenauigkeit (Kontextgenauigkeit) im Gesang antworten Kontext-Rückruf (Context Recall).

RAG-Bewertung Übersicht-2  Quelle (von Informationen usw.)

Die Umstellung von der LLM-Bewertung mit null Stichproben auf weniger Stichproben ist einfach. Wir haben einige kommentierte Beispiele für die Relevanz der Suchergebnisse für die Anfrage in die Instruktionsvorlagen aufgenommen, auch bekannt als Kontextlernen. Die Entdeckung dieser Technik war einer der wichtigsten Durchbrüche des GPT-3.

Zum Beispiel würde das Hinzufügen von 5 manuellen Relevanzbewertungen zu dem Beispiel die Eingabeaufforderung um 30.000 Token erhöhen. Unter der Annahme der gleichen Kosten wie oben, bewerten wir eine Erhöhung von 3 $ auf 15 $ für 100 Abfragen. Beachten Sie, dass dies ein einfaches Schätzungsbeispiel ist und nicht auf einem realen Preismodell für LLM basiert. Eine wichtige Überlegung ist, dass das Hinzufügen von weniger Beispielen längere kontextbezogene Modelle erfordern kann, die typischerweise einen Preis über dem LLM für kleinere Eingaben haben.

Diese Art der LLM-Bewertung auf der Grundlage von Null- oder Wenig-Stichproben-Inferenzen ist bereits sehr attraktiv, aber weitere Forschungen haben gezeigt, dass die Kosten der LLM-Bewertung durch Trainingsalgorithmen mittels Wissensdestillation weiter reduziert werden können. Dies bezieht sich auf die Verwendung von LLM zur Generierung von Trainingsdaten für eine Bewertungsaufgabe und deren Feinabstimmung zu einem kleineren Modell.

existieren ARESSaad-Falcon et al. fanden in einem automatisierten Rahmen für die Evaluierung von generativen Systemen mit Suchfunktion heraus, dass das Training eines eigenen LLM-Evaluators die Leistung von Null-Stichproben-Cues übertreffen kann. Anfänglich benötigt ARES drei Eingaben: eine Sammlung von Absätzen aus dem Zielkorpus, 150 oder mehr menschliche Präferenzvalidierungsdatenpunkte und 5 Beispiele mit Unterabtastung von Abfragen innerhalb der Domäne. ARES verwendet diese Beispiele mit Unterabtastung, um eine große Menge an synthetischen Abfragedaten zu generieren, die nach dem Prinzip der Schleifen-Konsistenz gefiltert werden: d.h. kann es bei der Suche mit einer synthetischen Abfrage das Dokument abrufen, das die synthetische Abfrage generiert hat? . ARES generiert dann die Daten für die kontextuelle Relevanz, undAuthentizität der Antworten im Gesang antworten Relevanz der Antworten Feinabstimmung leichter Klassifikatoren.

Experimentelle Feinabstimmung durch den Autor DeBERTa-v3-großDas Modell enthält sparsame 437 Millionen Parameter, wobei sich jeder Klassifizierungskopf das Basissprachmodell teilt, so dass insgesamt drei Klassifizierungsköpfe vorhanden sind. Durch die Aufteilung der synthetischen Daten in Trainings- und Testsätze ergab die Bewertung des ARES-Systems, dass das fein abgestimmte Modell das GPT-3.5-Turbo-16k-Modell mit null und wenigen Stichproben deutlich übertraf. Weitere Einzelheiten (z. B. die innovative Verwendung von Konfidenzintervallen bei der prädiktionsgesteuerten Inferenz (PPI) und Einzelheiten zu den Experimenten) finden Sie unter Saad-Falcon et al.Dissertation.

Um die potenziellen Auswirkungen des LLM in der Bewertung besser zu verstehen, werden wir weiterhin die bestehende systematische RAG-Benchmarking-Methode und ihre besonderen Variationen in der LLM-Bewertung beschreiben.

 

RAG-Indikatoren

Wir stellen die RAG-Metriken aus der Top-Level-Perspektive der Erzeugung, des Abrufs und der Indizierung vor. Anschließend stellen wir die RAG-Abstimmungsparameter aus der Bottom-Level-Perspektive des Aufbaus von Indizes, der Abstimmung von Abrufmethoden und der Generierungsoptionen vor.

Ein weiterer Grund für die Darstellung der RAG-Metriken aus einer Top-Level-Perspektive ist, dass Fehler bei der Indizierung an die Suche und die Generierung weitergegeben werden, aber Fehler bei der Generierung (wie die von uns definierten Tiers) keinen Einfluss auf Fehler bei der Indizierung haben. Beim derzeitigen Stand der RAG-Evaluierung gibt es selten eine End-to-End-Evaluierung des RAG-Stacks, und es wird oft angenommen, dass die Orakel-Kontext vielleicht kontrollierter Interferenzbegriff (CIT)(z. B. das Lost-in-the-Middle-Experiment), um die generierte Wahrhaftigkeit und die Relevanz der Antworten zu bestimmen. In ähnlicher Weise werden Einbettungen in der Regel mit einem Gewaltindex bewertet, der den approximativen Nearest Neighbour-Fehler unberücksichtigt lässt. Der approximative Nearest Neighbour-Fehler wird in der Regel gemessen, indem der optimale Punkt der Genauigkeit in Bezug auf den Kompromiss zwischen Abfrage pro Sekunde und Rückruf gefunden wird, wobei der ANN-Recall die wahren nächsten Nachbarn der Abfrage und nicht die als "relevant" für die Abfrage markierten Dokumente ist.

Erstellung von Indikatoren

Das übergeordnete Ziel der RAG-Anwendung ist es, hilfreiche Ausgaben zu generieren, die durch die Verwendung von abgerufenem Kontext unterstützt werden. Bei der Bewertung muss berücksichtigt werden, dass die Ausgabe den Kontext nutzt und nicht direkt aus der Quelle übernommen wird, um redundante Informationen zu vermeiden und unvollständige Antworten zu verhindern. Um die Ausgabe zu bewerten, müssen Metriken für jedes Kriterium entwickelt werden.

Ragas Es werden zwei Scores eingeführt, um die Leistung des Large Language Modelling (LLM) zu messen: Plausibilität und Relevanz der Antwort.Grad der Glaubwürdigkeit Bewerten Sie die sachliche Richtigkeit der Antworten auf der Grundlage des gefundenen Kontexts.Relevanz der Antworten Bestimmen Sie die Relevanz der Antwort angesichts der Frage. Antworten können hohe Glaubwürdigkeitswerte, aber niedrige Antwortrelevanzwerte haben. Beispielsweise kann eine plausible Antwort den Kontext direkt wiedergeben, was jedoch zu einer niedrigen Antwortrelevanz führt. Die Relevanzwerte für Antworten werden herabgesetzt, wenn die Antworten unvollständig sind oder doppelte Informationen enthalten.

Im Jahr 2020 veröffentlicht Google MeenaDas Ziel von Meena ist es, zu zeigen, dass es die Angemessen und spezifisch des Dialogs. Um die Leistung von Chatbots in offenen Bereichen zu messen, führten sie die Bewertungsmetrik Sensibleness and Specificity Average (SSA) ein. Die Angemessenheit der Antwort des Bots muss im Kontext Sinn machen und spezifisch sein (Specificity Average). Dadurch wird sichergestellt, dass die Ausgabe umfassend und eindeutig ist.2020 Dazu muss ein Mensch mit dem Chatbot sprechen und ihn manuell bewerten.

Während es gut ist, vage Antworten zu vermeiden, ist es ebenso wichtig zu verhindern, dass große Sprachmodelle auftauchen Fantasiegebilde . Illusion bezieht sich auf die Tatsache, dass die vom Big Language Model generierten Antworten nicht auf tatsächlichen Fakten oder dem gegebenen Kontext beruhen.LlamaIndex ausnutzen FaithfulnessEvaluator Metriken, um dies zu messen. Die Punktzahl basiert darauf, ob die Antwort mit dem abgerufenen Kontext übereinstimmt.

Die Bewertung der Qualität der generierten Antworten hängt von einer Reihe von Indikatoren ab. Die Antworten können sachlich sein, aber nicht relevant für die gegebene Anfrage. Darüber hinaus kann die Antwort vage sein und wichtige Kontextinformationen zur Unterstützung der Antwort enthalten. Als Nächstes kehren wir zur vorherigen Schicht der Pipeline zurück und erörtern die Abrufmetriken.

Abrufen von Indikatoren

Die nächste Ebene des Bewertungsstapels ist die Informationsbeschaffung. Die Auswertung des Suchverlaufs erfordert, dass Menschen die für die Abfrage relevanten Dokumente annotieren. So müssen wir für die Erstellung einer Abfrageanmerkung möglicherweise die Relevanz von 100 Dokumenten annotieren. Dies ist bereits bei allgemeinen Suchanfragen eine äußerst schwierige Aufgabe, die sich bei der Entwicklung domänenspezifischer Suchmaschinen (z. B. für juristische Verträge, medizinische Krankengeschichten usw.) noch weiter verschärft.

Um die Kosten für die Beschriftung zu senken, werden häufig Heuristiken zur Bestimmung der Suchrelevanz verwendet. Die gebräuchlichste davon ist die Klickprotokollierung, d. h. bei einer Suchanfrage können angeklickte Titel relevant sein, während nicht angeklickte Titel nicht relevant sind. Beim maschinellen Lernen wird dies auch als schwache Überwachung bezeichnet.

Sobald der Datensatz fertig ist, werden die folgenden drei Metriken für die Bewertung verwendet: nDCG , undRückruf im Gesang antworten Präzision NDCG (Normalised Discount Cumulative Gain) misst Rankings anhand mehrerer Relevanz-Tags. So kann beispielsweise ein Dokument über Vitamin B12 nicht das relevanteste Ergebnis für eine Anfrage über Vitamin D sein, ist aber relevanter als ein Dokument über die Boston Celtics. Aufgrund der zusätzlichen Komplexität der relativen Rangfolge werden häufig binäre Relevanzkennzeichnungen (1 für relevant und 0 für irrelevant) verwendet. Recall misst, wie viele positive Stichproben in den Suchergebnissen erfasst werden, und Precision misst den Anteil der Suchergebnisse, die als relevant gekennzeichnet sind.

So kann das Big Language Model die Präzision mit der folgenden Abfrage berechnen: "Wie viele der folgenden Suchergebnisse beziehen sich auf die Anfrage {query}? {Suchergebnisse}". Ein Proxy für Recall kann auch durch die Big Language Model-Aufforderung: "Enthalten diese Suchergebnisse alle Informationen, die zur Beantwortung der Anfrage {query} benötigt werden? {Suchergebnisse}". Wir empfehlen den Lesern auch, sich einige der Hinweise in Ragas anzusehen hier (literarisch).

Eine weitere untersuchenswerte Metrik ist LLM Wins, wobei die Big Language Modelling-Aufforderung lautet: "Welche Suchergebnismenge ist auf der Grundlage der Anfrage {query} relevanter? Satz A {Satz_A} oder Satz B {Satz_B}. Sehr wichtig! Bitte beschränken Sie die Ausgabe auf 'Set A' oder 'Set B'".

Nun wollen wir eine Ebene tiefer gehen und verstehen, wie man Vektorindizes vergleicht.

Index-Indikatoren

Erfahrene Nutzer, die mit Weaviate vertraut sind, wissen vielleicht, dass ANN-BenchmarksDer Benchmarking-Test inspirierte Entwicklung der gRPC-API in Weaviate Version 1.19Der ANN-Benchmark misst die Abfragen pro Sekunde (QPS) im Vergleich zum Recall und berücksichtigt auch Details wie Single-Thread-Beschränkungen. Während Datenbanken in der Regel anhand von Latenzzeiten und Speicherkosten bewertet werden, liegt der Schwerpunkt bei Zufallsvektorindizes eher auf Präzisionsmessungen. Dies steht im Gegensatz zu Ungefähre Berechnungen in SQL Select-Anweisungen Ähnlich, aber wir sagen voraus, dass Fehler, die durch Annäherungen verursacht werden, mehr Aufmerksamkeit erhalten werden, wenn die Vektorindizierung populärer wird.

Präzision wird durch Recall gemessen. Bei der Vektorindizierung ist der Recall das Verhältnis zwischen der Anzahl der durch den Indizierungsalgorithmus ermittelten nächstgelegenen Nachbarn und der Anzahl der durch die Brute-Force-Suche ermittelten nächstgelegenen Nachbarn. Dies ist vergleichbar mit dem Information Retrieval (Information Abruf) unterscheidet sich von der typischen Verwendung des Begriffs "recall", der sich auf den Anteil der relevanten Dokumente an allen relevanten Dokumenten bezieht. Beide werden in der Regel mit einem zugehörigen @K-Parameter gemessen.

Im Zusammenhang mit dem gesamten RAG-Stapel stellt sich eine interessante Frage:Wann führen Fehler in der ANN-Genauigkeit zu Fehlern im Information Retrieval (IR)? Wenn wir z. B. 1.000 QPS mit einem Recall von 80% oder 500 QPS mit einem Recall von 95% erreichen können, wie wirkt sich das auf die oben genannten Suchmetriken aus (z. B. Suche nach nDCG oder Large Language Modelling (LLM) Recall Scores)?

Zusammenfassung der RAG-Indikatoren

Zusammenfassend zeigen wir Metriken zur Bewertung von Indizierung, Abruf und Generierung:

  • Erzeugung vonDie Entwicklung von Metriken wie der groß angelegten Erkennung von Halluzinationen (z. B. Rationality and Specificity Average, Sensibleness and Specificity Average, SSA).
  • abrufen (Daten)Neue Möglichkeiten für kontextuelle Präzision vs. kontextuelle Wiedererkennung bei der LLM-Bewertung und ein Überblick über die menschliche Annotation zur Messung von Wiedererkennung, Präzision und nDCG.
  • IndizierungRecall wird durch die Anzahl der vom Vektorsuchalgorithmus ermittelten nächstgelegenen Nachbarn gemessen. Wir denken, dass die Schlüsselfrage hier ist:Wann schleichen sich ANN-Fehler in IR-Fehler ein?

Alle Komponenten können in der Regel zwischen Leistung und Latenzzeit oder Kosten abgewogen werden. Durch die Verwendung eines teureren Sprachmodells können wir eine höhere Qualität der Generierung erreichen; durch die Filterung der Ergebnisse mit einem Reorderer können wir eine höhere Qualität des Abrufs erreichen; durch die Verwendung eines größeren Speichers können wir eine höhere Abrufindizierung erreichen. Wie man mit diesen Kompromissen umgeht, um die Leistung zu verbessern, wird vielleicht klarer werden, wenn wir die "Knöpfe von RAG" weiter untersuchen. Abschließend möchten wir anmerken, dass wir uns entschieden haben, die Metriken aus einer Top-Down-Perspektive von der Generierung bis zur Suche und Indizierung zu präsentieren, da die Evaluierungszeit näher an der Benutzererfahrung liegt. Wir werden auch die Einstellknöpfe aus einer Bottom-up-Perspektive von der Indizierung bis zur Suche und Generierung darstellen, da dies der Erfahrung eines RAG-Anwendungsentwicklers ähnlicher ist.

 

RAG-Anpassungsparameter

Nachdem wir nun die Messgrößen für den Vergleich von RAG-Systemen erörtert haben, wollen wir uns nun mit den wichtigsten Entscheidungen befassen, die die Leistung erheblich beeinflussen können.

Parameter für die Indexanpassung

Der wichtigste Indexierungsparameter beim Entwurf eines RAG-Systems ist die Einstellung für die Vektorkompression, die in Weaviate 1.18 im März 2023 als Produktquantisierung (PQ) eingeführt wurde, ein Vektorkompressionsalgorithmus, der aufeinanderfolgende Fragmente von Vektoren gruppiert, die Werte in der Menge clustert und die Genauigkeit um den Massenschwerpunkt reduziert. Ein zusammenhängendes Fragment von vier 32-Bit-Gleitkommazahlen benötigt beispielsweise 16 Byte, um dargestellt zu werden, während ein Fragment der Länge 4 mit acht Massenschwerpunkten nur 1 Byte benötigt, wodurch ein Speicherkomprimierungsverhältnis von 16:1 erreicht wird. Jüngste Fortschritte bei der Neuordnung von PQ haben den durch die Komprimierung bedingten Verlust an Wiedererkennungswert erheblich verringert, doch sollte diese Methode bei sehr hohen Komprimierungsgraden immer noch mit Vorsicht genossen werden.

Als nächstes wird der Routing-Index verwendet. Bei Datensätzen mit weniger als 10K Vektoren können RAG-Anwendungen mit Brute-Force-Indexierung zufrieden sein. Mit zunehmender Anzahl von Vektoren ist die Latenz bei der Brute-Force-Indizierung jedoch viel höher als bei der Indizierung auf der Grundlage von Proximity-Graph-Algorithmen wie HNSW. Wie in den RAG-Metriken beschrieben, wird die Leistung von HNSW in der Regel anhand des Pareto-Optimalpunkts gemessen, bei dem die Abfrage pro Sekunde gegen den Rückruf abgewogen wird. Dies geschieht durch Anpassung der Größe der für die Inferenz verwendeten Suchwarteschlange. ef um sie zu verwirklichen. Größere ef führt mehr Abstandsvergleiche während des Suchvorgangs durch, was diesen zwar erheblich verlangsamt, aber genauere Ergebnisse liefert. Zu den nächsten Parametern gehören diejenigen, die bei der Erstellung des Indexes verwendet werden, wie z. B. efConstruction (die Größe der Warteschlange beim Einfügen von Daten in das Diagramm) und maxConnections (Anzahl der Kanten pro Knoten, die mit jedem Vektor zu speichern sind).

Eine weitere neue Richtung, die wir erforschen, ist die Auswirkung von Verteilungsbias auf den Massenschwerpunkt von PQs und die Beziehung zu hybriden Clustering- und Graph-Indexierungsalgorithmen wie Diskann vielleicht IVFOADC+G+P) Wechselwirkungen. Die Verwendung der Recall-Metriken kann ausreichen, um festzustellen, ob der Massenschwerpunkt neu angepasst werden muss, aber es bleibt die Frage, welche Teilmenge von Vektoren für die Neuanpassung verwendet werden soll. Wenn wir die letzten 100K Vektoren verwenden, die zu einem Rückgang des Recalls führen, kann es sein, dass wir eine neue Verteilung zu stark anpassen, so dass wir eine Mischung von Datenverteilungszeitlinien auswählen müssen. Dieses Thema steht in engem Zusammenhang mit unserem Punkt der kontinuierlichen Optimierung von Deep-Learning-Modellen und kann im Abschnitt "Regulatorische Optimierung" weiter erörtert werden.

Das Chunking von Daten ist ein wichtiger Schritt vor dem Einfügen von Daten in Weaviate. Durch Chunking werden lange Dokumente in kleinere Teile zerlegt. Dies verbessert die Abfrage, da jeder Chunk wichtige Informationen enthält und hilft, die Token-Grenzen des Large Language Model (LLM) einzuhalten. Für das Parsing von Dokumenten gibt es mehrere Strategien. Die obige Abbildung zeigt ein Beispiel für das Chunking einer Forschungsarbeit auf der Grundlage ihres Titels. Chunk 1 ist z. B. die Zusammenfassung, Chunk 2 die Einleitung und so weiter. Es gibt auch Möglichkeiten, Chunks zu kombinieren und Überschneidungen zu erzeugen. Dazu gehört ein gleitendes Fenster, bei dem ein Token aus dem vorherigen Block als Anfang des nächsten Blocks verwendet wird. Eine leichte Überlappung von Blöcken verbessert die Suche, da der Retriever in der Lage ist, den vorherigen Kontext/Block zu verstehen. Die folgende Abbildung zeigt ein Übersichtsschema von Chunked Text.

Übersicht über die RAG-Bewertung-3

abrufen (Daten)

Es gibt vier einstellbare Hauptparameter für die Suche: das Einbettungsmodell, die Gewichte für die hybride Suche, ob AutoCut verwendet werden soll und das Modell für die Neuordnung.

Die meisten RAG-Entwickler werden wahrscheinlich sofort das verwendete Einbettungsmodell abstimmen, z.B. OpenAI, Cohere, Voyager, Jina AI, Sentence Transformers, und viele andere Optionen! Die Entwickler müssen auch die Dimensionalität des Modells und seine Auswirkungen auf die PQ-Kompression berücksichtigen.

Die nächste wichtige Entscheidung ist die Anpassung der Aggregationsgewichte für sparse und dense Retrievalmethoden bei der hybriden Suche. Die Gewichte basieren auf dem Parameter alpha.alpha 0 ist rein bm25 Suche.alpha auf 1 ist eine reine Vektorsuche. Daher ist die Einstellung alpha Das hängt von Ihren Daten und Ihrer Anwendung ab.

Eine weitere neue Entwicklung ist die Effektivität von Null-Stichproben-Modellen für die Neuordnung: Weaviate bietet derzeit 2 Cohere's Modell der Neuordnung::rerank-englisch-v2.0 im Gesang antworten rerank-multilingual-v2.0. Wie der Name schon sagt, unterscheiden sich diese Modelle vor allem durch die verwendeten Trainingsdaten und die daraus resultierenden mehrsprachigen Fähigkeiten. Wir erwarten, dass wir in Zukunft mehr Optionen in Bezug auf die Modellfähigkeiten anbieten werden, was einen inhärenten Kompromiss zwischen Leistung und Latenzzeit mit sich bringt, der für einige Anwendungen sinnvoll sein kann, für andere jedoch nicht. Bei der Abstimmung der Parameter in der Abfrage war es eine Herausforderung, herauszufinden, welche Art von leistungsfähigem Reorderer benötigt wird und wie viele Abfrageergebnisse neu geordnet werden müssen. Dies ist auch einer der einfachsten Einstiegspunkte für die Feinabstimmung benutzerdefinierter Modelle im RAG-Stack, auf den wir in "Regulatorische Optimierung" näher eingehen.

Ein weiterer interessanter Tuning-Parameter ist die Multi-Index-Suche. Ähnlich wie beim Chunking geht es auch hier um strukturelle Änderungen in der Datenbank. Die allgemeine Frage lautet:Wann sollte ich eine getrennte Sammlung anstelle eines Filters verwenden? sollte übertragen werden bloggt im Gesang antworten Dokumentation in zwei Mengen aufzuteilen, oder sie gemeinsam in einer Sammlung mit einer Quelle Attribut Dokument In der Kategorie?

RAG-Bewertung Übersicht-4

Die Verwendung von Filtern bietet uns eine schnelle Möglichkeit, den Nutzen dieser Kennzeichnungen zu testen, da wir jedem Block mehrere Kennzeichnungen hinzufügen und dann analysieren können, wie der Klassifikator sie verwendet. Es gibt eine Reihe interessanter Ideen, wie z. B. die explizite Kennzeichnung der Quelle des Kontexts in der Kontexteingabe für den LLM, z. B. "Das Folgende sind Suchergebnisse aus Blogs {Suchergebnisse}. Hier sind Suchergebnisse aus Dokumenten {documentation}". Da der LLM in der Lage ist, längere Eingaben zu verarbeiten, erwarten wir, dass die Kontextfusion zwischen mehreren Datenquellen immer häufiger vorkommt, so dass ein weiterer relevanter Hyperparameter auftaucht: wie viele Dokumente von jedem Index oder Filter abgerufen werden.

Erzeugung von

Der erste Punkt, auf den Sie sich bei der Generierung konzentrieren sollten, ist die Wahl des Large Language Model (LLM). Sie können zum Beispiel Modelle von OpenAI, Cohere, Facebook und vielen Open-Source-Optionen wählen. Viele LLM-Frameworks (z. B. LangChain, undLlamaIndex im Gesang antworten Weaviates Erzeugungsmodul) bietet eine einfache Integration mit einer Vielzahl von Modellen, was ein großes Plus ist. Die Wahl des Modells kann von Faktoren abhängen, wie z. B. davon, ob Sie Ihre Daten vertraulich behandeln wollen, von den Kosten, den Ressourcen usw.

Ein allgemeiner, LLM-spezifischer Regelungsparameter ist die Temperatur. Die Temperatureinstellung steuert die Zufälligkeit der Ausgabe. Eine Temperatur von 0 bedeutet, dass die Antwort vorhersehbarer und weniger variabel ist; eine Temperatur von 1 ermöglicht es dem Modell, Zufälligkeit und Kreativität in die Antwort einzubringen. Wenn Sie also das generative Modell mehrmals mit einer Temperatur von 1 ausführen, kann die Antwort bei jeder erneuten Ausführung anders ausfallen.

Long Context Models (LCMs) sind eine neue Richtung bei der Auswahl eines LLM für Ihre Anwendung. Verbessert das Hinzufügen weiterer Suchergebnisse die Antwortqualität? Die Forschung zum Lost in the Middle-Experiment wirft einige Fragen auf. Unter "Verloren in der Mitte" Darin führten Forscher von Stanford, UC Berkeley und Samaya AI kontrollierte Experimente durch, die zeigten, dass das Sprachmodell möglicherweise nicht in der Lage ist, relevante Informationen bei der Generierung einer Antwort zu berücksichtigen, wenn sie in der Mitte eines Suchergebnisses stehen und nicht am Anfang oder Ende. Ein weiteres Papier von Forschern von Google DeepMind, Toyota und der Purdue University stellt fest:"Große Sprachmodelle lassen sich leicht durch irrelevanten Kontext ablenken".. Trotz des Potenzials dieser Richtung befindet sich die RAG mit langem Kontext zum Zeitpunkt der Erstellung dieses Berichts noch in einem frühen Stadium. Glücklicherweise können uns Metriken wie Ragas Scores helfen, neue Systeme schnell zu testen!

Ähnlich wie bei unserer vorangegangenen Erörterung der jüngsten Durchbrüche in der LLM-Evaluation wird der generative Aspekt der Abstimmung in drei Stufen unterteilt: 1. Prompt-Abstimmung, 2. Few-Shot-Beispiele und 3. Das Prompt-Tuning umfasst die Anpassung spezifischer sprachlicher Ausdrücke wie "Bitte beantworten Sie die Frage auf der Grundlage der bereitgestellten Suchergebnisse." versus "Bitte beantworten Sie die Frage. Wichtig: Bitte halten Sie sich genau an die folgenden Anweisungen. Ihre Antwort auf die Frage darf nur auf der Grundlage der angegebenen Suchergebnisse erfolgen!!!" Der Unterschied zwischen.

Wie bereits erwähnt, bezieht sich ein Beispiel ohne Beispiel auf die Sammlung einer Reihe von manuell geschriebenen Frage-, Kontext- und Antwortpaaren, um die Erstellung eines Sprachmodells anzuleiten. Neuere Studien (z.B.. "Kontext-Vektor") zeigt weiter, wie wichtig es ist, den potenziellen Raum auf diese Weise zu booten. Im Weaviate-Gorilla-Projekt verwendeten wir GPT-3.5-Turbo, um Weaviate-Abfragen zu generieren. Als wir die Abfrageübersetzung der weniger wichtigen Beispiele um natürliche Sprache erweiterten, verbesserte sich die Leistung erheblich.

Schließlich wird der LLM-Feinabstimmung für RAG-Anwendungen immer mehr Aufmerksamkeit geschenkt. Hier sind einige Ansätze zu berücksichtigen. Um noch einmal auf unsere Diskussion über die LLM-Evaluierung zurückzukommen, könnten wir Trainingsdaten mit einem robusteren LLM generieren, um ein kleineres, kostengünstigeres Modell in unserem Besitz zu erstellen. Eine andere Idee ist die Bereitstellung von menschlichen Kommentaren zur Antwortqualität, so dass das LLM mit folgenden Befehlen feinabgestimmt werden kann. Wenn Sie an der Feinabstimmung von Modellen interessiert sind, lesen Sie Brevs Beitrag über die Verwendung der HuggingFace PEFT-Bibliothek unter Tutorials.

Zusammenfassung der RAG-Abstimmungsoptionen

Zusammenfassend haben wir die wichtigsten Einstellmöglichkeiten des RAG-Systems beschrieben:

  • Indizierung: Auf höchster Ebene müssen wir überlegen, wann wir nur die Brute-Force-Suche verwenden und wann wir die ANN-Indizierung einführen. Dies ist besonders interessant, wenn es um die Abstimmung von mandantenfähigen Anwendungsfällen mit neuen und hartnäckigen Nutzern geht. Bei der ANN-Indizierung haben wir Hyperparameter für PQ (Fragmentierung, Schwerpunkt und Trainingsgrenzen). hNSW umfasst (ef, efConstruction und maxConnections).
  • Retrieval: Auswahl eines Einbettungsmodells, Anpassung der Gewichte für die hybride Suche, Auswahl eines Reorderers und Aufteilung einer Sammlung in mehrere Indizes.
  • Generieren: Wählen Sie eine LLM aus und entscheiden Sie, wann Sie von der Cue-Abstimmung zu Beispielen mit geringerem Umfang oder zur Feinabstimmung übergehen.

Nachdem wir die RAG-Metriken verstanden haben und wissen, wie man ihre Leistung durch Tuning verbessern kann, wollen wir nun mögliche Implementierungen des experimentellen Trackings diskutieren.

 

Terminplanung

In Anbetracht der jüngsten Fortschritte auf dem Gebiet der Evaluierung von Large Language Models (LLM) und eines Überblicks über einige der einstellbaren Parameter bietet sich eine spannende Möglichkeit, all dies mit einem Rahmen für die Verfolgung von Experimenten zu kombinieren. Zum Beispiel könnte ein einfacher Orchestrator mit einer intuitiven API für den Benutzer verwendet werden, um Folgendes durchzuführen: 1. einen vollständigen Test von 5 LLMs, 2 eingebetteten Modellen und 5 Indizierungskonfigurationen anzufordern; 2. die Experimente durchzuführen; und 3. einen hochwertigen Bericht an den Benutzer zurückzugeben.Weights & Biases hat einen bemerkenswerten experimentellen Tracking-Pfad für das Training von Deep-Learning-Modellen geschaffen. Wir gehen davon aus, dass das Interesse an der experimentellen Unterstützung von RAG mit den in diesem Papier beschriebenen einstellbaren Parametern und Metriken schnell wachsen wird.

Wir verfolgen in diesem Bereich zwei Entwicklungsrichtungen. Einerseits sind die bestehenden LLMs mit Nullproben (z. B. GPT-4, Command, Claude sowie die Open-Source-Optionen Llama-2 und Mistral) nicht so effektiv, wenn es darum geht, eine Orakel-Kontext zu dieser Zeit recht gut abgeschnitten. Es gibt also eine riesige Chance für Konzentrieren Sie sich auf den Teil der Suche . Dazu müssen Wege gefunden werden, um ANN-Fehler, eingebettete Modelle, hybride Suchgewichtung und die Neuordnung von PQ oder HNSW in mehreren Konfigurationen, wie weiter oben in diesem Dokument beschrieben, miteinander in Einklang zu bringen.

Weaviate 1.22 führt asynchrone Indizes und entsprechende Node-State-APIs ein. Wir hoffen, dass Partnerschaften, die sich auf die RAG-Evaluierung und die Abstimmung der Orchestrierung konzentrieren, diese nutzen können, um festzustellen, wann die Indizes fertig aufgebaut sind, und dann Tests durchführen können. Dies ist besonders interessant, wenn man bedenkt, dass die Orchestrierungsschnittstellen mit jedem Tenant auf der Grundlage dieser Knotenzustände abgestimmt werden, wobei einige Tenants sich auf Brute-Force-Suche verlassen können, während andere das richtige Einbettungsmodell und die richtige HNSW-Konfiguration für ihre Daten finden müssen.

Darüber hinaus können wir die Tests durch Parallelisierung der Ressourcenzuweisung beschleunigen. Zum Beispiel durch die gleichzeitige Auswertung von 4 Einbettungsmodellen. Wie bereits erwähnt, ist ein weiterer interessanter Aspekt die Anpassung von Chunks oder anderen symbolischen Metadaten, die vom Datenimporteur stammen können. Der Weaviate Verba-Datensatz enthält zum Beispiel 3 Ordner mit Weaviate's Blogs, undDokumentation im Gesang antworten Video Umschreibung. Wenn wir Chunk-Größen von 100 und 300 vergleichen wollen, muss der Web-Crawler nicht erneut aufgerufen werden. Möglicherweise benötigen wir ein anderes Format, entweder Daten, die in S3-Speicher-Buckets oder anderweitig gespeichert sind, mit zugehörigen Metadaten, aber es bietet eine wirtschaftlichere Möglichkeit zum Experimentieren.

Auf der anderen Seite haben wir die Feinabstimmung von Modellen und gradientenbasiertes kontinuierliches Lernen anstelle von Dateneinfügung oder -aktualisierung. Die häufigsten Modelle, die in RAG verwendet werden, sind eingebettete Modelle, neu geordnete Modelle und natürlich LLMs. Modelle für maschinelles Lernen mit neuen Daten auf dem neuesten Stand zu halten, ist seit langem ein Schwerpunkt von Continuous-Learning-Frameworks und MLops-Orchestrationen, die das Umlernen, Testen und Bereitstellen von neuen Modellen verwalten. Eines der größten Verkaufsargumente des RAG-Systems ist die Möglichkeit, das "Cut-off"-Datum der LLM-Wissensbasis zu verlängern, um sie mit Ihren Daten synchron zu halten. Wir glauben nicht, dass es klar ist, wie gut die kontinuierliche Weiterbildung mit dem Aktualisieren von Informationen durch die RAG zusammenspielt. Einige Studien (z.B. MEMIT) haben mit kausalen Mediationsanalysen der Gewichtszuschreibung experimentiert, wobei Fakten wie "LeBron James spielt Basketball" zu "LeBron James spielt Fußball" aktualisiert wurden. " und so weiter. Dies ist eine ziemlich fortgeschrittene Technik, und eine weitere Möglichkeit wäre, die im Training verwendeten Chunks einfach zu kennzeichnen (z. B. "LeBron James spielt Basketball") und sie mit Hilfe von Retrieval-verbesserten Trainingsdaten, die die neuen Informationen enthalten, neu zu trainieren. Dies ist ein wichtiger Bereich, den wir genau beobachten.

Wie bereits erwähnt, überlegen wir auch, wie diese Art der kontinuierlichen Abstimmung direkt in Weaviate unter Verwendung von PQ-Primärzentren integriert werden kann. Der PQ-Schwerpunkt für die ersten K Vektoren, die zum ersten Mal in Weaviate eingehen, kann durch erhebliche Änderungen in der Datenverteilung beeinflusst werden. Das kontinuierliche Training von Modellen des maschinellen Lernens leidet unter dem berüchtigten Problem des "katastrophalen Vergessens", bei dem das Training auf dem letzten Datenstapel die Leistung auf früheren Stapeln beeinträchtigt. Dies ist eine der Überlegungen, die wir bei der Entwicklung des PQ-Massenzentrums berücksichtigt haben.

 

Von der RAG zur Agentenbewertung

In diesem Artikel konzentrieren wir uns auf die RAG Anstelle von Agent Bewertung. Unserer Meinung nach.RAG definiert als der Prozess des Indexierens, Abrufens und Erzeugens sowie der Agenten Der Umfang des Systems ist offener. Das nachstehende Diagramm veranschaulicht, wie wir die Hauptkomponenten wie Planung, Speicher und Werkzeuge sehen, die zusammengenommen wichtige Fähigkeiten für Ihr System bieten, es aber auch schwieriger zu bewerten machen.

RAG-Bewertung Übersicht-5 Ein üblicher nächster Schritt für RAG-Anwendungen ist das Hinzufügen einer erweiterten Abfrage-Engine. Leser, die mit diesem Konzept noch nicht vertraut sind, sollten sich unsere LlamaIndex- und Weaviate-Serie ansehen, die Python-Code-Beispiele für die ersten Schritte enthält. Es gibt viele verschiedene fortgeschrittene Abfrage-Engines, wie z.B. Sub-Question-Query-Engines, SQL-Router, selbstkorrigierende Query-Engines und mehr. Wir ziehen auch mögliche Formen der promptToQuery-API oder des Suchabfrage-Extraktors im Weaviate-Modul in Betracht. Jede Abfrage-Engine hat ihre eigenen Vorteile im Informationsgewinnungsprozess, also lassen Sie uns in ein paar von ihnen eintauchen und wie wir sie bewerten können.

RAG-Bewertung Übersicht-6 Die Multi-Hop Query Engine (auch bekannt alsSub-Issue Query Engine) eignet sich hervorragend, um komplexe Probleme in Teilprobleme zu zerlegen. Im obigen Diagramm haben wir die Abfrage "Was ist Ref2Vec in Weaviate?" Um diese Frage zu beantworten, müssen Sie wissen, was Ref2Vec bzw. Weaviate ist. Um diese Frage zu beantworten, müssen Sie wissen, was Ref2Vec bzw. Weaviate ist. Daher muss Ihre Datenbank für beide Fragen zweimal aufgerufen werden, um den relevanten Kontext abzurufen. Die beiden Antworten werden dann kombiniert, um eine einzige Ausgabe zu erzeugen. Die Leistungsbewertung einer Multi-Hop-Abfrage-Engine kann anhand der Teilfragen erfolgen. Es ist wichtig, dass LLM relevante Unterfragen erstellt, jede Frage genau beantwortet und die beiden Antworten kombiniert, um eine sachlich genaue und relevante Ausgabe zu liefern. Wenn Sie komplexe Fragen stellen, ist es außerdem am besten, ein Multi-Hop-Abfrageprogramm zu verwenden.

Multi-Hop-Probleme hängen in erster Linie von der Genauigkeit der Teilfragen ab. Wir könnten hier eine ähnliche LLM-Auswertung verwenden, mit folgender Aufforderung: "Gegeben ist die Frage: {query}. Ein System hat beschlossen, sie in die Unterfragen {sub_question_1} und {sub_question_2} zu zerlegen. Wir führen dann zwei separate RAG-Bewertungen für jede Unterfrage durch und bewerten, ob LLM die Antworten auf jede Frage kombinieren kann, um die ursprüngliche Frage zu beantworten.

Ein weiteres Beispiel für die Entwicklung der Komplexität von RAGs zu Agenten ist das Routing von Abfrageprogrammen. Die folgende Abbildung zeigt, wie ein Agent eine Abfrage an eine SQL- oder Vektor-Datenbankabfrage weiterleiten kann. Dieses Szenario ist unserer Diskussion über das Multi-Index-Routing sehr ähnlich, und wir können einen ähnlichen Ansatz verwenden, um die generierten Ergebnisse zu bewerten, indem wir auf die Notwendigkeit der Angabe von SQL- und Vektordatenbanken hinweisen und dann den LLM-Router fragen, ob er die richtige Entscheidung getroffen hat. Wir könnten auch die RAGAS-Kontextrelevanzbewertung für SQL-Abfrageergebnisse verwenden.

RAG-Bewertung Übersicht-7 Um die Diskussion von "Von der RAG zur Agentenbewertung" zusammenzufassen, glauben wir, dass es derzeit unmöglich ist, die allgemeinen Muster der Agentennutzung zu erkennen. Wir haben absichtlich Multi-Hop Query Engines und Query Router gezeigt, weil diese relativ leicht zu verstehen sind. Sobald wir offenere Auswertungen in Bezug auf Planungsschleifen, die Verwendung von Werkzeugen und die Bewertung der Fähigkeit eines Modells, Werkzeug-API-Anfragen zu formatieren, sowie meta-interne Speicherverwaltungshinweise wie die in MemGPT hinzufügen, wird es schwierig sein, eine gemeinsame Abstraktion für die Bewertung von Agenten zu schaffen.

ein Urteil fällen

Vielen Dank, dass Sie unseren Überblick über die RAG-Evaluierung gelesen haben! Als kurze Zusammenfassung haben wir zunächst den neuen Trend zur Verwendung von LLMs für die Bewertung vorgestellt, der erhebliche Kosten- und Zeiteinsparungen für iterative RAG-Systeme ermöglicht. Danach haben wir mehr Hintergrundinformationen zu den traditionellen Metriken für die Bewertung von RAG-Stapeln gegeben, von der Generierung über die Suche bis hin zur Indizierung. Für Entwickler, die die Leistung dieser Metriken verbessern wollen, zeigen wir dann einige einstellbare Parameter für die Indizierung, Suche und Generierung. Wir stellen die Herausforderungen bei der experimentellen Verfolgung dieser Systeme vor und beschreiben unsere Ansichten zu den Unterschieden zwischen der RAG-Evaluation und der Agentenevaluation. Wir hoffen, Sie finden dieses Papier nützlich!

CDN
Darf nicht ohne Genehmigung vervielfältigt werden:Chef-KI-Austauschkreis " 2023 Überprüfung eines alten Artikels: Ein Leitfaden für den Aufbau des RAG-Systems und dessen Bewertung

Chef-KI-Austauschkreis

Der Chief AI Sharing Circle konzentriert sich auf das KI-Lernen und bietet umfassende KI-Lerninhalte, KI-Tools und praktische Anleitungen. Unser Ziel ist es, den Nutzern dabei zu helfen, die KI-Technologie zu beherrschen und gemeinsam das unbegrenzte Potenzial der KI durch hochwertige Inhalte und den Austausch praktischer Erfahrungen zu erkunden. Egal, ob Sie ein KI-Anfänger oder ein erfahrener Experte sind, dies ist der ideale Ort für Sie, um Wissen zu erwerben, Ihre Fähigkeiten zu verbessern und Innovationen zu verwirklichen.

Kontaktieren Sie uns
de_DE_formalDeutsch (Sie)