Sicheres Retrieval Augmented Generation (RAG) mit Berechtigungen
November 2024
Für nahezu alle Unternehmen und Organisationen ist es wichtig, Wissen leicht zugänglich zu machen. Wichtig ist jedoch, dass Kollegen nur Informationen abrufen können, auf die sie auch in den jeweiligen Quellen (Content Repositories) zugreifen können. Das gleiche Prinzip muss daher oft auch für Retrieval Augmented Generation (RAG) gelten.
In diesem Blogbeitrag wollten wir erklären, wie wir Retrieval Augmented Generation anhand der Nutzerberechtigungen innerhalb der RheinInsights Retrieval Suite implementieren.

Suche mit early binding Security Trimming
Bei der Unternehmenssuche wird normalerweise early binding Security Trimming verwendet, um nur Ergebnisse abzurufen, die ein Benutzer auch sehen darf. Dazu werden zwei unterschiedliche Indizes erstellt, ein Index für die indizierten Dokumente (Dokumentenindex) und einer für die Benutzergruppenbeziehungen (Principal-Index).
Dokumentindex
Der Dokumentenindex enthält alle Inhalte aus dem indexierten Quellsystem sowie die Dokumentenmetadaten. Zu den Metadaten gehören Zugriffskontrolllisten (ACLs), eine für Allow-ACLs und eine für Deny-ACLs. Diese ACLs müssen genau die Benutzer- und Gruppentoken enthalten, die Zugriff auf das indexierte Dokument haben.

Principal Index
Der Principal-Index beherbergt die Benutzer-Gruppenbeziehungen. Dabei indexieren unsere Konnektoren die Benutzer-IDs als Schlüssel und alle Gruppen des Benutzers als Werte. Die Konnektoren kümmern sich um die Berechnung der transitiven Hülle, damit Gruppen zu Gruppen-Beziehungen nicht zur Suchzeit expandiert werden müssen.
Im Prinzip ist daher der Principal-Index ein Key-Value-Store, der zur Suchzeit einfach abgefragt werden kann, um die Benutzer- und Gruppentoken für einen Benutzer abzurufen.

Suche mit Security Trimming zur Suchzeit - Enterprise Search
Zum Zeitpunkt der Such-Abfrage muss ein Benutzer bei der Suchanwendung angemeldet sein. Bevor wiederum eine Anfrage für den Dokumentenindex gestellt wird, lädt die Suchanwendung die Gruppen für den Benutzer. Anschließend wird die ursprüngliche Such- und Filterabfrage des Benutzers mit Filtern angereichert, die auf die ACL-Felder allow_acl und deny_acl wirken. Zum Beispiel,
query = rheininsights
wird zu
query = (rheininsights) AND (allow_acl:"user@company.org" OR allow_acl:"group1" ...) AND NOT (deny_acl:"user@company.org" OR deny_acl:"group1" ...)
Bitte beachten Sie, dass unsere RheinInsights Retrieval Suite Enterprise Search mit Security Trimming für alle unterstützten Suchmaschinen liefert. Zum Zeitpunkt des Schreibens sind dies Microsoft Search, Azure AI Search, Apache Solr und Elasticsearch.
Vector Search mit Benuzter- und Gruppenrechten
Der gleiche Ansatz des early binding Security Trimmings kann problemlos auf eine Vektorsuche angewandt werden. Alle modernen Vektorsuchmaschinen wie Azure AI Search, Apache Solr und Elasticsearch unterstützen Filter zur Query-Zeit. Das bedeutet, dass Sie im Gegensatz zu einer Keyword-Suche eine Vektorsuche durchführen und denselben allow_acl- und deny_acl-Filter wie oben beschrieben anwenden:
query = (v:[...]) AND (allow_acl:"user@company.org" OR allow_acl:"group1" ...) AND NOT (deny_acl:"user@company.org" OR deny_acl:"group1" ...)
Secure Retrieval Augmented Generation für Unternehmen
Jetzt müssen wir diese Teile nur noch zusammenfügen, um eine secure Retrieval Augmented Generation in Bot- oder Q&A-Szenarien zu implementieren. Wenn die zugrunde liegende Suchmaschine Security Trimming implementiert, generiert nämlich auch der Bot Antworten, ohne sensitives Unternehmenswissen zu exponieren. Dies gilt zumindest solange Sie LLMs verwenden, die ohne ebene jene sensiblen Daten trainiert wurden (siehe den Hinweis unten).
Die RheinInsights Retrieval Suite bietet secure Retrieval-Augmented-Generation-Setups für alle mitgelieferten Konnektoren mit Azure AI Search, Apache Solr oder Elasticsearch. Es erstellt einen Index für die Unternehmenssuche und die sichere Vektorsuche. Zum Zeitpunkt der Abfrage führt ein angemeldeter Benutzer die oben beschriebene Vektorsuche durch und die Antworten werden mit der Eingabeabfrage in Beziehung gesetzt. Da die Suchergebnisse gefiltert sind, können die Antworten dem Benutzer keine Informationen preisgeben, auf die der Nutzer zum Index-Zeitpunkt keinen Zugriff hat.
Bitte beachten Sie, dass den Autoren zum Zeitpunkt des Verfassens dieses Artikels kein Ansatz bekannt ist, mit dem ein LLM (großes Sprachmodell, wie bspw. GPT) trainiert werden kann, so dass Securit auf LLM-Seite vollständig zuverlässig gegeben ist. Daher ist der beschriebene Ansatz eine einfache Lösung, um sensible Informationen zum Zeitpunkt der Abfrage für RAGs nicht preiszugeben.