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

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

Nov 19, 2024 am 11:00 AM

이 게시물은 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으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

<gum> : Bubble Gum Simulator Infinity- 로얄 키를 얻고 사용하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Nordhold : Fusion System, 설명
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora : 마녀 트리의 속삭임 - Grappling Hook 잠금 해제 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Python vs. C : 학습 곡선 및 사용 편의성 Python vs. C : 학습 곡선 및 사용 편의성 Apr 19, 2025 am 12:20 AM

Python은 배우고 사용하기 쉽고 C는 더 강력하지만 복잡합니다. 1. Python Syntax는 간결하며 초보자에게 적합합니다. 동적 타이핑 및 자동 메모리 관리를 사용하면 사용하기 쉽지만 런타임 오류가 발생할 수 있습니다. 2.C는 고성능 응용 프로그램에 적합한 저수준 제어 및 고급 기능을 제공하지만 학습 임계 값이 높고 수동 메모리 및 유형 안전 관리가 필요합니다.

파이썬과 시간 : 공부 시간을 최대한 활용 파이썬과 시간 : 공부 시간을 최대한 활용 Apr 14, 2025 am 12:02 AM

제한된 시간에 Python 학습 효율을 극대화하려면 Python의 DateTime, Time 및 Schedule 모듈을 사용할 수 있습니다. 1. DateTime 모듈은 학습 시간을 기록하고 계획하는 데 사용됩니다. 2. 시간 모듈은 학습과 휴식 시간을 설정하는 데 도움이됩니다. 3. 일정 모듈은 주간 학습 작업을 자동으로 배열합니다.

Python vs. C : 성능과 효율성 탐색 Python vs. C : 성능과 효율성 탐색 Apr 18, 2025 am 12:20 AM

Python은 개발 효율에서 C보다 낫지 만 C는 실행 성능이 높습니다. 1. Python의 간결한 구문 및 풍부한 라이브러리는 개발 효율성을 향상시킵니다. 2.C의 컴파일 유형 특성 및 하드웨어 제어는 실행 성능을 향상시킵니다. 선택할 때는 프로젝트 요구에 따라 개발 속도 및 실행 효율성을 평가해야합니다.

Python vs. C : 주요 차이점 이해 Python vs. C : 주요 차이점 이해 Apr 21, 2025 am 12:18 AM

Python과 C는 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1) Python은 간결한 구문 및 동적 타이핑으로 인해 빠른 개발 및 데이터 처리에 적합합니다. 2) C는 정적 타이핑 및 수동 메모리 관리로 인해 고성능 및 시스템 프로그래밍에 적합합니다.

Python 학습 : 2 시간의 일일 연구가 충분합니까? Python 학습 : 2 시간의 일일 연구가 충분합니까? Apr 18, 2025 am 12:22 AM

하루에 2 시간 동안 파이썬을 배우는 것으로 충분합니까? 목표와 학습 방법에 따라 다릅니다. 1) 명확한 학습 계획을 개발, 2) 적절한 학습 자원 및 방법을 선택하고 3) 실습 연습 및 검토 및 통합 연습 및 검토 및 통합,이 기간 동안 Python의 기본 지식과 고급 기능을 점차적으로 마스터 할 수 있습니다.

Python Standard Library의 일부는 무엇입니까? 목록 또는 배열은 무엇입니까? Python Standard Library의 일부는 무엇입니까? 목록 또는 배열은 무엇입니까? Apr 27, 2025 am 12:03 AM

Pythonlistsarepartoftsandardlardlibrary, whileraysarenot.listsarebuilt-in, 다재다능하고, 수집 할 수있는 반면, arraysarreprovidedByTearRaymoduledlesscommonlyusedDuetolimitedFunctionality.

파이썬 : 자동화, 스크립팅 및 작업 관리 파이썬 : 자동화, 스크립팅 및 작업 관리 Apr 16, 2025 am 12:14 AM

파이썬은 자동화, 스크립팅 및 작업 관리가 탁월합니다. 1) 자동화 : 파일 백업은 OS 및 Shutil과 같은 표준 라이브러리를 통해 실현됩니다. 2) 스크립트 쓰기 : PSUTIL 라이브러리를 사용하여 시스템 리소스를 모니터링합니다. 3) 작업 관리 : 일정 라이브러리를 사용하여 작업을 예약하십시오. Python의 사용 편의성과 풍부한 라이브러리 지원으로 인해 이러한 영역에서 선호하는 도구가됩니다.

웹 개발을위한 파이썬 : 주요 응용 프로그램 웹 개발을위한 파이썬 : 주요 응용 프로그램 Apr 18, 2025 am 12:20 AM

웹 개발에서 Python의 주요 응용 프로그램에는 Django 및 Flask 프레임 워크 사용, API 개발, 데이터 분석 및 시각화, 머신 러닝 및 AI 및 성능 최적화가 포함됩니다. 1. Django 및 Flask 프레임 워크 : Django는 복잡한 응용 분야의 빠른 개발에 적합하며 플라스크는 소형 또는 고도로 맞춤형 프로젝트에 적합합니다. 2. API 개발 : Flask 또는 DjangorestFramework를 사용하여 RESTFULAPI를 구축하십시오. 3. 데이터 분석 및 시각화 : Python을 사용하여 데이터를 처리하고 웹 인터페이스를 통해 표시합니다. 4. 머신 러닝 및 AI : 파이썬은 지능형 웹 애플리케이션을 구축하는 데 사용됩니다. 5. 성능 최적화 : 비동기 프로그래밍, 캐싱 및 코드를 통해 최적화

See all articles