Ich baue einen KI-Workflow auf, der einen Vector Store Receiver mit PGVector verbindet. Meistens ruft er das korrekte Dokument ab, aber gelegentlich wird ein weniger relevantes Dokument höher bewertet als das, das ich eigentlich erwarte. Ich habe bereits bestätigt, dass die Dokumente korrekt eingebettet sind und dasselbe Einbettungsmodell für Indizierung und Abfrage verwendet wird. Gibt es etwas zu überprüfen, um die Abrufqualität zu verbessern?
Welche Fehlermeldung wird angezeigt (falls vorhanden)?
Bitte teilen Sie Ihren Workflow
(Wählen Sie die Knoten auf Ihrer Canvas aus und verwenden Sie die Tastenkombinationen CMD+C/CTRL+C und CMD+V/CTRL+V, um den Workflow zu kopieren und einzufügen.)
Wenn ein weniger relevantes Dokument höher rangiert, liegt es oft daran, dass die Kernaussage des relevanten Dokuments durch umgebenden Text in seinem Chunk „verdünnt
Es lohnt sich zu überprüfen, welcher Indextyp auf deiner PGVector-Spalte verwendet wird. Falls es ivfflat oder hnsw ist, führst du tatsächlich eine ungefähre nächste-Nachbar-Suche durch. Wenn du die Standardeinstellungen verwendest, kann „ungefähr
Falls du bereits einen Embedding-Modell-Mismatch ausgeschlossen hast, würde ich mir anschauen, wie die Dokumente aufgeteilt werden. Viele Abrufprobleme entstehen durch Chunks, die mehrere Themen enthalten, was das Embedding weniger fokussiert macht
Eine andere Sache, die man überprüfen sollte, ist, ob deine Dokumente viel wiederholte Wording oder Vorlagen enthalten. Wenn jeder Datensatz mit denselben Absätzen beginnt, enden die Embeddings näher beieinander als erwartet, was es PGVector schwerer macht, die beste Übereinstimmung zu bewerten
Abschließend solltest du dich nicht zu sehr auf den Ähnlichkeitswert selbst verlassen. Vergleiche stattdessen die Top-5-Ergebnisse. Wenn das richtige Dokument konsistent oben in der Liste erscheint, aber nicht an erster Stelle, handelt es sich normalerweise um ein Datqualitätsproblem und nicht um ein Problem mit PGVector
Das ist kein Bug. Das ist das normale Verhalten der einstufigen Vektorsuche: Kosinusähnlichkeit misst thematische Ähnlichkeit, nicht Relevanz. Wenn zwei Chunks innerhalb von ~0,03 Kosinusdistanz liegen, ist es im Grunde Zufall, welcher zuerst rangiert. Dass deine Embeddings korrekt sind, verhindert das nicht.
Lösung (5 Minuten, nativ in n8n ab 1.98):
Stelle auf deinem PGVector Vector Store Node Limit auf 20 (Standard ist 4).
Ein Reranker Connector erscheint unten am Node — verbinde einen Reranker Cohere Sub-Node, Modell rerank-v3.5.
Behalte die Vector Store Retriever und Chain-Verdrahtung bei wie sie ist.
Warum es funktioniert: dein Embedding-Modell hat die Dokumente codiert, ohne die Abfrage je zu sehen. Der Reranker ist ein Cross-Encoder — er liest Abfrage und Chunk zusammen und bewertet die tatsächliche Relevanz. Zu langsam für das gesamte Corpus, ideal über 20 Kandidaten.
Stelle Limit als einfache Zahl ein, nicht als Ausdruck — n8n#14151 ignoriert dort Ausdrücke stillschweigend und fällt auf 4 zurück.