Ich habe einen Workflow für RAG, aber er funktioniert nicht. Nach dem Hochladen von Text in die Supabase-Datenbank (Workflow endet erfolgreich) habe ich das LLM nach etwas gefragt, das in Supabase hochgeladen wurde. Aber die KI gab eine falsche Antwort (Sie gab mir etwas wie: Ich weiß nicht, wovon du sprichst.
Jemand weiß, wie man dieses Problem behebt.
Mein Workflow hier
@Quent klassischer RAG-Retrieval-Miss: Das Hochladen funktioniert, aber die Suche gibt nichts zurück, also hat der Agent keinen Kontext und sagt „Ich weiß nicht.
Ich denke, ich habe das LLM korrekt eingerichtet. Und ich denke, das Problem liegt genau bei Supabase, denn wenn ich in der Supabase-Datenbank schaue, sehe ich die hochgeladenen Embeddings nicht.
@Quent das grenzt es ein: Erfolg, aber keine Zeilen bedeutet, dass sie irgendwo landen, wo du nicht schaust. Das Wichtigste: Der Supabase Vector Store Node ignoriert das Feld table-name und schreibt immer in eine Tabelle mit dem Namen documents (bekannte Eigenheit). Überprüfe also die Tabelle documents, falls du eine anders benannte Tabelle erstellt hast oder überprüfst, sind deine Zeilen in documents.
Bestätige auch, dass die Tabelle documents die Quickstart-Struktur hat (id, content, metadata, embedding vector(N)) mit der Dimension, die deinem Embedding-Modell entspricht. Falls diese Spalte fehlt, bleibt nichts erhalten.
Falls du stattdessen einen RLS/Policy-Fehler siehst, wechsle die Anmeldedaten zu deinem service_role Key (dieser umgeht RLS). Aber überprüfe zuerst die Tabelle documents, da sind sie normalerweise.
[quote=“achamm, post:4, topic:299971”]
Das grenzt es ein: Erfolg, aber keine Zeilen bedeutet, dass sie irgendwo landen, wo du nicht schaust. Das Wichtigste: Der Supabase Vector Store Node ignoriert das Feld „table-name
Besser als wenn ich Text in Supabase hochlade, sehe ich nie die Interaktion des Supabase-Knotens mit dem eingebetteten Modell
@Quent das ist der Grund. Der Supabase Vector Store Node benötigt einen verbundenen Embeddings Sub-Node, den kleinen „Embeddings"-Port unterhalb des Nodes. Wenn dort nichts verbunden ist, hat der Node kein Modell, um deinen Text in Vektoren umzuwandeln, daher speichert die Insert-Operation nichts Brauchbares, was genau erklärt, warum du nie siehst, dass er mit einem Embedding-Modell interagiert.
Verbinde einen Embeddings Node (Embeddings OpenAI oder einen anderen Provider) mit diesem Port am Vector Store Node, führe dann erneut aus, und du wirst sehen, dass Zeilen mit Embeddings in der documents-Tabelle landen. Ein Hinweis für später: Verwende auf der Abfrageseite das exakt gleiche Embeddings-Modell, sonst funktioniert das Retrieval nicht richtig.
Falls die documents-Tabelle in Supabase überhaupt nicht angezeigt wird, bedeutet das, dass die Tabelle nie erstellt wurde – n8n erstellt sie nicht automatisch für dich. Gehe zu Supabase > SQL Editor und führe folgendes aus:
create extension if not exists vector;
create table documents (
id bigserial primary key,
content text,
metadata jsonb,
embedding vector(1536)
);
create index on documents using ivfflat (embedding vector_cosine_ops);
Hinweis: Ändere 1536 so, dass es der Dimension deines Embedding-Modells entspricht (OpenAI text-embedding-3-small = 1536, text-embedding-3-large = 3072). Sobald die Tabelle existiert, führe deinen Upload-Workflow erneut aus und du solltest Zeilen in der documents-Tabelle unter Table Editor sehen.
Jetzt sehe ich die documents-Tabelle, aber ich sehe keine Zeilen in dieser Tabelle. Als ich Text in meine Workflow-Tabelle hochgeladen habe, hat das meine Tabelle nicht gefüllt.
Hey @Quent, da die Tabelle zwar existiert, aber immer noch null Zeilen hat, schlägt der Insert selbst wahrscheinlich stillschweigend fehl.
Schnelle Checks:
Klick nach einem Run auf den Vector Store Node und überprüfe dessen tatsächliche Ausgabe – ein grüner Haken im Workflow bedeutet nicht immer, dass der Node wirklich Daten geschrieben hat.
Bestätige, dass er auf „Insert
Stimme @achamm zu, Embedding-Größenabweichung ist bei weitem die #1-Ursache.
Zwei weitere Dinge, die es wert sind zu überprüfen, falls seine Fixes das Problem nicht lösen:
- Supabase-Vektorspalten-Dimension: Wenn du die Tabelle erstellt hast, hat die
embedding-Spalte eine feste Größe (z.B.vector(1536)). Falls dein Embedding-Modell eine andere Größe ausgibt, können Einfügungen lautlos fehlschlagen oder die Suche gibt nichts zurück. Führe\d documentsim Supabase SQL-Editor aus, um zu bestätigen, dass die Dimension deinem Modell entspricht. - Chunking + top_k: Wenn deine Chunks zu groß sind (ganze Seiten) oder dein
top_kzu niedrig ist (wie 1), könnte der Retriever einen Chunk zurückziehen, der eigentlich gar nicht die Antwort enthält. Probier Chunks von ~500 Token und top_k = 4-5 zum Anfang.
Teil den Workflow, falls es nach alledem immer noch fehlschlägt!
Ich habe das Problem bereits gelöst. Danke euch allen
