RAG-Evaluierungstools: So evaluieren Sie Retrieval-Augmented-Generation-Anwendungen
RAG)), oder Retrieval Augmented Generation, ist ein prominentes KI-Framework im Zeitalter von Large Language Models (LLMs))) wie ChatGPT. Es erweitert die Fähigkeiten dieser Modelle durch die Integration externen Wissens und sorgt so für genauere und aktuellere Antworten. Ein standardmäßiges RAG-System umfasst ein LLM, eine Vektordatenbank wie Milvus und einige Prompts als Code, die alle mithilfe eines umfassenden RAG-Evaluierungsframeworks bewertet werden können.
Da immer mehr Entwickler und Unternehmen RAG zum Erstellen von GenAI-Anwendungen einsetzen, wird die Bewertung ihrer Wirksamkeit zunehmend wichtiger. In einem früheren Beitrag haben wir die Leistung zweier unterschiedlicher RAG-Systeme bewertet, die mit den OpenAI Assistants und der Milvus-Vektordatenbank erstellt wurden, was etwas Licht auf die Bewertung von RAG-Systemen warf. Dieser Beitrag geht tiefer und erörtert die Methoden, die zur Bewertung von RAG-Anwendungen verwendet werden. Außerdem stellen wir einige leistungsstarke Evaluierungstools vor und heben Standardmetriken hervor.
Die Bewertung von RAG-Anwendungen ist mehr als nur der Vergleich einiger Beispiele. Der Schlüssel liegt darin, überzeugende, quantitative und reproduzierbare Metriken zur Bewertung dieser Anwendungen zu verwenden. Auf diesem Weg stellen wir drei Kategorien von Metriken vor:
Metriken basierend auf der Ground Truth
Metriken ohne Ground Truth
Metriken basierend auf LLM-Antworten
Ground Truth bezieht sich auf gut etablierte Antworten oder Wissensdokument-Chunks in einem Datensatz, die Benutzeranfragen entsprechen. Wenn die Ground Truth die Antworten sind, können wir die Ground Truth direkt mit den RAG-Antworten vergleichen, was eine End-to-End-Messung mithilfe von Metriken wie semantischer Ähnlichkeit der Antwort und Antwortkorrektheit erleichtert.
Unten ist ein Beispiel für die Bewertung von Antworten basierend auf ihrer Korrektheit.
Ground Truth: Einstein wurde 1879 in Deutschland geboren.
Hohe Antwortkorrektheit: 1879 wurde Einstein in Deutschland geboren.
Niedrige Antwortkorrektheit: Einstein wurde 1879 in Spanien geboren.
Wenn die Ground Truth aus Chunks des Wissensdokuments besteht, können wir die Korrelation zwischen den Dokument-Chunks und den abgerufenen Kontexten mithilfe traditioneller Metriken wie Exact Match (EM), Rouge-L und F1 bewerten. Im Wesentlichen bewerten wir die Abrufeffektivität von RAG-Anwendungen.
Wir haben nun die Bedeutung der Verwendung von Datensätzen mit Ground Truth für die Bewertung von RAG-Anwendungen festgestellt. Aber was ist, wenn Sie eine RAG-Anwendung mit Ihren privaten Datensätzen ohne annotierte Ground Truth bewerten möchten? Wie erzeugen Sie die erforderliche Ground Truth für Ihre Datensätze?
Die einfachste Methode besteht darin, ein LLM wie ChatGPT zu bitten, Beispielfragen und -antworten basierend auf Ihrem proprietären Datensatz zu generieren. Tools wie Ragas und LlamaIndex bieten ebenfalls Methoden zur Generierung von Testdaten, die auf Ihre Wissensdokumente zugeschnitten sind.
_Die Beispielfragen und -antworten, die vom Ragas-Evaluierungstool generiert wurden (Quelle: https://docs.ragas.io/en/latest/concepts/testset_generation.html)
Diese generierten Testdatensätze, bestehend aus Fragen, Kontext und entsprechenden Antworten, ermöglichen eine quantitative Bewertung ohne Abhängigkeit von nicht verwandten externen Baseline-Datensätzen. Dieser Ansatz befähigt Benutzer, RAG-Systeme anhand ihrer eigenen Daten zu bewerten und sorgt so für einen stärker angepassten und aussagekräftigeren Bewertungsprozess.
Metriken ohne Ground Truth
Wir können RAG-Anwendungen auch ohne eine Ground Truth für jede Anfrage bewerten. TruLens-Eval, ein Open-Source-Evaluierungstool, führt das Konzept der RAG Triad ein, das sich auf die Bewertung der Relevanz von Elementen in den Triplets aus Anfrage, Kontext und Antwort konzentriert. Drei entsprechende Metriken sind:
Kontextrelevanz: Misst, wie gut der abgerufene Kontext die Anfrage unterstützt.
Fundiertheit: Bewertet, in welchem Ausmaß die Antwort des LLM mit dem abgerufenen Kontext übereinstimmt.
Antwortrelevanz: Misst die Relevanz der endgültigen Antwort für die Anfrage.
Nachfolgend ein Beispiel für die Bewertung von Antworten basierend auf ihrer Relevanz für die Frage.
Frage: Wo liegt Frankreich und was ist seine Hauptstadt?
Antwort mit geringer Relevanz: Frankreich liegt in Westeuropa.
Antwort mit hoher Relevanz: Frankreich liegt in Westeuropa und Paris ist seine Hauptstadt.
RAG-Triade, Quelle: https://www.trulens.org/getting_started/core_concepts/rag_triad/
Zusätzlich können diese Triadenmetriken weiter unterteilt werden, wodurch die Granularität der Bewertung erhöht wird. Zum Beispiel hat Ragas (ein Open-Source-Framework, das der Bewertung der Leistung von RAG-Systemen gewidmet ist) die Kontextrelevanz in drei weitere detaillierte Metriken aufgeteilt: Kontextpräzision, Kontextrelevanz und Kontextrückruf.
Diese Kategorie von Metriken bewertet LLM-Antworten unter Berücksichtigung von Faktoren wie Freundlichkeit, Schädlichkeit und Prägnanz. Zum Beispiel schlägt sie Metriken wie Prägnanz, Relevanz, Korrektheit, Kohärenz, Schädlichkeit, Böswilligkeit, Hilfsbereitschaft, Kontroversität, Frauenfeindlichkeit, Kriminalität und Unsensibilität vor.
Nachfolgend ein Beispiel für die Bewertung von Antworten basierend auf ihrer Prägnanz.
Frage: Was ist 2+2?
Antwort mit geringer Prägnanz: Was ist 2+2? Das ist eine elementare Frage. Die Antwort, die du suchst, ist, dass zwei und zwei vier ergibt.
Antwort mit hoher Prägnanz: 4
LLMs zur Bewertung der Metriken verwenden
Die meisten zuvor genannten Metriken erfordern die Eingabe von Text, um eine Bewertung zu erhalten, was Aufwand bedeutet. Die gute Nachricht ist, dass dieser Prozess mit dem Aufkommen von LLMs wie GPT-4 besser handhabbar wird, bei denen man lediglich einen geeigneten Prompt entwerfen muss.
Das Paper "Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena" schlägt ein Prompt-Design für GPT-4 vor, um die Qualität der Antwort eines KI-Assistenten auf eine Benutzerfrage zu beurteilen. Nachfolgend ein kurzes Beispiel:
[System]
Please act as an impartial judge and evaluate the quality of the response provided by an AI assistant to the user question displayed below. Your evaluation should consider factors such as the helpfulness, relevance, accuracy, depth, creativity, and level of detail of the response. Begin your evaluation by providing a short explanation. Be as objective as possible. After providing your explanation, please rate the response on a scale of 1 to 10 by strictly following this format: "[[rating]]", for example: "Rating: [[5]]".
[Question]
{question}
[The Start of Assistant's Answer]
{answer}
[The End of Assistant's Answer]
Dieser Prompt fordert GPT-4 auf, die Antwortqualität zu bewerten und sie auf einer Skala von 1 bis 10 einzustufen.
Es ist wichtig zu beachten, dass GPT-4, wie jeder Beurteiler, nicht unfehlbar ist und Verzerrungen sowie potenzielle Fehler haben kann. Daher ist das Prompt-Design entscheidend. Fortgeschrittene Prompt-Engineering-Techniken wie Multi-Shot oder Chain-of-Thought (CoT) können notwendig sein. Glücklicherweise müssen wir uns um dieses Problem keine Sorgen machen, da viele Bewertungstools für RAG-Anwendungen bereits gut gestaltete Prompts integriert haben.
Nachdem wir nun die Bewertung einer RAG-Anwendung behandelt haben, wollen wir einige Tools zur Bewertung von RAG-Anwendungen erkunden, die Einblicke darin bieten, wie sie funktionieren und für welchen Anwendungsfall diese Tools am besten geeignet sind.
Ragas: optimierte RAG-Bewertung
Ragas ist ein Open-Source-Bewertungstool zur Bewertung von RAG-Anwendungen. Mit einer einfachen Oberfläche optimiert Ragas den Bewertungsprozess. Durch das Erstellen einer Dataset-Instanz im erforderlichen Format können Benutzer Bewertungen schnell initiieren und Metriken wie 'ragas_score,' 'context_precision,' 'faithfulness,' und 'answer_relevancy.' erhalten.
from ragas import evaluate
from datasets import Dataset
# prepare your huggingface dataset in the format
# Dataset({
# features: ['question', 'contexts', 'answer', 'ground_truths'],
# num_rows: 25
# })
dataset: Dataset
results = evaluate(dataset)
# {'ragas_score': 0.860, 'context_precision': 0.817,
# 'faithfulness': 0.892, 'answer_relevancy': 0.874}
Ragas unterstützt eine Vielzahl von Metriken und stellt keine spezifischen Framework-Anforderungen, wodurch Flexibilität bei der Bewertung verschiedener RAG-Anwendungen geboten wird. Ragas ermöglicht die Echtzeitüberwachung von Bewertungen über LangSmith und bietet Einblicke in die Gründe jeder Bewertung sowie den Verbrauch von API-Schlüsseln.
Verständnis von RAG-Systemen
Retrieval Augmented Generation (RAG)-Systeme sind eine Art von Technologie der künstlichen Intelligenz (KI), die die Stärken großer Sprachmodelle (LLMs) mit externer Wissensabfrage kombiniert. RAG-Systeme bestehen aus drei Hauptkomponenten: Indexieren, Abrufen und Generieren. Die Index-Komponente erstellt eine Wissensdatenbank, die durchsucht und abgerufen werden kann. Die Abruf-Komponente ruft relevante Informationen aus der indexierten Datenbank ab. Die Generierungs-Komponente erstellt neuen Text auf Grundlage der abgerufenen Informationen.
RAG-Systeme werden häufig für Chatbots und Frage-Antwort-Systeme verwendet. Sie bieten einen robusten und dynamischen Ansatz für KI-Konversationen und Informationsverarbeitung. Durch die Nutzung externen Wissens ermöglichen RAG-Systeme genauere, kontextbezogene, relevante und aktuelle Antworten. Dies macht sie in verschiedenen Bereichen unverzichtbar, einschließlich Kundenservice und internen Wissens-Chatbots, wo präzise und zeitnahe Informationen entscheidend sind.
Bewertungsmetriken für RAG
Die Bewertung der Leistung von RAG-Systemen ist entscheidend für ihre Zuverlässigkeit und Leistungsfähigkeit. Es gibt mehrere Bewertungsmetriken für RAG-Systeme, darunter:
Kontextrelevanz: Misst die Relevanz des abgerufenen Kontexts für die Anfrage des Benutzers.
Kontext-Recall: Misst den Anteil des relevanten Kontexts, der vom System abgerufen wurde.
Faktentreue: Misst die Genauigkeit des generierten Textes auf Grundlage des abgerufenen Kontexts.
Antwortrelevanz: Bewertet die Relevanz des generierten Textes für die Anfrage des Benutzers.
Antwortkorrektheit: Beurteilt die Genauigkeit des generierten Textes.
Diese Metriken bieten ein umfassendes Framework zur Bewertung der Leistung von RAG-Systemen. Durch die Analyse dieser Aspekte können Entwickler Verbesserungsbereiche identifizieren und sicherstellen, dass das System hochwertige, relevante und genaue Antworten liefert.
LlamaIndex: einfaches Erstellen und Bewerten
LlamaIndex ist ein robustes KI-Framework zum Erstellen von RAG-Anwendungen, einschließlich eines RAG-Bewertungstools. Es ist praktisch für die Bewertung von Anwendungen, die innerhalb seines Frameworks erstellt wurden.
from llama_index.evaluation import BatchEvalRunner
from llama_index.evaluation import (
FaithfulnessEvaluator,
RelevancyEvaluator,
)
service_context_gpt4 = ...
vector_index = ...
question_list = ...
faithfulness_gpt4 = FaithfulnessEvaluator(service_context=service_context_gpt4)
relevancy_gpt4 = RelevancyEvaluator(service_context=service_context_gpt4)
runner = BatchEvalRunner(
{"faithfulness": faithfulness_gpt4, "relevancy": relevancy_gpt4},
workers=8,
)
eval_results = runner.evaluate_queries(
vector_index.as_query_engine(), queries=question_list
)
TruLens-Eval: integrierte Bewertung für unterschiedliche Frameworks
TruLens Eval bietet eine einfache Möglichkeit, RAG-Anwendungen zu bewerten, die mit LangChain und LlamaIndex erstellt wurden. Das folgende Code-Snippet zeigt, wie die Bewertung für eine auf LangChain basierende RAG-Anwendung eingerichtet wird.
from trulens_eval import TruChain, Feedback, Tru,Select
from trulens_eval.feedback import Groundedness
from trulens_eval.feedback.provider import OpenAI
import numpy as np
tru = Tru()
rag_chain = ...
# Initialize provider class
openai = OpenAI()
grounded = Groundedness(groundedness_provider=OpenAI())
# Define a groundedness feedback function
f_groundedness = (
Feedback(grounded.groundedness_measure_with_cot_reasons)
.on(Select.RecordCalls.first.invoke.rets.context)
.on_output()
.aggregate(grounded.grounded_statements_aggregator)
)
# Question/answer relevance between overall question and answer.
f_qa_relevance = Feedback(openai.relevance).on_input_output()
tru_recorder = TruChain(rag_chain,
app_id='Chain1_ChatApplication',
feedbacks=[f_qa_relevance, f_groundedness])
tru.run_dashboard()
Trulens-Eval kann RAG-Apps bewerten, die mit anderen Frameworks erstellt wurden, aber die Implementierung im Code kann komplex sein. Weitere Details finden Sie in der offiziellen Dokumentation.
Darüber hinaus bietet Trulens-Eval auch visuelles Monitoring im Browser zur Analyse von Bewertungsgründen und zur Beobachtung der API-Schlüsselnutzung.
Phoenix: LLM flexibel evaluieren
Phoenix bietet einen vollständigen Satz von Metriken zur Evaluierung von LLMs, einschließlich der Qualität generierter Embeddings und der Antworten des LLM. Es kann auch RAG-Anwendungen bewerten, enthält jedoch weniger Metriken als die anderen genannten Evaluierungstools. Das folgende Code-Snippet zeigt, wie Phoenix verwendet wird, um eine mit LlamaIndex erstellte RAG-Anwendung zu evaluieren.
import phoenix as px
from llama_index import set_global_handler
from phoenix.experimental.evals import llm_classify, OpenAIModel, RAG_RELEVANCY_PROMPT_TEMPLATE, \
RAG_RELEVANCY_PROMPT_RAILS_MAP
from phoenix.session.evaluation import get_retrieved_documents
px.launch_app()
set_global_handler("arize_phoenix")
print("phoenix URL", px.active_session().url)
query_engine = ...
question_list = ...
for question in question_list:
response_vector = query_engine.query(question)
retrieved_documents = get_retrieved_documents(px.active_session())
retrieved_documents_relevance = llm_classify(
dataframe=retrieved_documents,
model=OpenAIModel(model_name="gpt-4-1106-preview"),
template=RAG_RELEVANCY_PROMPT_TEMPLATE,
rails=list(RAG_RELEVANCY_PROMPT_RAILS_MAP.values()),
provide_explanation=True,
)
Neben den oben genannten Tools bieten auch andere Plattformen wie DeepEval, LangSmith und OpenAI Evals Funktionen zur Evaluierung von RAG-Anwendungen. Ihre Methoden sind ähnlich, aber Prompt-Design und Implementierungsdetails variieren. Wählen Sie daher unbedingt das Tool aus, das für Sie am besten geeignet ist.
Zusammenfassend haben wir einige Methoden, Metriken und Tools zur Evaluierung von RAG-Anwendungen betrachtet. Insbesondere haben wir drei Kategorien von Metriken untersucht:
solche, die auf einer Ground Truth basieren,
solche ohne Ground Truth,
und solche, die auf den Antworten großer Sprachmodelle (LLMs) basieren.
Ground-Truth-Metriken umfassen den Vergleich von RAG-Antworten mit etablierten Antworten. Im Gegensatz dazu konzentrieren sich Metriken ohne Ground Truth, wie die RAG Triad, auf die Bewertung der Relevanz zwischen Anfragen, Kontext und Antworten. Metriken, die auf LLM-Antworten basieren, berücksichtigen Freundlichkeit, Schädlichkeit und Prägnanz.
Wir haben außerdem untersucht, wie LLMs zur Bewertung von Metriken durch gut gestaltete Prompts eingesetzt werden können, und eine Reihe von Tools zur RAG-Evaluierung vorgestellt, darunter Ragas, LlamaIndex, TruLens-Eval und Phoenix, um bei dieser Aufgabe zu helfen.
In der sich schnell verändernden Welt der KI ist die regelmäßige Evaluierung und Verbesserung von RAG-Anwendungen entscheidend für ihre Zuverlässigkeit. Mithilfe der hier besprochenen Methoden, Metriken und Tools können Entwickler und Unternehmen fundierte Entscheidungen über die Leistung und Fähigkeiten ihrer RAG-Systeme treffen und so den Fortschritt von KI-Anwendungen vorantreiben.
Erstellen eines Goldstandard-Datensatzes
Die Erstellung eines Goldstandard-Datensatzes ist ein entscheidender Schritt bei der Evaluierung von RAG-Systemen. Ein Goldstandard-Datensatz ist eine Reihe von Beispielen, die als Referenz zur Bewertung der Leistung des Systems verwendet werden. Der Datensatz sollte eine Reihe von Fragen, Antworten und Kontexten enthalten, die für die Domäne des RAG-Systems relevant sind.
Um einen Goldstandard-Datensatz zu erstellen, können Sie diese Schritte befolgen:
Identifizieren Sie eine Reihe relevanter Fragen und Antworten für die Domäne des RAG-Systems.
Erstellen Sie eine Reihe von Kontexten, die für die Fragen und Antworten relevant sind.
Lassen Sie menschliche Evaluatoren die Kontexte und Antworten annotieren, um einen Ground-Truth-Datensatz zu erstellen.
Verwenden Sie den Ground-Truth-Datensatz, um die Leistung des RAG-Systems zu evaluieren.
Dieser Prozess stellt sicher, dass die Evaluierung auf genauen und relevanten Daten basiert und einen zuverlässigen Benchmark zur Bewertung der Leistung des Systems bietet.
Best Practices für die RAG-Evaluierung
Die Evaluierung von RAG-Systemen erfordert die sorgfältige Berücksichtigung mehrerer Faktoren. Hier sind einige Best Practices für die RAG-Evaluierung:
Verwenden Sie einen Goldstandard-Datensatz, um die Leistung des RAG-Systems zu evaluieren.
Verwenden Sie eine Kombination von Evaluierungsmetriken, um ein umfassendes Verständnis der Leistung des Systems zu erhalten.
Berücksichtigen Sie die Kompromisse zwischen verschiedenen Evaluierungsmetriken und wählen Sie diejenigen aus, die am besten zu Ihrem Anwendungsfall passen.
Überprüfen und verfeinern Sie Ihre Evaluierungsmetriken regelmäßig, um sicherzustellen, dass sie relevant und effektiv bleiben.
Verwenden Sie automatisierte Evaluierungstools, um den Evaluierungsprozess zu optimieren und die Belastung für menschliche Evaluatoren zu reduzieren.
Wenn Sie diese Best Practices befolgen, können Sie eine gründliche und effektive Evaluierung Ihres RAG-Systems sicherstellen, was zu kontinuierlicher Verbesserung und optimaler Leistung führt.
Fazit
RAG-Systeme sind eine leistungsstarke Technologie zum Aufbau von Chatbots und Frage-Antwort-Systemen. Die Evaluierung der Leistung von RAG-Systemen ist entscheidend für ihre Zuverlässigkeit und Performance. Durch das Verständnis von RAG-Systemen, die Verwendung von Evaluierungsmetriken, die Erstellung eines Goldstandard-Datensatzes und die Befolgung von Best Practices für die RAG-Evaluierung können Sie sicherstellen, dass Ihr RAG-System optimal funktioniert und den Nutzern genaue und relevante Antworten liefert.
In der sich schnell wandelnden Welt der KI ist die regelmäßige Evaluierung und Verbesserung von RAG-Anwendungen entscheidend für ihre Zuverlässigkeit. Mithilfe der hier besprochenen Methoden, Metriken und Tools können Entwickler und Unternehmen fundierte Entscheidungen über die Leistung und Fähigkeiten ihrer RAG-Systeme treffen und so den Fortschritt von KI-Anwendungen vorantreiben.
Weiterlesen

Zilliz Cloud Now Available in AWS Europe (Ireland)
Zilliz Cloud launches in AWS eu-west-1 (Ireland) — bringing low-latency vector search, EU data residency, and full GDPR-ready infrastructure to European AI teams. Now live across 30 regions on five cloud providers.

Democratizing AI: Making Vector Search Powerful and Affordable
Zilliz democratizes AI vector search with Milvus 2.6 and Zilliz Cloud for powerful, affordable scalability, cutting costs in infrastructure, operations, and development.

Building RAG Pipelines for Real-Time Data with Cloudera and Milvus
explore how Cloudera can be integrated with Milvus to effectively implement some of the key functionalities of RAG pipelines.



