Skip to content
BotServBotServ
RAGQuellenangabeZitateMetadatenNachverfolgbarkeitLokale KI

Quellenangaben bei RAG: Nachverfolgbare Antworten

Wie RAG-Systeme Quellen angeben: Metadaten, Zitate, Verlinkung und Best Practices für nachverfolgbare KI-Antworten. Praxisguide mit Beispielen.

S

schutzgeist

11 min read
Quellenangaben bei RAG-Systemen

Quellenangaben bei RAG: Nachverfolgbare Antworten

Was dieser Artikel über Quellenangaben bei RAG behandelt

  • Warum Quellenangaben bei RAG-Systemen entscheidend für Vertrauen und Nachvollziehbarkeit sind
  • Welche Metadaten Du für jede Quelle speichern solltest
  • Wie Du das Sprachmodell per Prompt anweist, Quellen korrekt zu zitieren
  • Welche Stolpersteine bei Quellenangaben häufig auftreten und wie Du sie vermeidest
  • Wie verschiedene Frontends wie Open WebUI und AnythingLLM Quellen darstellen

Einleitung: Quellenangaben bei RAG verständlich erklärt

Ein RAG-System beantwortet Fragen auf Basis Deiner eigenen Dokumente. Das ist der große Vorteil gegenüber einem reinen Sprachmodell, das nur sein Trainingswissen nutzt. Doch woher weißt Du, auf welchen Dokumentenabschnitt sich eine Antwort stützt? Genau hier kommen Quellenangaben ins Spiel. Sie machen RAG-Antworten nachverfolgbar und unterscheiden ein seriöses System von einer Blackbox.

In diesem Artikel geht es um die praktische Umsetzung von Quellenangaben in lokalen RAG-Pipelines. Du lernst, welche Metadaten wichtig sind, wie Du das Modell anweist, Quellen zu nennen, und wie Du die Ergebnisse in verschiedenen Oberflächen darstellst. Grundlagen zum gesamten Thema findest Du im Artikel Lokales RAG sowie in den RAG Grundlagen.

Warum brauche ich Quellenangaben?

Stell Dir vor, Du fragst Dein RAG-System: “Wie viele Urlaubstage habe ich bei fünf Jahren Betriebszugehörigkeit?” Das Modell antwortet: “Bei fünf Jahren Betriebszugehörigkeit stehen Dir 28 Urlaubstage zu.” Klingt plausibel, aber woher kommt diese Zahl? Steht sie im Betriebsrat-Vertrag, in einer E-Mail der Personalabteilung oder hat das Modell die Zahl erfunden?

Ohne Quellenangabe kannst Du das nicht überprüfen. Vielleicht hat das Modell zwei verschiedene Dokumente vermischt, oder die Zahl stammt aus einem veralteten Dokument von 2021. Mit Quellenangabe siehst Du sofort: Diese Information stammt aus der Datei urlaubsrichtlinie_2024.pdf, Seite 4, Abschnitt 3.1. Jetzt kannst Du die Quelle öffnen und nachlesen. Das ist der Unterschied zwischen Vertrauen und blindem Glauben.

Quellenangaben kurz erklärt

Quellenangaben bei RAG funktionieren wie ein guter Forscher, der jede Behauptung mit einem Literaturverweis belegt. Wenn der Forscher schreibt, dass eine bestimmte Pflanze heilend wirkt, nennt er das Buch, die Seite und den Autor, damit andere das nachlesen können. Genau das soll ein RAG-System tun: Für jede Aussage in der Antwort nennt es, aus welchem Dokument und welchem Abschnitt die Information stammt.

Dafür muss das System während des Retrieval-Schritts nicht nur den Text der gefundenen Abschnitte speichern, sondern auch die zugehörigen Metadaten. Diese Metadaten werden dann an das Sprachmodell übergeben und in der Antwort ausgegeben. Mehr zur Vorbereitung von Dokumenten findest Du im Artikel Dokumente vorbereiten.

Für wen sind Quellenangaben gedacht?

Quellenangaben richten sich an mehrere Gruppen:

  • Endnutzer, die Antworten nachprüfen wollen, bevor sie Entscheidungen treffen
  • Mitarbeitende in Unternehmen, die rechtliche oder interne Richtlinien nachvollziehbar brauchen
  • Entwicklerinnen und Entwickler, die RAG-Pipelines debuggen und Fehlerquellen eingrenzen müssen
  • Compliance-Verantwortliche, die nachweisen müssen, auf welchen Dokumenten eine Antwort basiert
  • Wissenschaftlerinnen und Wissenschaftler, die Zitate für Arbeiten benötigen

