>백엔드 개발 >파이썬 튜토리얼 >RAG 및 FGA를 사용하여 엔터프라이즈급 보안으로 AI 애플리케이션 구축

RAG 및 FGA를 사용하여 엔터프라이즈급 보안으로 AI 애플리케이션 구축

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-19 11:00:03263검색

이 게시물은 Bartosz Pietrucha가 작성했습니다

소개

엔터프라이즈급 LLM 애플리케이션 구축은 오늘날의 비즈니스 환경에서 필수입니다. 모델과 API의 접근성이 향상되는 동안 보안을 보장하고 권한을 효과적으로 관리하는 중요한 과제가 남아 있습니다.

이 문제를 해결하기 위해 FGA(Fine-Grained Authorization) 및 RAG(Retrieval Augmented Generation)는 엄격한 액세스 제어를 유지하는 안전한 상황 인식 AI 애플리케이션을 구축하기 위한 효과적인 전략입니다. 이 기사에서는 민감한 데이터를 보호하면서 의료 환경에 FGA 및 RAG를 적용하는 방법을 살펴보겠습니다.

AstraDB, Langflow 및 Permit.io의 세 가지 도구를 사용하여 실시간 업데이트를 지원하는 ReBAC(Relationship-Based Access Control) 인증 시스템 구현을 안내하여 이를 수행하겠습니다.

사용 사례 예: 의료 애플리케이션

LLM 애플리케이션의 인증 복잡성과 FGA 및 RAG에서 제공하는 솔루션을 더 잘 이해하기 위해 디지털 의료 분야를 살펴볼 수 있습니다. 이는 AI 기능과 엄격한 보안이 모두 필수적인 완벽한 예를 제시하기 때문입니다. 의료 서비스 제공자는 LLM을 활용하여 작업 흐름을 간소화하고 의사 결정을 개선하며 더 나은 환자 치료를 제공하기를 점점 더 원하고 있습니다. 의사와 환자 모두 챗봇과 같은 직관적인 AI 인터페이스를 통해 의료 기록에 쉽게 접근하기를 원합니다.

그러나 의료 데이터는 매우 민감하므로 신중하게 규제해야 합니다. LLM은 지능적인 통찰력을 제공할 수 있지만 사용자가 볼 수 있는 권한이 있는 정보에만 액세스하고 공개하도록 해야 합니다. 예를 들어, 의사는 지정된 의료 센터의 진단 결과만 확인해야 하며, 환자는 자신의 기록에만 접근할 수 있어야 합니다.

세분화된 권한 부여를 통한 보안

디지털 헬스케어 예시에 이어 의료 애플리케이션 예시를 살펴보겠습니다.

이 애플리케이션은 여러 리소스, 몇 가지 역할 및 이러한 엔터티 간의 몇 가지 관계로 구성됩니다.

  1. 리소스 유형 :

    • 의료 센터(예: 런던, 바르샤바)
    • 방문(예: 오전 방문, 오후 방문)
    • 진단(예: 당뇨병, 두통, 바이러스)
  2. 역할 :

    • 의사(예: Bartosz 박사)
    • 환자(예: 가브리엘, 올가)
  3. 관계 :

    • 의료기관 배정
    • 방문은 의료기관에 속합니다
    • 진단은 방문의 일부입니다
    • 환자는 방문과 연결됩니다

보시다시피 리소스의 계층적 관계로 인해 권한이 직접 할당되는 기존 역할 기반 액세스 제어를 구현하는 것만으로는 충분하지 않습니다.

이 애플리케이션 인증의 복잡성으로 인해 보다 세분화된 인증(FGA) 솔루션(이 경우 ReBAC)을 사용해야 합니다.

Google의 Zanzibar 논문에서 영감을 얻은 인증 모델인 ReBAC는 권한이 직접 할당되는 기존 역할 기반 액세스 제어(RBAC)와 달리 시스템 내 엔터티 간의 관계에서 권한을 파생합니다.

ReBAC의 힘은 이러한 관계를 통해 권한이 파생되는 방식에 있습니다. 예시의 시각적 표현을 살펴보겠습니다.

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

