這篇文章由 Bartosz Pietrucha 撰寫
建立企業級 LLM 應用程式是當今商業環境中的必要條件。雖然模型和 API 的可存取性正在提高,但仍存在一個重大挑戰:確保其安全性並有效管理其權限。
為了解決這個問題,細粒度授權 (FGA) 和檢索增強生成 (RAG) 是建立安全、上下文感知的 AI 應用程式並保持嚴格存取控制的有效策略。在本文中,我們將探討如何在醫療保健環境中應用 FGA 和 RAG,同時保護敏感資料。
我們將引導您實現基於關係的存取控制 (ReBAC) 授權系統,該系統支援使用三種工具進行即時更新:AstraDB、Langflow 和 Permit.io。
為了更好地了解LLM 申請中授權的複雜性以及FGA 和RAG 提供的解決方案,我們可以看看數位醫療保健領域- 因為它提供了一個完美的示例,其中人工智能功能和嚴格的安全性都是必不可少的。醫療保健提供者越來越希望利用法學碩士來簡化工作流程、改善決策並提供更好的病患照護。醫生和患者都希望透過聊天機器人等直覺的人工智慧介面輕鬆存取醫療記錄。
然而,醫療數據高度敏感,應謹慎監管。雖然法學碩士可以提供智慧見解,但我們必須確保他們僅存取和揭露使用者有權查看的資訊。例如,醫生應該只能看到他們指定的醫療中心的診斷,而患者應該只能存取自己的記錄。
繼續討論數位醫療保健範例,讓我們看一個醫療應用程式的範例。
此應用程式由多個資源、幾個角色以及這些實體之間的一些關係組成:
資源類型 :
角色 :
關係 :
如您所見,我們的資源的層次關係意味著實施傳統的基於角色的存取控制(直接分配權限)是不夠的。
此應用程式授權的複雜性將要求我們使用更細粒度的授權 (FGA) 解決方案 - 在本例中為基於關係的存取控制 (ReBAC)。
ReBAC 是一種受 Google 桑給巴爾論文啟發的授權模型,它從系統中實體之間的關係中獲取權限 - 與直接分配權限的傳統基於角色的存取控制 (RBAC) 不同。
ReBAC 的強大之處在於如何透過這些關係派生權限。讓我們來看看範例的視覺表示:
在上面的例子中,Bartosz 醫生能夠訪問病毒診斷並不是因為直接授予許可,而是因為他被分配到華沙醫療中心,其中包含下午就診,其中包含診斷結果。因此,這些資源之間的關係形成了一條鏈,允許我們派生存取權限。
使用此方法有明顯的好處:
但挑戰不止於此 - 當我們正在建立一個需要與法學碩士合作的系統時,它需要具有即時評估這些關係鏈的能力。在下一節中,我們將學習如何創建一個實作來實現這一點。
在繼續之前,讓我們快速回顧一下我們想要確保到位的授權規則:
這些要求可以透過使用檢索增強生成(RAG)來實現。
RAG(檢索增強生成)是一種透過結合兩個關鍵步驟來增強LLM 輸出的技術:首先,從知識庫中檢索相關信息,然後使用該信息來增強LLM 的上下文,以實現更準確的生成。雖然 RAG 可以與傳統資料庫或文件儲存搭配使用,但向量資料庫對此目的特別強大,因為它們可以執行語義相似性搜索,即使在確切的關鍵字不匹配時也能找到概念上相關的資訊。
在實踐中,這意味著當使用者詢問「心臟問題」時,系統可以檢索有關「心臟問題」或「心血管疾病」的相關文檔,使LLM的回答更加準確和全面。然後,「生成」部分涉及法學碩士將檢索到的上下文與其預先訓練的知識相結合,以產生基於您的特定資料的相關、事實回應。
對於我們的實施,我們將使用 AstraDB 作為我們的向量資料庫。 AstraDB 有以下優勢:
為了實現我們的 RAG 管道,我們還將使用 LangFlow,這是一個開源框架,可以透過其視覺化介面直觀地建立這些系統。 LangFlow 系統可以使用本地運行的 Python 環境或雲端託管的 DataStax 平台進行開發。在我們的例子中,我們選擇第二個選項,透過在以下位置建立無伺服器(向量)AstraDB 資料庫:https://astra.datastax.com
在我們的實作中,授權檢查應該在關鍵時刻進行 - 從向量資料庫檢索資料之後,在將其作為上下文提供給 LLM 之前。透過這種方式,我們首先查找所有相關信息,然後在未經授權的數據到達法學碩士之前過濾掉未經授權的數據,從而保持搜尋效率。 LLM 只能使用和透露用戶有權查看的資訊。
這些安全檢查是使用 Permit.io 實現的,它提供了即時評估複雜關係鏈的基礎設施。隨著您的資料成長和關係變得更加複雜,系統將繼續確保每個資訊只能由具有適當授權的人員存取。
要開始使用 Permit,您可以透過造訪網站 https://app.permit.io 輕鬆建立免費帳戶。建立免費帳戶後,您將可以存取 Permit 的儀表板,您可以在其中設定授權策略、管理使用者和角色,並將 Permit 整合到您的應用程式中。免費套餐提供了創建具有基於關係的存取控制 (ReBAC) 的數位醫療範例所需的所有功能。
LangFlow 和 Permit 都提供免費帳戶來開始工作,因此您無需支付任何費用來建立這樣的系統並親自看看它是如何運作的。
在我們深入了解實作細節之前,先了解我們將使用的工具 - Langflow 非常重要。 Langflow 建構於 LangChain 之上,是一個開源框架,可透過視覺化介面簡化複雜的 LLM 應用程式的創建。 LangChain 透過為常見的 LLM 操作(如文字分割、嵌入生成和思路提示)提供標準化元件,提供了強大的基礎。這些組件可以組裝成強大的管道,處理從資料攝取到回應產生的所有事務。
Langflow 對我們的用例特別有價值的是它的視覺化建構器介面,它允許我們透過圖形方式連接元件來建立這些管道 - 類似於繪製流程圖的方式。這種視覺化方法使我們更容易理解和修改應用程式中的資料流,從初始使用者輸入到最終授權回應。此外,Langflow 的開源性質意味著它既可以免費使用,也可以使用自訂元件進行擴展,這對於實現我們的授權檢查至關重要。
我們的 Langflow 解決方案利用兩個不同但相互關聯的流程來提供對醫療資訊的安全存取:
攝取流負責將診斷及其各自的嵌入載入到 AstraDB 中。我們使用 MistralAI 為每個診斷產生嵌入,從而可以稍後對診斷資料進行語義搜尋。此流程涉及的關鍵組件是:
聊天流程負責與使用者互動並向他們提供所需的診斷資料。下面的圖片應該從左到右閱讀(第一張圖片的右側延續第二張圖片的左側):
? 注意: 還有一個額外的「_ Pip Install」 _ 元件,僅執行一次以安裝授權模組。這是因為我們正在 DataStax 低程式碼平台上實作 LangFlow。此步驟相當於在本地執行 pip install grant 。
聊天流程中的操作順序如下:
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 的策略決策點 (PDP) 的運行實例。 PDP 負責評估策略並決定是否允許特定使用者和資源執行給定操作。透過在上下文到達語言模型之前強制執行此權限檢查,我們可以防止敏感資訊外洩並確保存取控制策略的執行。
完整的實作可以在我們的 GitHub 儲存庫中找到,您可以在其中找到:
要開始與我們的 AI 助理互動並實施授權檢查,我們只需啟動 LangFlow 遊樂場即可。在下面的範例中,我的身份驗證為 bartosz@health.app,這意味著我只能訪問下午訪問和晚上訪問,而不能訪問患有糖尿病的上午訪問。這意味著法學碩士在其上下文中沒有有關糖尿病的資訊。
在利用 LLM 功能的同時確保對敏感醫療資料的存取安全既是首要任務,也是一項挑戰。透過結合RAG和細粒度授權,我們可以建立既聰明又安全的AI應用。主要好處是:
使用 LangFlow 和 Permit.io 等工具,醫療保健提供者可以實施基於關係的存取控制系統,動態回應角色和關係變化,確保只有授權個人才能存取資料。透過整合這些解決方案,醫療保健組織可以有效地利用人工智慧來改善患者護理,而不會影響安全性。
以上是使用 RAG 和 FGA 建立具有企業級安全性的 AI 應用程式的詳細內容。更多資訊請關注PHP中文網其他相關文章!