Erstellen von KI-Anwendungen mit Sicherheit auf Unternehmensniveau mithilfe von RAG und FGA

Mary-Kate Olsen
Freigeben: 2024-11-19 11:00:03
Original
197 Leute haben es durchsucht

Dieser Beitrag wurde von Bartosz Pietrucha geschrieben

Einführung

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.

Anwendungsbeispiel: Anwendungen im Gesundheitswesen

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.

Sicherheit durch feingranulare Autorisierung

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:

  1. Ressourcentypen :

    • Medizinische Zentren (z. B. London, Warschau)
    • Besuche (z. B. Vormittagsbesuch, Nachmittagsbesuch)
    • Diagnosen (z. B. Diabetes, Kopfschmerzen, Virus)
  2. Rollen :

    • Ärzte (z. B. Dr. Bartosz)
    • Patienten (z. B. Gabriel, Olga)
  3. Beziehungen :

    • Ärzte werden medizinischen Zentren zugewiesen
    • Besuche gehören zu medizinischen Zentren
    • Diagnosen sind Teil der Besuche
    • Patienten werden mit ihren Besuchen verknüpft

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:

Building AI Applications with Enterprise-Grade Security Using RAG and FGA

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:

  • Es modelliert reale Organisationsstrukturen auf natürliche Weise
  • Berechtigungen passen sich automatisch an, wenn sich Beziehungen ändern
  • Es bietet eine feinkörnige Kontrolle und bleibt gleichzeitig skalierbar

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:

  1. Nur ​​Ärzte mit gültigen Beziehungen zu einem medizinischen Zentrum können dessen Besuche sehen
  2. Der Zugriff auf Diagnosen wird automatisch aus diesen Beziehungen abgeleitet
  3. Änderungen in den Beziehungen (z. B. Wechsel des Arztes) wirken sich sofort auf die Zugriffsrechte aus

Diese Anforderungen können durch den Einsatz von Retrieval Augmented Generation (RAG) erreicht werden.

Retrieval Augmented Generation (RAG)

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:

  • Es speichert und durchsucht effizient Einbettungen
  • Es lässt sich gut mit wachsenden Datenmengen skalieren
  • Es lässt sich gut in LLM-Ketten wie Langflow integrieren (auf die wir später in diesem Artikel eingehen werden)

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.

Implementierungsleitfaden

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:

1. Aufnahmefluss

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:

  • Liste erstellen: Diese Komponente wird verwendet, um eine Liste von Diagnosen zu erstellen, die in AstraDB aufgenommen werden sollen.
  • MistralAI-Einbettungen: Diese Komponente generiert Einbettungen für jede Diagnose, die in AstraDB gespeichert werden.
  • AstraDB: AstraDB dient als Vektorspeicher, in dem die Diagnosen und ihre Einbettungen zum weiteren Abruf gespeichert werden. Building AI Applications with Enterprise-Grade Security Using RAG and FGA

2. Chat-Flow

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):

Building AI Applications with Enterprise-Grade Security Using RAG and FGA

Building AI Applications with Enterprise-Grade Security Using RAG and FGA

? 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:

  1. Benutzereingabe: Der Benutzer initiiert die Interaktion, indem er eine Abfrage eingibt.
  • Beispiel: „Haben wir Patienten mit der Diagnose Diabetes?
  1. Diagnosen abrufen: AstraDB wird basierend auf den Benutzereingaben nach relevanten Diagnosen abgefragt.
  • Beispielsuchergebnis (markiert mit 1 auf dem Flussbild oben):

Building AI Applications with Enterprise-Grade Security Using RAG and FGA

  1. Daten basierend auf Berechtigungen filtern: Bevor wir die Antwort an die nächste Verarbeitungskomponente senden und den Kontext für die Antwort von LLM auf die erste Abfrage erstellen, filtern wir die abgerufenen Diagnosen mithilfe einer benutzerdefinierten PermitFilter-Komponente, um sicherzustellen, dass der Benutzer über das Recht verfügt um jede Diagnose anzuzeigen.
  • Beispiel für gefilterte Ergebnisse (im Flussbild oben mit 2 gekennzeichnet):

Building AI Applications with Enterprise-Grade Security Using RAG and FGA

  1. Antwort generieren: Nach dem Filtern werden die zulässigen Diagnosen als Kontext verwendet, um mithilfe von MistralAI eine Antwort für die Benutzeraufforderung zu generieren.
  • Beispiel-Eingabeaufforderung mit gefiltertem Kontext und Autorisierungsschritt:
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: 

Nach dem Login kopieren

PermitFilter-Komponente

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.

Sehen Sie es in Aktion

Die vollständige Implementierung ist in unserem GitHub-Repository verfügbar, wo Sie Folgendes finden:

  • Benutzerdefinierte LangFlow-Komponenten
  • Permit.io-Integrationscode
  • Detaillierte Einrichtungsanweisungen
  • Beispielabfragen und -antworten

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.

Building AI Applications with Enterprise-Grade Security Using RAG and FGA

Abschluss

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:

  • Kontextbewusste Antworten durch RAG
  • Präzise Zugangskontrolle durch ReBAC
  • Natürliche Modellierung organisatorischer Beziehungen
  • Skalierbare Sicherheit, die sich an sich ändernde Beziehungen anpasst

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!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage