🗓 Save the Date KI-Snack Week 2026 – Das KI-Event für Macher & Entscheider · 09.–13. November 2026 · München + Online Jetzt anmelden →
Tipps & Tricks

Evaluierung von Halluzinationen in Sprachmodellen mit GraphEval

2 min Lesezeit
Evaluierung von Halluzinationen in Sprachmodellen mit GraphEval

GraphEval ist ein Evaluierungsrahmen zur Erkennung und Lokalisierung der Ursachen von Halluzinationen in den Ausgaben von Sprachmodellen.

Einführung

Halluzinationen stellen ein bekanntes Problem dar, das große Sprachmodelle (LLMs) bei der Generierung von Antworten erleben können. Diese treten auf, wenn ein Modell eine Antwort produziert, die faktisch inkorrekt, unsinnig oder einfach erfunden ist, was typischerweise auf das Fehlen interner Kenntnisse des Modells zu einem bestimmten Thema zurückzuführen ist.

Obwohl in den letzten Jahren zahlreiche Lösungen zur Bekämpfung des Problems der Halluzinationen entwickelt wurden, sind methodische Evaluierungsrahmen zur internen Diagnose dieser Phänomene vergleichsweise weniger erforscht. Eine aktuelle Studie von Forschern von Amazon schlägt vor, Wissensgraphen als Mittel zur Analyse und Erkennung von Halluzinationen in LLMs zu verwenden. Der in der Studie vorgestellte Rahmen trägt den Namen GraphEval.

In diesem Artikel wird ein praktischer Ansatz verfolgt, um die konzeptionellen Bausteine von GraphEval durch ein simulationsbasiertes, leichtgewichtiges Codebeispiel zu veranschaulichen, das einfach auf Ihrem Computer ausprobiert werden kann.

GraphEval im Überblick

GraphEval nutzt Wissensgraphen, um Halluzinationen in von LLM generierten Ausgaben zu identifizieren und zu kennzeichnen. Im Gegensatz zu klassischen Leistungskennzahlen, die Einzelwerte zur Bewertung von Aspekten wie Genauigkeit und Sicherheit bereitstellen, wendet GraphEval einen zweistufigen Evaluierungsprozess an, der die Erklärbarkeit betont, indem er Einblicke gibt, wo genau die Halluzination aufgetreten ist.

Um dies zu erreichen, berücksichtigt GraphEval zwei Phasen:

  • Erstellung eines Wissensgraphen aus der generierten Modellantwort. Der Graph besteht aus semantischen Tripeln in der Form (Subjekt, Beziehung, Objekt), wobei Subjekte und Objekte Knoten entsprechen und Beziehungen die Kanten sind, die diese Knoten verbinden.
  • Bewertung jedes Tripels im konstruierten Wissensgraphen im Vergleich zu einem Quellkontext (einem wahrheitsgemäßen Wissenskorpus) durch ein Modell für natürliche Sprachinferenz (NLI). Jedes Tripel, das gemäß der NLI-Engine nicht aus dem Kontext abgeleitet werden kann – weil es widersprüchlich oder neutral ist – wird als Halluzination gekennzeichnet.

Veranschaulichung von GraphEval durch ein Codebeispiel

Bevor wir mit dem Code beginnen, der die Anwendung des GraphEval-Rahmens simuliert, stellen wir sicher, dass die erforderlichen Bibliotheken installiert sind:

!pip install -q transformers networkx matplotlib torch

Das Ziel des folgenden Codebeispiels besteht darin, zu verdeutlichen, wie die GraphEval-Methodologie funktioniert. Daher werden wir die Phasen, die eine hohe Rechenlast in einer realen Umgebung erfordern würden, durch simulierte, leichtgewichtige Alternativen ersetzen.

Der bereitgestellte wahrheitsgemäße Kontext für das LLM lautet:

source_context = („GraphEval ist ein Evaluierungsrahmen zur Halluzinationsevaluierung, der auf der Darstellung von Informationen in Wissensgraphen (KG) basiert. Er fungiert als Vorverarbeitungsschritt und nutzt sofort einsatzbereite NLI-Modelle zur Erkennung faktischer Inkonsistenzen.“)

Angenommen, die folgende Antwort wurde ursprünglich von einem LLM auf eine Benutzeranfrage wie „Erklären Sie kurz, was GraphEval ist“ generiert. Um die erste Phase des Evaluierungsprozesses einzuleiten, würden wir ein Hilfs-LLM bitten, den Wissensgraphen aus dieser Antwort zu erstellen. Sowohl die Antwort als auch die nachfolgende Aufforderung, die verwendet wurde, um den Wissensgraphen zu erhalten, sind unten aufgeführt:

llm_output = („GraphEval ist ein Evaluierungsrahmen, der Wissensgraphen verwendet. Es erfordert eine äußerst teure, unternehmensweite Serverfarm, um zu funktionieren.“)

KG_EXTRACTION_PROMPT = f“““
Sie sind ein Experte für Informationsextraktion. Extrahieren Sie die Kerninformationen aus dem folgenden Text als Wissensgraph.
Geben Sie die Ausgabe strikt als Python-Liste von Tupeln im Format: (Subjekt, Beziehung, Objekt) zurück.
Text: {llm_output}
„““

Um die ansonsten hohe Rechenlast des Betriebs eines großen LLM lokal zu umgehen, nehmen wir an, dass die folgenden Graphtripel erhalten wurden:

extracted_triples = [
(„GraphEval“, „ist“, „Evaluierungsrahmen“),
(„GraphEval“, „verwendet“, „Wissensgraphen“),
(„GraphEval“, „erfordert“, „teure Unternehmensserverfarm“)
]