Kurz gesagt: Jeder, der RAG ernsthaft nutzt, profitiert von Quellenangaben. Wer lokale KI einsetzt, hat zusätzlich den Vorteil, dass sensible Dokumente den eigenen Rechner nicht verlassen, und Quellenangaben sorgen dafür, dass die Antworten trotzdem transparent bleiben.

Wichtige Begriffe rund um Quellenangaben

BegriffBedeutung
QuelleDokument oder Abschnitt, aus dem eine Information stammt
ZitatWörtliche oder sinngemäße Übernahme aus einem Dokument
MetadatenZusatzinformationen wie Dateiname, Seite, Autor, Datum
CitationEnglischer Begriff für Quellenangabe, oft in Tools verwendet
ReferenceVerweis auf ein Dokument, ähnlich einer Quellenangabe
Chunk IDEindeutige Kennung eines Dokumentenabschnitts
Page NumberSeitenangabe, besonders wichtig bei PDFs
Confidence ScoreBewertung, wie gut ein gefundener Abschnitt zur Frage passt
ProvenanceBegriff für die Herkunft und Nachverfolgbarkeit einer Information
HallucinationWenn das Modell Informationen erfindet, die nicht in den Quellen stehen

Warum Quellen wichtig sind

Quellenangaben erfüllen mehrere zentrale Funktionen in einem RAG-System:

Vertrauen: Nutzer glauben einer Antwort eher, wenn sie die Quelle nachlesen können. Eine Antwort ohne Quelle ist eine Behauptung, eine Antwort mit Quelle ist eine belegte Aussage.

Verifikation: Jeder kann selbst nachprüfen, ob das Modell die Information korrekt wiedergibt. Das ist besonders bei Verträgen, Richtlinien oder medizinischen Dokumenten wichtig.

Compliance: In vielen Unternehmen und Behörden muss nachvollziehbar sein, auf welcher Basis Entscheidungen getroffen wurden. Quellenangaben liefern diesen Nachweis.

Debugging: Wenn eine Antwort falsch ist, helfen Quellenangaben beim Eingrenzen. War der gefundene Abschnitt irrelevant? War er veraltet? Hat das Modell ihn falsch interpretiert? Ohne Quelle suchst Du im Dunkeln.

Fehlererkennung: Wenn das Modell eine Quelle nennt, die die behauptete Information gar nicht enthält, erkennst Du sofort eine Hallucination. Das ist ein starkes Werkzeug zur Qualitätskontrolle, mehr dazu im Artikel RAG-Qualität testen.

Arten von Quellenangaben

Es gibt verschiedene Möglichkeiten, Quellen in einer RAG-Antwort darzustellen. Jede hat ihre Vor- und Nachteile.

Inline Citations: Die Quelle wird direkt im Text genannt, ähnlich wie in wissenschaftlichen Arbeiten mit eckigen Klammern. Beispiel: “Bei fünf Jahren Betriebszugehörigkeit stehen Dir 28 Urlaubstage zu [1].” Die Nummer verweist auf einen Eintrag in einer Quellenliste am Ende. Diese Form ist kompakt und stört den Lesefluss wenig.

Footnote Style: Quellen werden als Fußnoten am Ende der Antwort gesammelt. Das ist angenehm zu lesen, erfordert aber mehr Aufwand bei der Formatierung.

Source List: Am Ende der Antwort erscheint eine Liste aller verwendeten Quellen mit Dateiname, Seite und Abschnitt. Einfach umzusetzen, aber der Bezug zu einzelnen Aussagen fehlt.

Clickable Links: Quellen werden als klickbare Links dargestellt, die direkt zum Dokument oder zur entsprechenden Seite führen. Das ist die benutzerfreundlichste Variante, erfordert aber ein Frontend, das diese Links verarbeiten kann.

In der Praxis kombinieren viele Systeme mehrere Ansätze, zum Beispiel Inline Citations mit einer klickbaren Quellenliste am Ende.

Metadaten für Quellen

Damit Quellenangaben sinnvoll funktionieren, musst Du beim Chunking und beim Speichern in der Vektordatenbank die richtigen Metadaten erfassen. Folgende Felder sind empfehlenswert:

MetadatumBeschreibungBeispiel
filenameName der Quelldateiurlaubsrichtlinie_2024.pdf
pageSeitennummer bei PDFs4
sectionAbschnitt oder Überschrift3.1 Jahresurlaub
dateDatum des Dokuments2024-01-15
authorAutor oder AbteilungPersonalabteilung
chunk_idEindeutige ID des Abschnittschunk_0042
source_typeArt des Dokumentspdf, docx, md

