RAG-Qualität messen mit Ragas: RAG-Pipelines richtig evaluieren

Inhalt
Kurz gesagt: Wenn Sie nur das Codebeispiel ohne Erklärungen suchen, finden Sie das vollständige Skript am Ende dieses Beitrags.
Ragas ist ein Python-Framework, mit dem Sie Pipelines für Retrieval Augmented Generation (RAG) evaluieren. Es arbeitet in zwei Schritten. Zuerst erzeugt es mit einem LLM aus Ihren eigenen Dokumenten ein Testset aus Fragen und Referenzantworten (Ground Truth). Dann bewertet es die Antworten Ihrer Pipeline mit einem LLM und vergibt Werte für vier Metriken: Answer Relevancy, Faithfulness, Context Recall und Context Precision.
Diese Anleitung richtet Ragas 0.1 mit LangChain und OpenAI ein, führt durch die Erzeugung des Testsets und die Evaluierung und schließt mit Best Practices für die Auswertung, etwa dem Mitteln der drei schlechtesten von mehreren Durchläufen.
Warum überhaupt evaluieren? Eine RAG-Pipeline ergänzt ein LLM um externes Wissen, indem sie relevante Dokumente sucht und dem Modell als Kontext mitgibt. Das macht Antworten genauer und konkreter, schafft aber auch neue Fehlerquellen: Der Retriever kann irrelevante Chunks liefern, und das LLM kann den Kontext ignorieren oder falsch verstehen. Ohne Messung wissen Sie nicht, ob eine Änderung an Chunking, Embeddings oder Prompts etwas verbessert oder verschlechtert hat. Eine allgemeinere Einführung in RAG finden Sie in unserem früheren Beitrag (auf Englisch).
Update (November 2026): Diese Anleitung verwendet Ragas 0.1. Ragas 0.2
hat die Erzeugung von Testsets rund um einen Knowledge Graph neu gebaut,
und aktuelle Versionen haben die Module ragas.testset.generator und
ragas.testset.evolutions sowie die unten verwendete Spalte
ground_truths nicht mehr; siehe den Migrationsleitfaden von v0.1 auf
v0.2.
Außerdem hat OpenAI gpt-4-turbo-preview, gpt-4 und gpt-3.5-turbo
abgeschaltet (Deprecations-Seite),
die der Code und die Standardwerte von TestsetGenerator.with_openai()
verwenden. Übergeben Sie deshalb aktuelle Modellnamen an ChatOpenAI und
with_openai(generator_llm=..., critic_llm=...). Der Import von
ChatOpenAI aus langchain_community ist veraltet, verwenden Sie
stattdessen from langchain_openai import ChatOpenAI.
Ragas im Überblick
Ragas bringt mehrere Module für die RAG-Evaluierung mit. Die beiden wichtigsten, die wir in dieser Anleitung verwenden, sind:
-
TestsetGenerator: erzeugt Testsets für die Evaluierung von RAG-Pipelines. Er unterstützt mehrere Fragetypen, darunter einfache Fragen, Fragen mit Schlussfolgerung (Reasoning) und Fragen über mehrere Kontexte. -
evaluate: evaluiert RAG-Pipelines mit den erzeugten Testsets. Das Modul bietet mehrere Metriken, darunter Answer Relevancy, Faithfulness, Context Recall und Context Precision.
Der TestsetGenerator lädt eine Menge Dokumente oder Text-Chunks und lässt
ein LLM Fragen dazu erzeugen, zusammen mit Antworten auf Basis derselben
Dokumente. Diese erzeugten Antworten dienen später bei der Evaluierung der
RAG-Pipeline als "Ground Truth".
Das Modul evaluate bewertet dann die Antworten, die Ihre RAG-Pipeline auf
die Fragen des Testsets gibt. Ein LLM beurteilt diese Antworten und wie gut
die abgerufenen Kontexte zu den Fragen passen. Zum Schluss vergleicht es die
Antwort Ihrer Pipeline mit der ground truth-Antwort aus dem Testset.
Schritt für Schritt: Ragas für die Evaluierung von RAG-Pipelines einrichten
-
Installieren Sie die benötigten Abhängigkeiten:
Hinweis: Der Code unten braucht Ragas 0.1. Version 0.1 war ein großes Refactoring, mit älteren Versionen funktioniert der Code also nicht, und Ragas 0.2 hat die API erneut geändert (siehe den Update-Hinweis oben).
-
Importieren Sie die nötigen Module:
-
Richten Sie das LLM ein: Hinterlegen Sie Ihren OpenAI-Schlüssel und legen Sie fest, welches Modell verwendet wird. Wir empfehlen ausdrücklich ein starkes Modell (beim Schreiben dieses Beitrags GPT-4 Turbo, heute eines der aktuellen Spitzenmodelle von OpenAI, siehe den Update-Hinweis oben), weil die gleichmäßigere Ausgabe bessere und besser vergleichbare Ergebnisse liefert.
Testsets mit dem Ragas TestsetGenerator erzeugen
Ein Testset für die RAG-Evaluierung von Hand zu schreiben, ist mühsam. An diesem Schritt liegt es meist, dass Teams gar nicht erst evaluieren. Der Testset-Generator von Ragas nimmt Ihnen den Großteil dieser Arbeit ab.
Der Testset-Generator:
- lädt eine Menge Dokumente und wandelt sie in reinen Text um,
- lässt ein LLM auf Basis dieser Dokumente Fragen erstellen,
- erzeugt eine Ergebnistabelle mit den Spalten
question,answerundcontext(contextist der Text-Chunk, aus dem Frage und Antwort erzeugt wurden).
Die Spalten question und answer verwenden wir im Evaluierungsschritt als
Prüffragen und -antworten, wobei answer die Ground Truth ist.
Hinweis: Statt das Testset mit Ragas zu erzeugen, können Sie es auch
von Hand erstellen. Sie brauchen nur einen Dataframe mit den Spalten
question und answer.
-
Laden Sie die Dokumente. Ragas braucht eine Menge von LangChain- oder LlamaIndex-Dokumenten, Sie können also jeden Document Loader von LangChain oder LlamaIndex verwenden. Laden Sie dieselben Dokumente (oder einen Teil davon), auf die auch die getestete RAG-Pipeline Zugriff hat.
Hinweis: Der
DirectoryLoaderist nur einer von vielen Document Loadern. -
Erzeugen Sie das Testset mit dem Modul
TestsetGenerator. Der Parameterdistributionslegt fest, welchen Anteil der Fragen jeder Fragetyp bekommt:reasoning: Fragen, die Schlussfolgerungen auf Basis der Dokumente erfordern.simple: einfache Fragen auf Basis der Dokumente.multi_context: Fragen, die aus mehreren Kontexten in den Dokumenten erzeugt werden.
Hinweis: Speichern Sie das Testset, damit Sie es für spätere Evaluierungen wiederverwenden können. Verwenden Sie nicht für jeden Durchlauf andere Testfragen, sondern immer dieselben.
-
Geben Sie die erzeugten Fragen jetzt an die RAG-Pipeline, die Sie testen wollen. Nehmen Sie die Spalte
questionaus dem eben erstelltentest_dfund lassen Sie Ihre RAG-Pipeline jede Frage beantworten. Speichern Sie zu jeder Frage die Frage, die Antwort und den Kontext, am besten in einem Dataframe. Am Ende sollten Sie einen Dataframe mit diesen Spalten haben:question: String; die Frage, die Ihrer RAG-Pipeline gestellt wurdeanswer: String; die Antwort Ihrer RAG-Pipelinecontexts: Liste; die Kontexte, mit denen die Antwort gefunden wurdeground_truths: Liste; die Ground Truths zur Frage, also die bekannten richtigen Antworten. Sie können die vomTestsetGeneratorerzeugteanswerals Ground Truth verwenden, denn derTestsetGeneratorhat jede Frage aus einem Kontext erzeugt, der die Antwort enthielt. Das Feld muss eine Liste sein, weil das Modulevaluatepro Frage eine Liste von Ground Truths erwartet.
Für diese Anleitung schummeln wir ein wenig und verwenden unser Testset gleich als RAG-Ausgabe, weil der Aufbau einer RAG-Pipeline nicht Teil dieser Anleitung ist. In Ihrem eigenen Code ersetzen Sie den Code unten durch Aufrufe Ihrer RAG-Pipeline und bauen den Dataframe wie oben beschrieben.
Die RAG-Pipeline mit Ragas evaluate bewerten
Mit dem Testset und der Ausgabe der RAG-Pipeline bewertet das Ragas-Modul
evaluate die Pipeline. Es bietet mehrere Metriken, darunter Answer
Relevancy, Faithfulness, Context Recall und Context Precision:
answer_relevancy: misst, wie gut die Antwort zur Frage passt.faithfulness: misst, wie treu die Antwort dem bereitgestellten Kontext bleibt.context_recall: misst, ob der Retriever alle Informationen findet, die zur Beantwortung der Frage nötig sind.context_precision: misst, wie relevant die abgerufenen Kontexte sind, also ob der Retriever die nötigen Informationen liefert und nicht bloß Rauschen.
Die Evaluierung selbst ist jetzt einfach: Rufen Sie die Methode evaluate
auf und übergeben Sie die Ausgabe Ihrer RAG-Pipeline samt Ground Truths.
Das Ergebnis ist ein Dictionary mit den vier Metriken und ihren Werten. Damit können Sie verschiedene RAG-Pipelines vergleichen, etwa dieselbe Pipeline mit und ohne ColBERT-Reranker (auf Englisch).
Eigene Prompts in Ragas verwenden
Ragas bringt für die Erzeugung von Testsets und für die Evaluierung gute Standard-Prompts mit. Mit wachsender Erfahrung mit Ihrer RAG-Pipeline und ihrer Bewertung möchten Sie vielleicht eigene Prompts verwenden. Ragas bietet dafür eine Schnittstelle. Da sie sich seit diesem Beitrag mehrmals geändert hat, hier die passende Seite der aktuellen Ragas-Dokumentation: Modify prompts
Best Practices für die RAG-Evaluierung mit Ragas
-
Verwenden Sie ein gutes LLM. Die Qualität des LLM für Testset und Bewertung bestimmt direkt die Qualität der Evaluierung. Nehmen Sie ein starkes Modell, etwa eines der aktuellen Spitzenmodelle von OpenAI oder Anthropic. Es kostet mehr, lohnt sich aber schon kurzfristig.
-
Verwenden Sie einen festen Fragenkatalog. Evaluieren Sie mit immer denselben Fragen und Ground Truths, damit Sie Verbesserungen und Verschlechterungen über die Zeit messen können.
-
Formulieren Sie realistische Fragen. Wählen Sie Fragen und Ground Truths so aus, dass sie den Anfragen entsprechen, die Ihre RAG-Pipeline im Produktivbetrieb bekommt. Sonst sagt die Evaluierung wenig über die Qualität im Alltag aus.
-
Führen Sie die Evaluierung mehrmals aus und mitteln Sie die schlechtesten Ergebnisse. LLMs arbeiten probabilistisch, jeder Durchlauf liefert also etwas andere Ergebnisse, auch wenn die RAG-Pipeline gleich bleibt. Lassen Sie die Evaluierung mehrmals laufen und nehmen Sie den Mittelwert der drei schlechtesten Ergebnisse. Dieser vorsichtige Wert zeigt Ihnen, wie die Pipeline unter weniger idealen Bedingungen abschneidet.
-
Evaluieren Sie nach jeder Änderung neu. Nach jeder Iteration an Ihrer RAG-Pipeline lassen Sie die Evaluierung erneut laufen, um die Auswirkung der Änderung zu sehen. Automatisieren Sie das, indem Sie Ragas in Ihre CI-Pipeline (Continuous Integration) aufnehmen, sodass jede Änderung an der RAG-Pipeline automatisch bewertet wird. Wie Sie neben diesen Werten auch einzelne Anfragen nachverfolgen, zeigt unser Beitrag zu LLM-Tracing mit Opik (auf Englisch) oder zur Open-Source-Alternative Langfuse, mit der Sie Evaluierungswerte an einzelne Traces hängen können.
-
Entwickeln Sie eigene Evaluierungs-Prompts. Bauen Sie mit der Zeit eigene Prompts für Ragas auf, die die besonderen Herausforderungen Ihres Fachgebiets abbilden. Aktualisieren Sie sie regelmäßig, damit sie neue Themen, Formate und Fragetypen abdecken, wenn sich Ihre Daten und Ihre Anwendung verändern.
Fazit
Mit Ragas wird die RAG-Evaluierung zu einem wiederholbaren Prozess. Der
TestsetGenerator erzeugt Fragen und Referenzantworten aus Ihren eigenen
Dokumenten, und evaluate bewertet Ihre Pipeline nach Answer Relevancy,
Faithfulness, Context Recall und Context Precision. Mit diesen Zahlen sehen
Sie, ob eine Änderung an Retrieval, Chunking oder Prompts tatsächlich
geholfen hat, und bemerken Verschlechterungen, bevor sie bei Ihren Nutzern
ankommen. Retrieval-Verfahren, die sich auf diese Weise testen lassen, sind
zum Beispiel Late Chunking und
Hypothetical Document Embeddings
(HyDE) (beide auf
Englisch).
Für verlässliche Ergebnisse verwenden Sie ein starkes LLM für die Bewertung, halten das Testset fest, lassen die Evaluierung mehrmals laufen, schauen auf die schlechtesten Durchläufe und evaluieren nach jeder Änderung an der Pipeline neu. Das vollständige Skript unten ist ein guter Ausgangspunkt: Ersetzen Sie die Demo-"RAG-Pipeline" durch Aufrufe Ihrer eigenen.
Wenn Sie eine RAG-Anwendung für Ihr Unternehmen aufbauen oder die Qualität einer bestehenden messbar machen wollen, unterstützen wir Sie gern.
Kurz gesagt: Code zur Evaluierung von RAG-Pipelines mit Ragas
Weiterlesen
- Advanced RAG: Recursive Retrieval mit LlamaIndex (auf Englisch)
- Eigenes LLM sicher hosten mit vLLM und Caddy
- Wie Sie Wissen in LLMs integrieren (auf Englisch)
- Automatische Prompt-Optimierung gegen eine Metrik mit DSPy (auf Englisch)
Sie möchten zuverlässige KI-Agenten-Systeme bauen?
Wir haben auf Basis aktueller Forschung einen ausführlichen Leitfaden (auf Englisch) erstellt, wie Sie robuste KI-Agenten-Systeme bauen, die auch im produktiven Betrieb funktionieren. Der Leitfaden behandelt:
- die 14 systematischen Fehlerquellen in Multi-Agenten-Systemen
- belegte Best Practices für das Design von Agenten
- strukturierte Kommunikationsprotokolle und Prüfmechanismen



