Dieser Beitrag wurde von Bartosz Pietrucha geschrieben
Die Entwicklung von LLM-Anwendungen der Enterprise-Klasse ist im heutigen Geschäftsumfeld eine Notwendigkeit. Während sich die Zugänglichkeit von Modellen und APIs verbessert, bleibt eine große Herausforderung bestehen: die Gewährleistung ihrer Sicherheit und die effektive Verwaltung ihrer Berechtigungen.
Um diesem Problem zu begegnen, sind Fine-Grained Authorization (FGA) und Retrieval Augmented Generation (RAG) wirksame Strategien zum Aufbau sicherer, kontextbewusster KI-Anwendungen, die eine strenge Zugriffskontrolle aufrechterhalten. In diesem Artikel untersuchen wir, wie FGA und RAG im Gesundheitswesen eingesetzt werden können und gleichzeitig sensible Daten geschützt werden.
Wir tun dies, indem wir Sie durch die Implementierung eines ReBAC-Autorisierungssystems (Relationship-Based Access Control) führen, das Echtzeitaktualisierungen mit drei Tools unterstützt: AstraDB, Langflow und Permit.io.
Um die Komplexität der Autorisierung in LLM-Anwendungen und die von FGA und RAG angebotenen Lösungen besser zu verstehen, können wir einen Blick auf den digitalen Gesundheitsbereich werfen – denn er stellt ein perfektes Beispiel dar, wo sowohl KI-Fähigkeiten als auch strenge Sicherheit unerlässlich sind. Gesundheitsdienstleister möchten LLMs zunehmend nutzen, um Arbeitsabläufe zu rationalisieren, die Entscheidungsfindung zu verbessern und eine bessere Patientenversorgung zu gewährleisten. Ärzte und Patienten wünschen sich gleichermaßen einen einfachen Zugriff auf Krankenakten über intuitive KI-Schnittstellen wie Chatbots.
Medizinische Daten sind jedoch äußerst sensibel und sollten sorgfältig reguliert werden. Während LLMs intelligente Erkenntnisse liefern können, müssen wir sicherstellen, dass sie nur auf Informationen zugreifen und diese offenlegen, zu deren Einsicht die Benutzer berechtigt sind. Ärzte sollten beispielsweise nur Diagnosen von ihnen zugewiesenen medizinischen Zentren sehen und Patienten sollten nur auf ihre eigenen Unterlagen zugreifen können.
Um mit dem Beispiel der digitalen Gesundheitsversorgung fortzufahren, schauen wir uns ein Beispiel einer medizinischen Anwendung an.
Diese Anwendung besteht aus mehreren Ressourcen, einigen Rollen und einigen Beziehungen zwischen diesen Entitäten:
Ressourcentypen :
Rollen :
Beziehungen :
Wie Sie sehen, wird die Implementierung einer herkömmlichen rollenbasierten Zugriffskontrolle, bei der Berechtigungen direkt zugewiesen werden, aufgrund der hierarchischen Beziehungen unserer Ressourcen nicht ausreichen.
Die Komplexität dieser Anwendungsautorisierung erfordert den Einsatz feinkörnigerer Autorisierungslösungen (FGA) – in diesem Fall Relationship-Based Access Control (ReBAC).
ReBAC, ein Autorisierungsmodell, das vom Zanzibar-Artikel von Google inspiriert ist, leitet Berechtigungen aus Beziehungen zwischen Entitäten im System ab – im Gegensatz zur herkömmlichen rollenbasierten Zugriffskontrolle (RBAC), bei der Berechtigungen direkt zugewiesen werden.
Die Stärke von ReBAC liegt darin, wie Berechtigungen durch diese Beziehungen abgeleitet werden. Schauen wir uns eine visuelle Darstellung unseres Beispiels an:
Im obigen Beispiel hat Dr. Bartosz Zugriff auf die Virusdiagnose nicht aufgrund einer direkt erteilten Erlaubnis, sondern weil er dem Warschauer Medizinischen Zentrum zugewiesen ist, das den Nachmittagsbesuch enthält, der die Diagnose enthält . Somit bilden die Beziehungen zwischen diesen Ressourcen eine Kette, die es uns ermöglicht, Zugriffsberechtigungen abzuleiten.
Die Verwendung dieses Ansatzes bietet klare Vorteile:
Aber damit endet die Herausforderung nicht – da wir ein System aufbauen, das mit LLMs zusammenarbeiten muss, muss es in der Lage sein, diese Beziehungsketten in Echtzeit auszuwerten. Im nächsten Abschnitt erfahren Sie, wie Sie eine Implementierung erstellen, die dies ermöglicht.
Bevor wir fortfahren, werfen wir einen kurzen Blick auf die Autorisierungsregeln, die wir sicherstellen möchten:
Diese Anforderungen können durch den Einsatz von Retrieval Augmented Generation (RAG) erreicht werden.
RAG (Retrieval Augmented Generation) ist eine Technik, die LLM-Ausgaben durch die Kombination zweier wichtiger Schritte verbessert: erstens das Abrufen relevanter Informationen aus einer Wissensdatenbank und dann die Verwendung dieser Informationen, um den LLM-Kontext für eine genauere Generierung zu erweitern. Während RAG mit herkömmlichen Datenbanken oder Dokumentspeichern arbeiten kann, sind Vektordatenbanken für diesen Zweck besonders leistungsfähig, da sie eine semantische Ähnlichkeitssuche durchführen und konzeptionell verwandte Informationen finden können, selbst wenn genaue Schlüsselwörter nicht übereinstimmen.
In der Praxis bedeutet dies, dass das System relevante Dokumente zu „Herzproblemen“ oder „Herz-Kreislauf-Erkrankungen“ abrufen kann, wenn ein Benutzer nach „Herzproblemen“ fragt, wodurch die Antworten des LLM sowohl genauer als auch umfassender werden. Der „Generierungs“-Teil beinhaltet dann, dass das LLM diesen abgerufenen Kontext mit seinem vorab trainierten Wissen synthetisiert, um relevante, sachliche Antworten zu erzeugen, die auf Ihren spezifischen Daten basieren.
Für unsere Implementierung werden wir AstraDB als unsere Vektordatenbank verwenden. AstraDB bietet folgende Vorteile:
Um unsere RAG-Pipeline zu implementieren, verwenden wir auch LangFlow, ein Open-Source-Framework, das den Aufbau dieser Systeme durch seine visuelle Oberfläche intuitiv macht. LangFlow-Systeme können mit einer Python-Umgebung entwickelt werden, die lokal oder auf der in der Cloud gehosteten DataStax-Plattform ausgeführt wird. In unserem Fall wählen wir die zweite Option, indem wir eine serverlose (Vektor-)AstraDB-Datenbank erstellen unter: https://astra.datastax.com
In unserer Implementierung sollten Autorisierungsprüfungen zu einem entscheidenden Zeitpunkt erfolgen – nach dem Abrufen von Daten aus der Vektordatenbank, aber bevor sie dem LLM als Kontext bereitgestellt werden. Auf diese Weise erhalten wir die Sucheffizienz aufrecht, indem wir zunächst alle relevanten Informationen finden und später nicht autorisierte Daten herausfiltern, bevor sie überhaupt das LLM erreichen. Das LLM kann nur Informationen verwenden und offenlegen, zu deren Einsicht der Benutzer berechtigt ist.
Diese Sicherheitsprüfungen werden mit Permit.io umgesetzt, das die Infrastruktur zur Auswertung komplexer Beziehungsketten in Echtzeit bereitstellt. Wenn Ihre Daten wachsen und die Beziehungen komplexer werden, stellt das System weiterhin sicher, dass jede Information nur für Personen mit entsprechender Berechtigung zugänglich ist.
Um mit Permit zu beginnen, können Sie ganz einfach ein kostenloses Konto erstellen, indem Sie die Website unter https://app.permit.io besuchen. Sobald Ihr kostenloses Konto erstellt ist, haben Sie Zugriff auf das Dashboard von Permit, wo Sie Ihre Autorisierungsrichtlinien einrichten, Benutzer und Rollen verwalten und Permit in Ihre Anwendungen integrieren können. Die kostenlose Stufe bietet alle notwendigen Funktionen, um ein digitales Gesundheitsbeispiel mit beziehungsbasierter Zugriffskontrolle (ReBAC) zu erstellen.
Sowohl LangFlow als auch Permit bieten kostenlose Konten an, um mit der Arbeit zu beginnen. Sie müssen also nichts bezahlen, um ein solches System aufzubauen und selbst zu sehen, wie es funktioniert.
Bevor wir uns mit den Implementierungsdetails befassen, ist es wichtig, das Tool zu verstehen, das wir verwenden werden – Langflow. Langflow basiert auf LangChain und ist ein Open-Source-Framework, das die Erstellung komplexer LLM-Anwendungen über eine visuelle Schnittstelle vereinfacht. LangChain bietet eine solide Grundlage, indem es standardisierte Komponenten für gängige LLM-Vorgänge wie Textaufteilung, Einbettungsgenerierung und Gedankenkettenaufforderung bereitstellt. Diese Komponenten können zu leistungsstarken Pipelines zusammengestellt werden, die alles von der Datenaufnahme bis zur Antwortgenerierung abwickeln.
Was Langflow für unseren Anwendungsfall besonders wertvoll macht, ist seine visuelle Builder-Schnittstelle, die es uns ermöglicht, diese Pipelines zu konstruieren, indem wir Komponenten grafisch verbinden – ähnlich wie Sie ein Flussdiagramm zeichnen würden. Dieser visuelle Ansatz erleichtert das Verständnis und die Änderung des Datenflusses durch unsere Anwendung, von der ersten Benutzereingabe bis zur endgültigen autorisierten Antwort. Darüber hinaus ist Langflow aufgrund seines Open-Source-Charakters sowohl kostenlos nutzbar als auch mit benutzerdefinierten Komponenten erweiterbar, was für die Implementierung unserer Autorisierungsprüfungen von entscheidender Bedeutung ist.
Unsere Langflow-Lösung nutzt zwei unterschiedliche, aber miteinander verbundene Abläufe, um einen sicheren Zugriff auf medizinische Informationen zu ermöglichen:
Der Aufnahmefluss ist dafür verantwortlich, Diagnosen zusammen mit ihren jeweiligen Einbettungen in AstraDB zu laden. Wir verwenden MistralAI, um Einbettungen für jede Diagnose zu generieren, sodass später semantische Suchen in den Diagnosedaten durchgeführt werden können. Die an diesem Fluss beteiligten Schlüsselkomponenten sind:
Der Chat-Flow ist für die Interaktion mit Benutzern und die Bereitstellung der erforderlichen Diagnosedaten verantwortlich. Die folgenden Bilder sollten von links nach rechts gelesen werden (die rechte Seite des ersten Bildes setzt sich als linke Seite des zweiten fort):
? Hinweis: Es gibt eine zusätzliche „_ Pip Install“ _ Komponente, die nur einmal ausgeführt wird, um die Installationzuzulassen Modul. Dies liegt daran, dass wir LangFlow auf der Low-Code-Plattform DataStax implementieren. Dieser Schritt entspricht der lokalen Ausführung der Pip-Installationserlaubnis .
Die Abfolge der Vorgänge im Chat Flow ist wie folgt:
Seasonal Migraine Flu virus with high fever --- You are a doctor's assistant and help to retrieve information about patients' diagnoses. Given the patients' diagnoses above, answer the question as best as possible. The retrieved diagnoses may belong to multiple patients. Question: list all the recent diagnoses Answer:
Um die PermitFilter-Komponente auszuführen, die eine entscheidende Rolle in unserer Implementierung spielt, benötigen wir eine laufende Instanz von Permits Policy Decision Point (PDP). Der PDP ist für die Bewertung von Richtlinien und die Entscheidungsfindung darüber verantwortlich, ob eine bestimmte Aktion für einen bestimmten Benutzer und eine bestimmte Ressource zulässig ist. Durch die Durchsetzung dieser Berechtigungsprüfung bevor der Kontext das Sprachmodell erreicht, verhindern wir den Verlust vertraulicher Informationen und stellen die Durchsetzung von Zugriffskontrollrichtlinien sicher.
Die vollständige Implementierung ist in unserem GitHub-Repository verfügbar, wo Sie Folgendes finden:
Um mit unserem KI-Assistenten mit implementierten Berechtigungsprüfungen zu interagieren, können wir einfach den LangFlow-Spielplatz starten. Im folgenden Beispiel bin ich als bartosz@health.app authentifiziert, was bedeutet, dass ich nur Zugriff auf Nachmittagsbesuch und Abendbesuch ohne Morgenbesuch mit Diabetes habe. Dies bedeutet, dass das LLM in seinem Kontext keine Informationen über Diabetes hat.
Die Sicherung des Zugriffs auf sensible Gesundheitsdaten bei gleichzeitiger Nutzung der LLM-Funktionen ist sowohl eine Priorität als auch eine Herausforderung. Durch die Kombination von RAG und feinkörniger Autorisierung können wir KI-Anwendungen erstellen, die sowohl intelligent als auch sicher sind. Die wichtigsten Vorteile sind:
Mit Tools wie LangFlow und Permit.io können Gesundheitsdienstleister beziehungsbasierte Zugriffskontrollsysteme implementieren, die dynamisch auf Rollen- und Beziehungsänderungen reagieren und sicherstellen, dass Daten nur autorisierten Personen zugänglich sind. Durch die Integration dieser Lösungen können Gesundheitsorganisationen KI effektiv nutzen, um die Patientenversorgung zu verbessern, ohne Kompromisse bei der Sicherheit einzugehen.
Das obige ist der detaillierte Inhalt vonErstellen von KI-Anwendungen mit Sicherheit auf Unternehmensniveau mithilfe von RAG und FGA. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!