Je vollständiger die Metadaten, desto präziser die Quellenangabe. Besonders page und section sind für Nutzer wertvoll, weil sie die Information im Originaldokument schnell finden. Mehr dazu, wie Du Dokumente in Abschnitte teilst, findest Du im Artikel Chunking.

Implementierung: Quellen in RAG einbauen

Die Implementierung besteht aus drei Schritten: Metadaten beim Chunking erfassen, Metadaten beim Retrieval mitliefern, und Metadaten in den Prompt einbauen.

from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import Chroma

# Dokument mit Metadaten laden
document = {
    "text": "Bei fünf Jahren Betriebszugehörigkeit stehen 28 Urlaubstage zu.",
    "metadata": {
        "filename": "urlaubsrichtlinie_2024.pdf",
        "page": 4,
        "section": "3.1 Jahresurlaub",
        "date": "2024-01-15",
        "author": "Personalabteilung",
        "chunk_id": "chunk_0042"
    }
}

# Chunking und Embedding
text_splitter = RetrievalCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = text_splitter.split_text(document["text"])

# In Vektordatenbank speichern, Metadaten bleiben erhalten
vectorstore = Chroma.from_texts(
    texts=chunks,
    metadatas=[document["metadata"]] * len(chunks),
    embedding=embedding_model
)

# Retrieval mit Metadaten
results = vectorstore.similarity_search_with_score(
    "Wie viele Urlaubstage bei fünf Jahren?",
    k=3
)

# Ergebnisse mit Metadaten ausgeben
for doc, score in results:
    print(f"Text: {doc.page_content}")
    print(f"Quelle: {doc.metadata['filename']}, "
          f"Seite {doc.metadata['page']}, "
          f"Abschnitt {doc.metadata['section']}")
    print(f"Confidence: {score}")

In diesem Beispiel bleiben die Metadaten durch die gesamte Pipeline erhalten. Beim Retrieval erhältst Du nicht nur den Text, sondern auch die zugehörigen Quellinformationen. Diese gibst Du dann an das Sprachmodell weiter.

Prompt-Engineering für Quellenangaben

Damit das Sprachmodell Quellen korrekt angibt, musst Du es im Prompt anweisen. Ohne Anweisung erfindet das Modell oft Quellen oder lässt sie weg. Ein guter System-Prompt für Quellenangaben sieht so aus:

Du bist ein Assistent, der Fragen auf Basis der folgenden Dokumentenabschnitte beantwortet.

Regeln:
1. Antworte nur auf Basis der bereitgestellten Abschnitte.
2. Gib nach jeder Aussage die Quelle in eckigen Klammern an, zum Beispiel [1].
3. Liste am Ende alle Quellen mit Nummer, Dateiname, Seite und Abschnitt auf.
4. Wenn die Abschnitte die Frage nicht beantworten, sage: "Die Quellen enthalten keine Information dazu."
5. Erfinde keine Informationen oder Quellen.

Dokumentenabschnitte:
[1] Datei: urlaubsrichtlinie_2024.pdf, Seite 4, Abschnitt 3.1
Inhalt: Bei fünf Jahren Betriebszugehörigkeit stehen 28 Urlaubstage zu.

[2] Datei: urlaubsrichtlinie_2024.pdf, Seite 5, Abschnitt 3.2
Inhalt: Über 10 Jahre Betriebszugehörigkeit erhöht sich der Anspruch auf 30 Tage.

Frage: Wie viele Urlaubstage habe ich bei fünf Jahren?

Das Modell antwortet dann beispielsweise: “Bei fünf Jahren Betriebszugehörigkeit stehen Dir 28 Urlaubstage zu [1].” und listet am Ende die Quelle auf. Wichtig ist, dass Du die Abschnitte im Prompt bereits mit Nummern versehen hast, damit das Modell diese Nummern übernehmen kann.

Beispiel: RAG mit Quellenangaben

Ein vollständiger Ablauf sieht so aus:

Schritt 1: Frage stellen Nutzer fragt: “Was ist die Regelung zur Homeoffice-Ausstattung?”

Schritt 2: Retrieval Das System sucht in der Vektordatenbank und findet drei Abschnitte:

  • Chunk A: homeoffice_richtlinie.pdf, Seite 2, Abschnitt 1.1, Confidence 0.89
  • Chunk B: homeoffice_richtlinie.pdf, Seite 3, Abschnitt 1.2, Confidence 0.85
  • Chunk C: it_sicherheit.pdf, Seite 7, Abschnitt 4.0, Confidence 0.72

