ホームページ >バックエンド開発 >Python チュートリアル >RAG と FGA を使用したエンタープライズ グレードのセキュリティを備えた AI アプリケーションの構築
この投稿は Bartosz Pietrucha によって書かれています
今日のビジネス環境では、エンタープライズ グレードの LLM アプリケーションを構築することが不可欠です。モデルと API のアクセシビリティは向上していますが、セキュリティの確保と権限の効果的な管理という重要な課題が 1 つ残っています。
これに対処するには、ファイングレイン認証 (FGA) と取得拡張生成 (RAG) が、厳格なアクセス制御を維持する安全でコンテキスト認識型の AI アプリケーションを構築するための効果的な戦略です。この記事では、機密データを保護しながら医療現場で FGA と RAG をどのように適用できるかを検討します。
これを行うには、AstraDB、Langflow、Permit.io の 3 つのツールを使用してリアルタイム更新をサポートするリレーションシップベースのアクセス制御 (ReBAC) 認証システムの実装をガイドします。
LLM アプリケーションにおける認証の複雑さ、および FGA と RAG が提供するソリューションをより深く理解するために、デジタル ヘルスケア分野に注目してみましょう。これは、AI 機能と厳格なセキュリティの両方が不可欠な完璧な例を示しているためです。医療提供者は、ワークフローを合理化し、意思決定を改善し、より良い患者ケアを提供するために、LLM を活用することをますます望んでいます。医師も患者も同様に、チャットボットなどの直感的な AI インターフェイスを通じて医療記録に簡単にアクセスできることを望んでいます。
ただし、医療データは非常に機密性が高いため、慎重に規制する必要があります。 LLM はインテリジェントな洞察を提供できますが、ユーザーが表示を許可されている情報のみにアクセスして公開するようにする必要があります。たとえば、医師は割り当てられた医療センターからの診断のみを見る必要があり、患者は自分の記録にのみアクセスできるようにする必要があります。
デジタル ヘルスケアの例に進み、医療アプリケーションの例を見てみましょう。
このアプリケーションは、いくつかのリソース、いくつかのロール、およびこれらのエンティティ間のいくつかの関係で構成されています。
リソースタイプ :
役割 :
関係 :
ご覧のとおり、リソースの階層関係は、権限が直接割り当てられる従来のロールベースのアクセス制御の実装では不十分であることを意味します。
このアプリケーションの認証は複雑であるため、よりきめ細かい認証 (FGA) ソリューション、この場合は関係ベースのアクセス制御 (ReBAC) を使用する必要があります。
Google のザンジバル論文にヒントを得た認可モデルである ReBAC は、権限が直接割り当てられる従来のロールベースのアクセス制御 (RBAC) とは異なり、システム内のエンティティ間の関係から権限を導き出します。
ReBAC の威力は、これらの関係を通じて権限がどのように得られるかにあります。この例を視覚的に表現してみましょう:
上記の例では、バルトシュ医師がウイルス診断にアクセスできるのは、直接付与された許可によるものではなく、ワルシャワ医療センターに割り当てられており、午後の診察が含まれており、そこに診断が含まれているためです。 。したがって、これらのリソース間の関係は、アクセス許可を導出できるチェーンを形成します。
このアプローチを使用することには明らかな利点があります:
しかし、課題はそこで終わりません。LLM と連携する必要があるシステムを構築しているため、これらの関係チェーンをリアルタイムで評価する機能が必要です。次のセクションでは、それを可能にする実装を作成する方法を学びます。
続行する前に、導入されていることを確認する承認ルールを簡単に確認してみましょう。
これらの要件は、検索拡張生成 (RAG) を使用することで実現できます。
RAG (検索拡張生成) は、2 つの重要なステップを組み合わせることによって LLM 出力を強化する技術です。まず、ナレッジ ベースから関連情報を取得し、次にその情報を使用して LLM のコンテキストを拡張し、より正確に生成します。 RAG は従来のデータベースやドキュメント ストアと連携できますが、ベクトル データベースは意味的類似性検索を実行でき、キーワードが完全に一致しない場合でも概念的に関連する情報を見つけることができるため、この目的には特に強力です。
実際には、これは、ユーザーが「心臓の問題」について質問すると、システムが「心臓の問題」または「心血管疾患」に関する関連文書を取得できることを意味し、LLM の応答がより正確かつ包括的になります。次に、「生成」部分では、LLM がこの取得したコンテキストを事前トレーニングされた知識と合成して、特定のデータに基づいた関連性のある事実に基づく応答を生成します。
実装では、ベクター データベースとして AstraDB を使用します。 AstraDB には次の利点があります:
RAG パイプラインを実装するには、視覚的なインターフェイスを通じてこれらのシステムを直感的に構築できるオープンソース フレームワークである LangFlow も使用します。 LangFlow システムは、ローカルまたはクラウドでホストされる DataStax プラットフォームで実行される Python 環境を使用して開発できます。私たちのケースでは、サーバーレス (ベクター) AstraDB データベースを https://astra.datastax.com
に作成することで 2 番目のオプションを選択しています。私たちの実装では、認可チェックは重要な瞬間、つまりベクトルデータベースからデータを取得した後、データをコンテキストとして LLM に提供する前に行われる必要があります。このようにして、最初にすべての関連情報を見つけ、その後、未承認のデータが LLM に到達する前に除外することで、検索効率を維持します。 LLM は、ユーザーが表示を許可されている情報のみを使用および公開できます。
これらのセキュリティ チェックは、複雑な関係チェーンをリアルタイムで評価するためのインフラストラクチャを提供する Permit.io を使用して実装されます。データが増大し、関係がより複雑になるにつれて、システムは適切な権限を持つユーザーのみが各情報にアクセスできるようにし続けます。
Permit の使用を開始するには、Web サイト (https://app.permit.io) にアクセスして無料アカウントを簡単に作成できます。無料アカウントが作成されると、Permit のダッシュボードにアクセスできるようになり、認可ポリシーの設定、ユーザーとロールの管理、Permit のアプリケーションへの統合が可能になります。無料利用枠では、関係ベースのアクセス制御 (ReBAC) を備えたデジタル ヘルスケアのサンプルを作成するために必要な機能がすべて提供されます。
LangFlow と Permit はどちらも作業を開始するための無料アカウントを提供しているため、そのようなシステムを構築して自分でどのように機能するかを確認するために何も支払う必要はありません。
実装の詳細に入る前に、使用するツールである Langflow を理解することが重要です。 LangChain 上に構築された Langflow は、ビジュアル インターフェイスを通じて複雑な LLM アプリケーションの作成を簡素化するオープンソース フレームワークです。 LangChain は、テキスト分割、埋め込み生成、思考連鎖プロンプトなどの一般的な LLM 操作用の標準化されたコンポーネントを提供することにより、堅牢な基盤を提供します。これらのコンポーネントは、データの取り込みから応答の生成まですべてを処理する強力なパイプラインに組み立てることができます。
Langflow が私たちのユースケースにとって特に価値があるのは、そのビジュアルなビルダー インターフェイスです。これにより、フローチャートを描くのと同じように、コンポーネントをグラフィカルに接続することでこれらのパイプラインを構築できます。この視覚的なアプローチにより、最初のユーザー入力から最終的な承認された応答に至るまで、アプリケーション内のデータ フローを理解し、変更することが容易になります。さらに、Langflow はオープンソースであるため、無料で使用でき、カスタム コンポーネントで拡張できることも意味します。これは、認証チェックを実装するために非常に重要です。
当社の Langflow ソリューションは、相互接続された 2 つの異なるフローを活用して、医療情報への安全なアクセスを提供します。
取り込みフローは、診断をそれぞれの埋め込みとともに AstraDB にロードする役割を果たします。 MistralAI を使用して各診断のエンベディングを生成し、後で診断データに対してセマンティック検索を実行できるようにします。このフローに関係する主要なコンポーネントは次のとおりです:
チャット フローは、ユーザーと対話し、必要な診断データを提供する責任があります。以下の画像は左から右に読まれることになっています (最初の画像の右側が 2 番目の画像の左側として続きます):
? 注: 許可 モジュールをインストールするために 1 回だけ実行される追加の「_ Pip Install」 _ コンポーネントがあります。これは、DataStax ローコード プラットフォームに LangFlow を実装しているためです。このステップは、 pip installmit をローカルで実行することと同じです。
チャット フローの一連の操作は次のとおりです:
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:
実装で重要な役割を果たす PermitFilter コンポーネントを実行するには、Permit の Policy Decision Point (PDP) の実行インスタンスが必要です。 PDP は、ポリシーを評価し、特定のユーザーおよびリソースに対して特定のアクションを許可するかどうかを決定する責任があります。コンテキストが言語モデルに到達する前にこの権限チェックを強制することで、機密情報の漏洩を防ぎ、アクセス制御ポリシーの適用を確実にします。
完全な実装は、以下の GitHub リポジトリで入手できます。
認証チェックが実装された AI アシスタントとの対話を開始するには、LangFlow プレイグラウンドを開始するだけです。以下の例では、私は bartosz@health.app として認証されています。これは、糖尿病のある午前の訪問はなしの午後の訪問と夕方の訪問のみにアクセスできることを意味します。これは、LLM がそのコンテキスト内で糖尿病に関する情報を持っていないことを意味します。
LLM 機能を活用しながら機密医療データへのアクセスを保護することは、優先事項であると同時に課題でもあります。 RAG ときめ細かい認証を組み合わせることで、インテリジェントで安全な AI アプリケーションを構築できます。主な利点は次のとおりです:
医療提供者は、LangFlow や Permit.io などのツールを使用して、役割や関係の変化に動的に対応する関係ベースのアクセス制御システムを実装し、許可された個人のみがデータにアクセスできるようにすることができます。これらのソリューションを統合することで、医療機関は AI を効果的に活用して、セキュリティを犠牲にすることなく患者ケアを向上させることができます。
以上がRAG と FGA を使用したエンタープライズ グレードのセキュリティを備えた AI アプリケーションの構築の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。