~/tools / Embeddings und Suche (RAG) / RAG Citation Checker
RAG Citation Checker — Quellennummern und Zitate einer RAG-Antwort anhand der Quellen prüfen
Prüft die Zitate einer RAG-Antwort anhand der Quellen, die Sie gesendet haben: Jede Quellennummer muss existieren, jede zitierte Textstelle sollte in ihrer Quelle vorkommen, und das Tool listet Sätze ohne Quellennummer, nie zitierte Quellen und abgeschnittene Antworten auf. Liest Antworten von /api/chat von Ollama (auch gestreamte), OpenAI-kompatible Antworten und reinen Text. Nichts verlässt Ihren Browser.
Die Beispielantwort ist von Hand geschrieben und zeigt eine zitierte Textstelle, die nicht in ihrer Quelle steht.
4 Quellen (ein JSON-Array aus Strings). Antwort gelesen als eine /api/chat-Antwort von Ollama, in der Form JSON mit Zitaten.
Tokens im Prompt (prompt_eval_count): 306
- Die zitierte Textstelle von Zitat #2 steht nicht in Quelle [4].
Zitate
| Quelle | Zitierte Textstelle | Ergebnis |
|---|---|---|
| [2] | hnsw.ef_search is 40 by default | Genau so gefunden |
| [4] | 4 bytes per dimension plus 8 | Nicht in dieser Quelle |
Das prüft nur, ob die Nummern und die zitierten Textstellen zu den Quellen passen. Es kann nicht sagen, ob die Antwort richtig ist oder ob eine Quelle einen Satz wirklich belegt.
Antwortformat nach der API-Referenz und dem Quellcode von Ollama, geprüft mit Ollama 0.40.11 am 2026-11-05. Ollama API: /api/chat
Alles läuft in Ihrem Browser. Das Tool verbindet sich mit nichts.
Wenn ein Modell anhand nummerierter Quellen antwortet, lassen sich die Zitate maschinell prüfen. Fügen Sie dieselben Quellen ein, die Sie gesendet haben, im selben Format wie im RAG Prompt Builder (ein JSON-Array aus Strings oder Objekten oder Text, der durch Zeilen mit --- oder durch Leerzeilen getrennt ist; sie werden auf dieselbe Weise ab [1] nummeriert), und fügen Sie die Antwort ein. Die Antwort kann die vollständige Antwort von /api/chat von Ollama sein (das Tool nimmt message.content; eine gestreamte Antwort mit einem JSON-Objekt pro Zeile wird zusammengefügt), eine OpenAI-kompatible Antwort (choices[0].message.content) oder nur der Text. Ist die Antwort JSON mit einer Antwort und einer Liste von Zitaten, wie es der RAG Prompt Builder anfordert, prüft das Tool jedes Zitat: Die Quellennummer muss eine der Quellen sein, und die zitierte Textstelle sollte in dieser Quelle vorkommen, entweder genau so oder unter Ignorieren von Unterschieden bei Leerzeichen, Groß- und Kleinschreibung, Zeichen in voller Breite und typografischen Anführungszeichen. Ist die Antwort Text, sammelt das Tool die Nummern in eckigen Klammern, etwa [2] oder [1, 3], meldet Nummern, die zu keiner Quelle passen, und listet die Sätze ohne Nummer auf. In beiden Fällen listet es die Quellen auf, die nie zitiert wurden, und warnt, wenn es überhaupt keine Zitate gibt oder wenn done_reason "length" ist, was bedeutet, dass die Antwort durch num_predict abgeschnitten wurde. Was es nicht kann, ist zu beurteilen, ob die Antwort richtig ist. In unserem Test mit qwen2.5:7b zitierte eine Antwort die richtige Regel aus ihrer Quelle Wort für Wort und nannte trotzdem eine falsche Zahl, und eine andere Antwort sagte, sie wisse es nicht, zitierte aber eine Quelle ohne Bezug. Ein Zitat, das hier besteht, zeigt nur, dass die zitierte Textstelle in der Quelle steht.
Die Kernlogik dieses Tools ist Open Source unter der MIT-Lizenz. github.com/seigo5555/toolkitbox-lib/src/rag-citations.ts
Anwendungsfälle
- Prüfen, dass die Antwort eines lokalen Modells nur Quellen zitiert, die wirklich gesendet wurden, mit Textstellen, die wirklich darin stehen
- Sätze einer Antwort finden, die keine Quelle haben, bevor Sie die Antwort Nutzern zeigen
- Prompts oder Modelle bei denselben Fragen danach vergleichen, wie oft ihre Zitate standhalten
Verwendung
- Fügen Sie die Quellen ein, die Sie mit der Frage gesendet haben, in derselben Reihenfolge.
- Fügen Sie die Antwort ein: die vollständige /api/chat-Antwort, eine OpenAI-kompatible Antwort oder den Text der Antwort.
- Lesen Sie die Tabelle der Zitate, die Sätze ohne Quellennummer und die Quellen, die nicht zitiert wurden.
FAQ
Eine zitierte Textstelle wird als nicht gefunden markiert. Ist die Antwort falsch?
Nicht unbedingt. Das Modell kann die Quelle umschrieben statt abgeschrieben haben. Aber eine Textstelle, die nicht in der Quelle steht, lässt sich nicht prüfen. Behandeln Sie diese Aussage daher als nicht belegt, bis Sie die Quelle gelesen haben.
Alle Zitate bestehen die Prüfung. Ist die Antwort richtig?
Nicht unbedingt. Das Tool prüft nur, ob die Nummern und die zitierten Textstellen zu den Quellen passen. In unserem Test zitierte das Modell die richtige Regel (4 mal die Dimensionen plus 8 Bytes) und antwortete trotzdem 1552 Bytes statt 1,544 für einen Vektor mit 384 Dimensionen.
Warum müssen die Quellen in derselben Reihenfolge stehen?
Die Nummern in der Antwort beziehen sich auf die Reihenfolge, in der die Quellen gesendet wurden. Weicht die Reihenfolge ab, verweist [2] auf einen anderen Text, und die Prüfung ist sinnlos.
Wie teilt das Tool die Antwort in Sätze?
An Zeilenumbrüchen, nach . ! ? gefolgt von einem Leerzeichen und nach den Zeichen in voller Breite 。!?. Eine Nummer, die direkt am Ende eines Satzes steht, etwa "… here. [1]", zählt für diesen Satz. Abkürzungen wie e.g. können einen Satz in zwei teilen.
Was bedeutet done_reason "length"?
Im Quellcode von Ollama ist das der angegebene Grund, wenn die Antwort die Token-Grenze (num_predict) erreicht hat, statt von selbst zu enden. Das Ende der Antwort und möglicherweise ihre Zitate fehlen.
Werden meine Daten irgendwohin gesendet?
Nein. Die Prüfung läuft in Ihrem Browser. Das Tool verbindet sich nie mit Ollama oder einem anderen Dienst.
Passende Artikel
- Ollama-Embeddings in PostgreSQL mit pgvector speichern und durchsuchenOllama-Embeddings mit pgvector in PostgreSQL speichern, mit HNSW oder IVFFlat durchsuchen und die Ergebnisse an /api/chat übergeben, damit die Antwort ihre Quellen zitiert.
- Embeddings mit Ollama: die Grundlagen für Suche und RAGEmbeddings mit /api/embed von Ollama erzeugen: die Modelle und ihre Größen, truncate und dimensions, Vektoren mit Länge 1 und Kosinus-Ähnlichkeit, nach der offiziellen Dokumentation.