위의 예에서 Dr Bartosz는 직접 부여된 권한 때문이 아니라 진단이 포함된 오후 방문이 포함된 바르샤바 의료 센터에 할당되었기 때문에 바이러스 진단에 액세스할 수 있습니다. . 따라서 이러한 리소스 간의 관계는 액세스 권한을 파생시킬 수 있는 체인을 형성합니다.

이 접근 방식을 사용하면 다음과 같은 분명한 이점이 있습니다.

  • 실제 조직 구조를 자연스럽게 모델링합니다
  • 관계 변화에 따라 권한이 자동으로 조정됩니다
  • 확장성을 유지하면서 세밀한 제어 기능을 제공합니다

하지만 문제는 여기서 끝나지 않습니다. LLM과 협력해야 하는 시스템을 구축하려면 이러한 관계 체인을 실시간으로 평가할 수 있는 능력이 필요합니다. 다음 섹션에서는 이를 가능하게 하는 구현을 만드는 방법을 알아보겠습니다.

계속하기 전에 올바른 승인 규칙이 있는지 빠르게 검토해 보겠습니다.

  1. 의료센터와 유효한 관계가 있는 의사만 방문 내역을 볼 수 있습니다
  2. 진단에 대한 액세스는 이러한 관계에서 자동으로 파생됩니다
  3. 관계 변경(예: 의사 재배치)은 액세스 권한에 즉시 영향을 미칩니다

이러한 요구 사항은 검색 증강 생성(RAG)을 사용하여 달성할 수 있습니다.

검색 증강 생성(RAG)

RAG(Retrieval Augmented Generation)는 두 가지 주요 단계를 결합하여 LLM 출력을 향상시키는 기술입니다. 먼저 지식 기반에서 관련 정보를 검색한 다음 해당 정보를 사용하여 보다 정확한 생성을 위해 LLM의 컨텍스트를 강화합니다. RAG는 ​​기존 데이터베이스 또는 문서 저장소와 함께 작동할 수 있지만 벡터 데이터베이스는 의미론적 유사성 검색을 수행하고 정확한 키워드가 일치하지 않는 경우에도 개념적으로 관련된 정보를 찾을 수 있기 때문에 이러한 목적에 특히 강력합니다.

실제로 이는 사용자가 "심장 문제"에 대해 질문할 때 시스템이 "심장 문제" 또는 "심혈관계 질환"에 대한 관련 문서를 검색할 수 있어 LLM의 응답이 더 정확하고 포괄적이게 됨을 의미합니다. 그런 다음 "생성" 부분에는 LLM이 검색된 컨텍스트를 사전 훈련된 지식과 합성하여 특정 데이터에 기반을 둔 관련성 있고 사실에 기반한 응답을 생성하는 작업이 포함됩니다.

구현을 위해 AstraDB를 벡터 데이터베이스로 사용합니다. AstraDB는 다음과 같은 이점을 제공합니다:

  • 임베딩을 통해 효율적으로 저장하고 검색합니다
  • 데이터 증가에 따라 확장 가능
  • Langflow와 같은 LLM 체인과 잘 통합됩니다(이 내용은 기사 뒷부분에서 다루겠습니다)

우리는 RAG 파이프라인을 구현하기 위해 시각적 인터페이스를 통해 이러한 시스템을 직관적으로 구축할 수 있게 해주는 오픈 소스 프레임워크인 LangFlow도 사용할 것입니다. LangFlow 시스템은 로컬로 실행되거나 클라우드에 호스팅된 DataStax 플랫폼에서 실행되는 Python 환경을 사용하여 개발될 수 있습니다. 우리의 경우 https://astra.datastax.com

에서 서버리스(벡터) AstraDB 데이터베이스를 생성하여 두 번째 옵션을 선택합니다.

우리 구현에서는 벡터 데이터베이스에서 데이터를 검색한 후 LLM에 컨텍스트로 제공하기 등 중요한 순간에 인증 확인이 이루어져야 합니다. 이러한 방식으로 우리는 먼저 모든 관련 정보를 찾고 나중에 승인되지 않은 데이터가 LLM에 도달하기 전에 필터링하여 검색 효율성을 유지합니다. LLM은 사용자가 볼 수 있는 권한이 있는 정보만 사용하고 공개할 수 있습니다.