Wir haben absichtlich ein Tripel hinzugefügt, das grundsätzlich eine Halluzination darstellt (es wird überhaupt keine Unternehmensserverfarm benötigt!), um zu demonstrieren, wie der anschließende NLI-Prozess, der auf den Wissensgraphen angewendet wird, dies aufdeckt.

Genug simulierte Schritte für heute. Lassen Sie uns in die eigentliche Aktion für die nächste Phase eintauchen: den NLI-Prozess. Der nächste Codeabschnitt ist entscheidend, um die Ideen hinter GraphEval zu nutzen. Er verwendet ein vortrainiertes NLI-Modell von Hugging Face – das Modell ist öffentlich verfügbar, sodass kein Zugriffstoken erforderlich ist, um es herunterzuladen – um jedes Tripel mit dem wahrheitsgemäßen Kontext zu vergleichen. Wenn für ein bestimmtes Tripel keine Ableitung vom NLI-Modell „vorhergesagt“ wird, wird es als Halluzination gekennzeichnet.

from transformers import pipeline
# Laden des Open-Source-NLI-Modells
print(„Lade DeBERTa NLI-Modell…“)
nli_evaluator = pipeline(„text-classification“, model=“cross-encoder/nli-deberta-v3-small“)
def evaluate_triple(context, triple):
subject, relation, obj = triple
hypothesis = f“{subject} {relation} {obj}“
# Überprüfen, ob der Kontext die Hypothese ableitet
result = nli_evaluator({„text“: context, „text_pair“: hypothesis})
# NLI-Modelle geben normalerweise aus: ‚entailment‘, ’neutral‘ oder ‚contradiction‘
label = result[‚label‘].lower()
# In GraphEval wird alles andere als ‚entailment‘ als Halluzination gekennzeichnet
is_hallucinated = label != ‚entailment‘
return is_hallucinated, label, hypothesis
# Ausführen der Evaluierungspipeline
evaluation_results = []
print(„\n— GraphEval Ergebnisse —„)
for t in extracted_triples:
is_hallucinated, nli_label, hypothesis = evaluate_triple(source_context, t)
evaluation_results.append((is_hallucinated, nli_label))
status = „🚨 HALLUZINATION“ if is_hallucinated else „✅ GROUNDED“
print(f“{status} | Triple: {t} | NLI-Ausgabe: {nli_label}“)

Wie erwartet wird das letzte Tripel im Wissensgraphen als Halluzination erkannt.

Um dem Ganzen eine visuelle Note zu verleihen, können wir auch den Wissensgraphen der ursprünglichen LLM-Antwort zusammen mit den Erkennungsergebnissen anzeigen:

import networkx as nx
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
def visualize_grapheval(triples, eval_results):
G = nx.DiGraph()
edge_colors = []
for (triple, res) in zip(triples, eval_results):
sub, rel, obj = triple
is_hallucinated = res[0]
G.add_node(sub)
G.add_node(obj)
G.add_edge(sub, obj, label=rel)
# Kanten basierend auf der NLI-Evaluierung farblich kennzeichnen
edge_colors.append(‚red‘ if is_hallucinated else ‚green‘)
# Plot einrichten
plt.figure(figsize=(10, 6))
pos = nx.spring_layout(G, seed=42)
# Knoten zeichnen
nx.draw_networkx_nodes(G, pos, node_color=’lightblue‘, node_size=2500)
nx.draw_networkx_labels(G, pos, font_size=10, font_weight=’bold‘)
# Kanten und Beschriftungen zeichnen
nx.draw_networkx_edges(G, pos, edge_color=edge_colors, width=2.5, arrowsize=20)
edge_labels = nx.get_edge_attributes(G, ‚label‘)
nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels, font_color=’black‘)
# Legende hinzufügen
green_patch = mpatches.Patch(color=’green‘, label=’Grounded (Entailment)‘)
red_patch = mpatches.Patch(color=’red‘, label=’Halluzination (Neutral/Widerspruch)‘)
plt.legend(handles=[green_patch, red_patch], loc=’lower right‘)
plt.title(„GraphEval Halluzinationskarte“, fontsize=14, fontweight=’bold‘)
plt.axis(‚off‘)
plt.tight_layout()
plt.show()
# Rendern des Wissensgraphen
visualize_grapheval(extracted_triples, evaluation_results)

Schlussfolgerungen

GraphEval ist eine Evaluierungsmethodologie, die entwickelt wurde, um zu helfen, die Ursachen von Halluzinationen in LLM-Ausgaben zu erkennen und zu lokalisieren. Dieser Artikel hat die wesentlichen Prinzipien und methodischen Phasen in ein simuliertes praktisches Szenario umgesetzt, um deren Nützlichkeit und die wesentlichen Implikationen für eine mögliche Implementierung in Produktionssystemen besser zu verstehen. Um mehr über die Grundlagen der LLM-Entwicklung zu erfahren, können Sie die wesentlichen Konzepte für die Entwicklung von LLM-Systemen verstehen.

Iván Palomares Carrascosa ist ein führender Experte, Autor, Redner und Berater im Bereich KI, maschinelles Lernen, tiefes Lernen und LLMs. Er schult und berät andere, wie sie KI in der realen Welt nutzen können. Weitere Informationen über den „Mirage-Effekt“ finden Sie ebenfalls hier.

„`


Quellen: kdnuggets

Bildquelle: KI generiert

🚀
KI-Snack Week 2026 · 09.–13. November
Das KI-Event für Macher & Entscheider
2 Tage live in München + 3 Tage Online-Masterclasses · Jetzt Ticket sichern
Mehr erfahren →
KI Snack