Mehrinstanzen-Isolation: Die Anforderung, die nach dem Demo eintrifft
Jeder mehrinstanzenfähige RAG entdeckt letztendlich das Gleiche: Das Filtern von Ergebnissen nach dem Abruf ist keine Isolation. Der Filter muss die Suche einschränken, nicht deren Ausgabe beschneiden.
Das Muster
Die Demo läuft auf den Dokumenten eines Kunden. Sie funktioniert. Dann wird der zweite Kunde onboarded und jemand stellt die Frage, die ursprünglich gestellt werden sollte: Kann ein Benutzer von Mandant A jemals einen Chunk sehen, der zu Mandant B gehört?
Die häufigste Antwort auf diesem Punkt ist ein Filter, der auf die abgerufenen Ergebnisse angewendet wird, bevor sie den Prompt erreichen. Er sieht in den Tests korrekt aus und ist strukturell falsch.
Warum Post-Filterung keine Isolation ist
Die approximative Nachbarsuche nach dem nächsten Nachbarn liefert die k nächstgelegenen Vektoren. Wenn Sie dann die entfernen, die der Benutzer nicht sehen darf, sind Sie mit weniger als k Ergebnissen übrig geblieben – und die entfernten waren per Konstruktion unter den semantisch ähnlichsten. Unter einer Abfrage mit niedriger Berechtigung degradiert der Retriever stillschweigend zu seinem Worst-Case-Szenario, und die Qualität wird zu einer Funktion davon, wie viel der Benutzer sehen darf. Das ist eine schreckliche Eigenschaft, die man ausliefern kann.
Schlimmer noch, der entfernte Inhalt hat immer noch eine Vertrauensgrenze überschritten: Er wurde abgerufen, bewertet und im Speicher innerhalb eines Prozesses gehalten, der später einen Prompt rendern wird. Ein Sicherheitsprüfer ist berechtigt, sich dagegen zu wehren, auch wenn der Benutzer ihn nie sieht.
Was man stattdessen tun sollte
Die Suche einschränken. Die Berechtigungspredikat in die Filterebene des Vektor-Speichers schieben, damit nicht zugelassene Chunks niemals Kandidaten sind, und k ehrlich halten: Sie erhalten k Ergebnisse, die der Benutzer tatsächlich sehen darf. Genau deshalb ist die Payload-Filterung eine Kernfunktion und kein Wrapper in den für diesen Anwendungsfall entwickelten Speichern.
Dann entscheiden, woher das Prädikat kommt. Die vollständige Dokument-ACL eines Benutzers bei jeder Abfrage aufzulösen, ist teuer, daher prekompiliert die meisten Systeme eine Gruppe oder eine Label-Menge pro Benutzer und filtern darauf. Der Kompromiss ist die Veraltung: Eine Widerrufung wird bei der nächsten Aktualisierung wirksam. Machen Sie dieses Fenster explizit und kurz genug, dass Sie es verteidigen können.
Die drei Dinge, die Prüfer anfordern
Erstens, Isolation, die auch dann gilt, wenn der Index korrupt oder teilweise neu aufgebaut ist – fehlerhaft schließen, nicht öffnen. Zweitens, eine Audit-Trail von dem, was für jede Antwort abgerufen wurde, nicht nur von dem, was generiert wurde. Drittens, Verschlüsselung pro Mandant oder ein dokumentierter Grund, warum logische Trennung ausreichend ist. Haben Sie diese drei Antworten parat und die Überprüfung geht von Wochen auf ein Meeting.
Was daraus folgt
- Das Filtern abgerufener Ergebnisse ist keine Isolation – die Suche einschränken, nicht deren Ausgabe beschneiden
- Ein Filtern nach dem Abruf macht die Qualität der Antworten von dem abhängig, wie wenig der Benutzer sehen darf
- Berechnen Sie vorab Berechtigungssiegel pro Benutzer und machen Sie das Zeitfenster der Veraltung explizit und vertretbar
- Bereiten Sie sich auf drei Fragen vor: Fail-closed-Verhalten, Abruf-Audit-Trail und Verschlüsselung pro Mandant