이러한 보안 검사는 복잡한 관계 체인을 실시간으로 평가하기 위한 인프라를 제공하는 Permit.io를 사용하여 구현됩니다. 데이터가 증가하고 관계가 더욱 복잡해짐에 따라 시스템은 각 정보에 적절한 권한이 있는 사람만 액세스할 수 있도록 계속 보장합니다.

Permit을 시작하려면 https://app.permit.io 웹사이트를 방문하여 무료 계정을 쉽게 만들 수 있습니다. 무료 계정이 생성되면 Permit 대시보드에 액세스하여 권한 부여 정책을 설정하고, 사용자 및 역할을 관리하고, Permit을 애플리케이션에 통합할 수 있습니다. 무료 등급은 ReBAC(관계 기반 액세스 제어)를 통해 디지털 의료 사례를 만드는 데 필요한 모든 기능을 제공합니다.

LangFlow와 Permit 모두 작업을 시작할 수 있는 무료 계정을 제공하므로 이러한 시스템을 구축하고 작동 방식을 직접 확인하기 위해 비용을 지불할 필요가 없습니다.

구현 가이드

구현 세부 사항을 살펴보기 전에 우리가 사용할 도구인 Langflow를 이해하는 것이 중요합니다. LangChain을 기반으로 구축된 Langflow는 시각적 인터페이스를 통해 복잡한 LLM 애플리케이션 생성을 단순화하는 오픈 소스 프레임워크입니다. LangChain은 텍스트 분할, 임베딩 생성 및 사고 사슬 프롬프트와 같은 일반적인 LLM 작업을 위한 표준화된 구성 요소를 제공하여 강력한 기반을 제공합니다. 이러한 구성요소는 데이터 수집부터 응답 생성까지 모든 것을 처리하는 강력한 파이프라인으로 조립될 수 있습니다.

Langflow가 우리 사용 사례에 특히 중요한 이유는 시각적 빌더 인터페이스입니다. 이를 통해 구성 요소를 그래픽으로 연결하여 이러한 파이프라인을 구성할 수 있습니다. 이는 순서도를 그리는 방법과 유사합니다. 이러한 시각적 접근 방식을 사용하면 초기 사용자 입력부터 승인된 최종 응답까지 애플리케이션을 통한 데이터 흐름을 더 쉽게 이해하고 수정할 수 있습니다. 또한 Langflow의 오픈 소스 특성은 무료로 사용할 수 있고 사용자 정의 구성 요소로 확장할 수 있다는 것을 의미하며 이는 인증 확인을 구현하는 데 중요합니다.

당사의 Langflow 솔루션은 서로 다르지만 상호 연결된 두 가지 흐름을 활용하여 의료 정보에 대한 안전한 액세스를 제공합니다.

1. 수집 흐름

수집 흐름은 해당 임베딩과 함께 AstraDB에 진단을 로드하는 역할을 합니다. 우리는 MistralAI를 사용하여 각 진단에 대한 임베딩을 생성하므로 나중에 진단 데이터에 대한 의미 검색을 수행할 수 있습니다. 이 흐름과 관련된 주요 구성 요소는 다음과 같습니다.

  • 목록 생성: 이 구성 요소는 AstraDB에 수집할 진단 목록을 생성하는 데 사용됩니다.
  • MistralAI Embeddings : 이 구성 요소는 각 진단에 대한 임베딩을 생성하여 AstraDB에 저장합니다.
  • AstraDB : AstraDB는 추가 검색을 위해 진단 및 해당 임베딩이 저장되는 벡터 저장소 역할을 합니다. Building AI Applications with Enterprise-Grade Security Using RAG and FGA

2. 채팅 흐름

채팅 흐름은 사용자와 상호작용하고 필요한 진단 데이터를 제공하는 역할을 담당합니다. 아래 이미지는 왼쪽에서 오른쪽으로 읽어야 합니다(첫 번째 이미지의 오른쪽이 두 번째 이미지의 왼쪽과 이어집니다):

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

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