Schritt 3: Prompt zusammenstellen Die drei Abschnitte werden mit Nummerierung und Metadaten in den Prompt eingebaut.

Schritt 4: Modell erzeugt Antwort “Die Homeoffice-Ausstattung umfasst einen Laptop, einen Monitor und ergonomische peripherals [1]. Die Kosten übernimmt die Firma bis zu einem Betrag von 500 Euro [1]. Für die Einrichtung gilt die IT-Sicherheitsrichtlinie, insbesondere bezüglich VPN-Zugang [3].”

Schritt 5: Quellenliste Am Ende erscheint:

  • [1] homeoffice_richtlinie.pdf, Seite 2, Abschnitt 1.1
  • [2] homeoffice_richtlinie.pdf, Seite 3, Abschnitt 1.2
  • [3] it_sicherheit.pdf, Seite 7, Abschnitt 4.0

Der Nutzer kann jetzt jede Aussage nachprüfen und sieht, dass Chunk B zwar gefunden, aber in der Antwort nicht verwendet wurde. Das ist normal und kein Problem.

Quellenangaben in Frontends

Verschiedene Oberflächen stellen Quellen unterschiedlich dar:

Open WebUI: Zeigt gefundene Dokumentenabschnitte nach der Antwort an, oft mit Dateinamen und Seitenangabe. Klickbare Links führen zum Originaldokument. Die Darstellung ist kompakt und übersichtlich.

AnythingLLM: Listet Quellen in einem separaten Bereich unter der Antwort auf. Jede Quelle zeigt den Dokumentennamen und den relevanten Textausschnitt. Das hilft beim schnellen Nachlesen ohne das Originaldokument zu öffnen.

Custom UIs: Wenn Du eine eigene Oberfläche baust, zum Beispiel mit Gradio oder Streamlit, hast Du volle Kontrolle. Du kannst Inline Citations als klickbare Badges darstellen, Quellen in einem Seitenpanel anzeigen oder Tooltips mit dem Originaltext einblenden.

Unabhängig vom Frontend ist es wichtig, dass die Metadaten aus der Vektordatenbank bis zur Anzeige durchgereicht werden. Ein häufiger Fehler ist, dass Metadaten beim Retrieval zwar vorhanden sind, aber im Prompt oder in der Antwortdarstellung verloren gehen. Modelle, die Du lokal mit Ollama betreiben kannst, unterstützen die Verarbeitung solcher strukturierten Prompts zuverlässig.

Typische Stolpersteine bei Quellenangaben

Bei der Arbeit mit Quellenangaben treten immer wieder die gleichen Probleme auf:

  1. Metadaten gehen verloren: Wenn Du beim Chunking oder Speichern in die Vektordatenbank keine Metadaten erfasst, kannst Du später keine Quellen angeben. Erfasse Metadaten von Anfang an.

  2. Modell ignoriert Anweisung: Manche Modelle folgen der Anweisung, Quellen zu nennen, nicht zuverlässig. Teste verschiedene Modelle und formuliere den Prompt deutlicher.

  3. Falsche Quellenzuordnung: Das Modell verwechselt Nummern und ordnet eine Aussage der falschen Quelle zu. Passiert häufig bei vielen Abschnitten im Prompt. Reduziere die Anzahl oder nutze Reranking.

  4. Veraltete Dokumente: Wenn mehrere Versionen eines Dokuments in der Datenbank liegen, zitiert das Modell möglicherweise eine alte Version. Nutze Datums-Metadaten und filtere bei Bedarf.

  5. Quellen ohne Seitenangabe: Bei PDFs ohne erkennbare Seitenstruktur fehlt die Seitennummer. Nutze OCR-Tools, die Seiteninformationen extrahieren, mehr dazu im Bereich PDF-Verarbeitung.

  6. Hallucinierte Quellen: Das Modell erfindet Quellen, die nicht in den Abschnitten vorkommen. Ein klarer Prompt mit der Regel “Erfinde keine Quellen” hilft, aber überprüfe trotzdem.

  7. Zu viele Quellen: Wenn das Modell jede Aussage mit drei Quellen belegt, wird die Antwort unleserlich. Begrenze die Anzahl der Quellen pro Aussage im Prompt.

  8. Fehlende Verknüpfung im Frontend: Das Frontend zeigt zwar Quellen an, aber sie sind nicht klickbar oder führen ins Leere. Teste die Verlinkung mit echten Dateipfaden.

Hardware, Kosten und Sicherheit bei Quellenangaben

