RAG in n8n
Was ist RAG?
Retrieval-Augmented Generation (RAG) ist eine Technik, mit der die Qualität von KI-Antworten verbessert wird, indem Sprachmodelle mit externen Datenquellen kombiniert werden. Anstatt sich nur auf die internen Trainingsdaten des Modells zu verlassen, ruft ein RAG-System relevante Dokumente ab und stützt seine Antworten auf aktuelle, fachspezifische oder private Wissensbestände. RAG-Workflows nutzen dafür typischerweise Vektordatenbanken, um diese externen Daten effizient zu verwalten und abzurufen.
Was ist eine Vektordatenbank?
Eine Vektordatenbank ist eine spezielle Datenbank, die für das Speichern und Abrufen hochdimensionaler Vektoren optimiert ist. Diese Vektoren sind numerische Repräsentationen von Texten, Bildern oder anderen Datentypen. Wenn du ein Dokument hochlädst, teilt die Vektordatenbank es in mehrere Chunks und wandelt jeden Chunk mithilfe eines Embedding-Modells in einen Vektor um.
Du kannst diese Vektoren mithilfe einer Ähnlichkeitssuche abfragen – eine Methode, die auf semantischer Bedeutung statt auf Schlüsselwortübereinstimmung basiert. Dadurch bieten Vektordatenbanken eine hervorragende Grundlage für RAG und andere KI-Systeme, die große Mengen an Wissen abrufen und verarbeiten müssen.
Wie verwende ich RAG in n8n?
Starte mit einer RAG-Vorlage
👉 Nutze die RAG-Einstiegsvorlage, um schnell mit RAG in n8n loszulegen. Diese Vorlage enthält zwei vorkonfigurierte Workflows: einen zum Hochladen von Dateien und einen zum Abfragen dieser Dateien.
Daten in die Vektordatenbank einfügen
Bevor ein Agent auf dein benutzerdefiniertes Wissensarchiv zugreifen kann, musst du zunächst deine Daten in die Vektordatenbank hochladen:
- Füge die erforderlichen Knoten hinzu, um deine Quelldaten zu erhalten.
- Füge einen Vektordatenbank-Knoten (z. B. Simple Vector Store) hinzu und wähle die Aktion Dokumente einfügen.
- Wähle ein Embedding-Modell, um den Text in Vektor-Embeddings umzuwandeln. Weitere Informationen zur Auswahl des richtigen Modells findest du in den häufig gestellten Fragen.
- Füge einen Default Data Loader-Knoten hinzu (ein Standardknoten zum Aufteilen von Inhalten), um den Inhalt in Chunks zu unterteilen. Du kannst entweder die Standardeinstellungen verwenden oder eine benutzerdefinierte Chunking-Strategie festlegen:
- Nach Zeichen teilen: Aufteilung nach Zeichenlänge.
- Rekursives Zeichenteilen: Rekursive Aufteilung nach Markdown-, HTML-, Codeblöcken oder normalen Zeichen (für die meisten Szenarien geeignet).
- Nach Token teilen: Aufteilung nach Token-Anzahl.
- (Optional) Füge jedem Chunk Metadaten hinzu, um den Kontext zu bereichern und spätere Filterungen zu erleichtern.
Daten abfragen
Du kannst Daten auf zwei Arten abfragen: über einen Agenten oder direkt über Knoten.
Mit einem Agenten
- Füge einen Agenten zu deinem Workflow hinzu.
- Füge die Vektordatenbank als Tool hinzu und gib eine Beschreibung an, damit der Agent versteht, wann er sie nutzen soll:
- Lege die Anzahl der Ergebnisse fest, um zu definieren, wie viele Chunks zurückgegeben werden sollen.
- Aktiviere Metadaten einbeziehen, um zusätzlichen Kontext für jeden Chunk bereitzustellen.
- Verwende dasselbe Embedding-Modell, das du beim Einfügen der Daten verwendet hast.
Profi-Tipp
Um teure Token-Nutzung bei teuren Modellen zu sparen, kannst du zunächst das Vector Store Question Answer Tool verwenden, um relevante Daten abzurufen, und das Ergebnis dann an den Agenten weiterleiten. Ein praktisches Beispiel findest du in dieser Vorlage.
Direkt über Knoten
- Füge einen Vektordatenbank-Knoten zur Arbeitsfläche hinzu und wähle die Aktion Mehrere abrufen.
- Gib deine Abfrage oder Frage ein:
- Lege die Anzahl der Ergebnisse fest, um zu steuern, wie viele Chunks zurückgegeben werden.
- Aktiviere bei Bedarf Metadaten einbeziehen.
Häufig gestellte Fragen
Wie wähle ich das passende Embedding-Modell aus?
Das ideale Embedding-Modell hängt vom Anwendungsfall ab.
Im Allgemeinen sind kleinere Modelle (z. B. text-embedding-ada-002) schneller und kostengünstiger und eignen sich gut für kurze Dokumente, allgemeine Anwendungsfälle oder leichtgewichtige RAG-Workflows. Größere Modelle (z. B. text-embedding-3-large) bieten eine stärkere semantische Verständnisfähigkeit und sind besser geeignet für lange Dokumente, komplexe Themen oder Szenarien mit hohen Genauigkeitsanforderungen.
Welche Textaufteilungsstrategie passt am besten zu meinem Anwendungsfall?
Das hängt stark von deinen Daten ab:
- Kleine Chunks (z. B. 200 bis 500 Token) eignen sich für feinkörnige Abfragen.
- Große Chunks können mehr Kontext enthalten, laufen aber Gefahr, unklar oder verrauscht zu werden.
Die richtige Überlappung zwischen Chunks ist entscheidend, damit die KI den Kontext richtig interpretieren kann. Daher führt die Aufteilung nach Markdown- oder Codeblöcken oft zu besseren Ergebnissen.
Eine weitere bewährte Methode ist es, den Chunks zusätzlichen Kontext hinzuzufügen (z. B. den Namen des Ursprungsdokuments). Wenn du tiefer in dieses Thema eintauchen möchtest, empfehlen wir diesen hervorragenden Artikel von Anthropic.