? 참고: 추가로 "_ Pip Install" _ 설치허가 모듈을 위해 한 번만 실행되는 구성 요소가 있습니다. 이는 DataStax 로우 코드 플랫폼에서 LangFlow를 구현하고 있기 때문입니다. 이 단계는 pip install allowed로컬

을 실행하는 것과 같습니다.

채팅 흐름의 동작 순서는 다음과 같습니다.

  1. 사용자 입력 : 사용자가 쿼리를 입력하여 상호작용을 시작합니다.
  • 예: "당뇨병 진단을 받은 환자가 있나요?"
  1. 진단 검색 : 사용자의 입력을 바탕으로 AstraDB에 해당 진단을 쿼리합니다.
  • 검색 결과 예시(위 플로우 이미지에 1로 표시됨):

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

  1. 권한에 따라 데이터 필터링: 다음 처리 구성 요소에 응답을 보내기 전에 초기 쿼리에 응답하는 LLM에 대한 컨텍스트를 생성하고 사용자 정의 PermitFilter 구성 요소를 사용하여 검색된 진단을 필터링하여 사용자에게 권한이 있는지 확인합니다. 각 진단을 확인하세요.
  • 필터링된 결과 예(위의 흐름 이미지에서 2로 표시됨):

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

  1. 응답 생성: 일단 필터링되면 허용된 진단은 MistralAI를 사용하여 사용자 프롬프트에 대한 응답을 생성하는 컨텍스트로 사용됩니다.
  • 인증 단계로 필터링된 컨텍스트가 포함된 프롬프트 예시:
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 구성 요소

구현에서 중요한 역할을 하는 PermitFilter 구성 요소를 실행하려면 Permit의 PDP(정책 결정 지점)의 실행 인스턴스가 필요합니다. PDP는 정책을 평가하고 특정 사용자 및 리소스에 대해 특정 작업이 허용되는지 여부를 결정하는 역할을 담당합니다. 컨텍스트가 언어 모델에 도달하기 전에 이 권한 확인을 시행함으로써 민감한 정보의 유출을 방지하고 액세스 제어 정책이 시행되도록 보장합니다.

실제 사례 보기

완전한 구현은 GitHub 저장소에서 확인할 수 있습니다.

  • 사용자 정의 LangFlow 구성요소
  • Permit.io 통합 코드
  • 자세한 설정 지침
  • 질의 및 응답 예시

인증 확인이 구현된 AI 비서와 상호 작용을 시작하려면 간단히 LangFlow 플레이그라운드를 시작하면 됩니다. 아래 예에서 나는 bartosz@health.app으로 인증되었습니다. 이는 당뇨병이 있는 오전 방문을 없이 오후 방문과 저녁 방문에만 액세스할 수 있음을 의미합니다. 이는 LLM이 해당 맥락에서 당뇨병에 관한 정보를 갖고 있지 않음을 의미합니다.

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

결론

LLM 기능을 활용하면서 민감한 의료 데이터에 대한 액세스를 보호하는 것은 우선순위이자 과제입니다. RAG와 세분화된 인증을 결합하여 지능적이고 안전한 AI 애플리케이션을 구축할 수 있습니다. 주요 이점은 다음과 같습니다.

  • RAG를 통한 상황 인식 응답
  • ReBAC을 통한 정밀한 접근 통제
  • 조직 관계의 자연스러운 모델링
  • 변화하는 관계에 적응하는 확장 가능한 보안

LangFlow 및 Permit.io와 같은 도구를 사용하여 의료 서비스 제공자는 역할 및 관계 변화에 동적으로 대응하는 관계 기반 액세스 제어 시스템을 구현하여 승인된 개인만 데이터에 액세스할 수 있도록 보장할 수 있습니다. 이러한 솔루션을 통합함으로써 의료 기관은 AI를 효과적으로 활용하여 보안을 손상시키지 않으면서 환자 치료를 개선할 수 있습니다.

위 내용은 RAG 및 FGA를 사용하여 엔터프라이즈급 보안으로 AI 애플리케이션 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.