Quellenangaben selbst benötigen keine zusätzliche Hardware. Die Metadaten sind klein und fallen bei der Speicherung kaum ins Gewicht. Die Vektordatenbank wird minimal größer, weil pro Chunk einige Metadaten-Felder hinzukommen. Das ist vernachlässigbar.

Kosten entstehen nicht durch Quellenangaben selbst, sondern durch einen leicht längeren Prompt, weil die Metadaten mit übergeben werden. Bei lokalen Modellen mit Ollama ist das kein Problem, da keine Token-Kosten anfallen. Bei Cloud-APIs können die zusätzlichen Token ins Gewicht gehen, wenn Du viele Quellen pro Anfrage verarbeitest.

Sicherheitstechnisch ändern Quellenangaben nichts an der Datenhaltung. Deine Dokumente bleiben lokal, solange Du Embedding-Modell, Vektordatenbank und Sprachmodell auf dem eigenen Rechner betreibst. Quellenangaben erhöhen sogar die Sicherheit, weil sie nachvollziehbar machen, welche Dokumente das Modell genutzt hat. Das hilft bei Audits und Datenschutzprüfungen.

FAQ: Quellenangaben bei RAG - Typische Fragen

Was ist eine Quellenangabe bei RAG?

Eine Quellenangabe nennt das Dokument und den Abschnitt, aus dem eine Information in der Antwort stammt. Sie besteht meist aus Dateiname, Seitennummer und Abschnittsangabe.

Warum sind Quellenangaben wichtig?

Sie machen Antworten nachverfolgbar, erhöhen das Vertrauen, erleichtern das Debugging und sind für Compliance-Zwecke oft erforderlich.

Kann das Modell Quellen erfinden?

Ja, das passiert. Ein klarer Prompt mit der Regel, keine Quellen zu erfinden, reduziert das Risiko. Überprüfe Quellen trotzdem regelmäßig.

Welche Metadaten sollte ich speichern?

Zumindest Dateiname, Seitennummer und Abschnitt. Zusätzlich sinnvoll sind Datum, Autor und eine eindeutige Chunk ID.

Wie weise ich das Modell an, Quellen zu nennen?

Über einen System-Prompt, der die Regeln festlegt. Gib die Abschnitte nummeriert an und fordere das Modell auf, diese Nummern in der Antwort zu verwenden.

Was mache ich, wenn das Modell die Quellen-Anweisung ignoriert?

Probiere ein anderes Modell, formuliere den Prompt deutlicher, oder reduziere die Anzahl der Abschnitte im Prompt. Manche Modelle folgen strukturierten Anweisungen besser als andere.

Wie stelle ich Quellen im Frontend dar?

Das hängt vom Tool ab. Open WebUI und AnythingLLM zeigen Quellen automatisch an. Bei eigenen Oberflächen kannst Du Inline Citations, Quellenlisten oder klickbare Links umsetzen.

Was ist der Unterschied zwischen Citation und Reference?

Beide Begriffe werden oft synonym verwendet. Citation ist die englische Bezeichnung für Quellenangabe, Reference bedeutet Verweis und wird meist für die Quellenliste am Ende verwendet.

Brauche ich Quellenangaben bei kleinen Dokumentenmengen?

Ja. Auch bei wenigen Dokumenten ist es hilfreich zu wissen, aus welchem Abschnitt eine Antwort stammt. Der Aufwand für die Implementierung ist gering.

Können Quellenangaben Hallucinations verhindern?

Vollständig verhindern nein, aber sie machen Hallucinations erkennbar. Wenn das Modell eine Quelle nennt, die die Information nicht enthält, ist das ein klarer Hinweis auf eine erfundene Antwort.

Wie gehe ich mit mehreren Versionen eines Dokuments um?

Speichere das Datum als Metadatum und filtere bei der Suche nach dem aktuellsten Dokument. Alternativ entferne alte Versionen aus der Vektordatenbank.

Was ist Provenance?

Provenance bezeichnet die Herkunft und Nachverfolgbarkeit einer Information. Bei RAG bedeutet es, dass jede Aussage bis zum ursprünglichen Dokumentenabschnitt zurückverfolgt werden kann.

Quellen und weiterführende Literatur

  • LangChain Dokumentation zu Metadaten und Retrieval
  • LlamaIndex Citation- und Source-Tracking-Funktionen
  • Open WebUI Dokumentation zur RAG-Quellenanzeige
  • AnythingLLM Dokumentation zu Workspace-Quellen
  • Forschungspapiere zu Provenance und Citation in LLM-Anwendungen
Zurück zum KI Blog
Share:

Ähnliche Beiträge