이 저장소는 RE : Inforce 2024 코드와 함께 세션 ID DAP341을 지원하는 샘플 코드를 호스팅합니다. 이 저장소의 코드는 세션 동안 가독성을 최적화하기에 의도적으로 간단하며 생산 환경에서 사용하기위한 것이 아닙니다.
이 저장소의 코드의 목적은 RAG (Recreval Augmented Generation) 챗봇의 기능적 핵심을 보여주는 한편, 일반적으로 생성 AI 워크로드와 관련된 일부 데이터 보호 고려 사항을 강조하는 것입니다.
생산에서 AWS와 함께 Rag Chatbot 스타일 사용 사례를 배포하려면 다음 옵션 중 하나를 고려하십시오.
이 저장소에는 일련의 아이디어를 보여주기 위해 실행할 수있는 일련의 파이썬 "스크립트"가 포함되어 있습니다. 스크립트는 순차적으로 실행될 때 Rag 챗봇의 작동 방식과 Genai 기반 워크로드 내에서 데이터를 보호 할 수있는 방법에 대한 이야기를 들려주기 때문에 스크립트는 번호가 매겨집니다. 그러나 스크립트는 모두 독립형이며 Idempotent이며 순차적으로 실행할 필요는 없습니다.
여기에 제공된 Python 스크립트 중 일부는 실행하기 전에 수정해야합니다. 스크립트는 RE : Inforce 프리젠 테이션에 표시된대로 여기에 저장됩니다. 스크립트를 업데이트 해야하는 인스턴스는 #UPDATE_TO_RUN_YOURSELF 로 주석을 달 수 있습니다.
Python 예제 스크립트 (예 : Amazon Kendra Index, 예제 데이터 등)를 실행하는 데 필요한 AWS 리소스는이 저장소 사용자가 제공 할 수 있지만 아래는 이러한 리소스를 작성할 수있는 방법에 대한 지침입니다.
Python 스크립트가 작동하기 전에 생성 및 참조 해야하는 주요 AWS 리소스는 Amazon Kendra 지수와 Amazon S3 버킷의 데이터를 가리키는 Kendra 데이터 소스입니다. Amazon Kendra Index는 무시할 수없는 비용이 있으며이 솔루션을 배포하기 전에 이러한 비용을 이해하기 위해주의를 기울여야합니다.
이 저장소에 제공된 코드는 AWS에서 생성 AI 애플리케이션 빌더의 배포를 보완하기위한 것입니다. AWS에 생성 AI 애플리케이션 빌더를 배포하고 "RAG"옵션을 사용하여 "텍스트"사용 사례 배포를 배포하는 경우 다음 섹션에서 표시된대로 Kendra 인덱스를 작성할 수 있습니다.
배포 안내서에 따라 AWS 솔루션에 생성 AI 응용 프로그램 빌더를 배포하십시오.
데이터 보호와 관련하여 VPC 옵션이 활성화 된 상태에서 솔루션을 배포하는 것을 고려하여 VPC 엔드 포인트를 활용하여 공개 인터넷을 통한 트래픽을 최소화합니다.
배포 대시 보드가 배포 된 후에는 사용 사례를 배포 할 수 있습니다.
유스 케이스를 배포 할 때 text 옵션을 선택하십시오. Select knowledge base 섹션에서 RAG 옵션으로 yes 선택하고 Kendra 지식 기반으로 선택하고 Kendra 지수가 아직 없으면 "기존 Kendra 지수가 있습니까?"를 선택 no . 당신을 위해 하나를 만들 수 있습니다. 다른 모든 기본값은 괜찮지 만 필요에 따라 필요에 따라 조정하십시오.
생성 AI 응용 프로그램 빌더가 배포되면 Amazon Kendra 지수가 있습니다. 이제 해당 인덱스에 Kendra 데이터 소스를 추가해야합니다. 먼저, 기존 Amazon S3 버킷을 생성하거나 재사용하여 데이터를 저장하십시오. 이 저장소의 src/kendra-acl.json 뿐만 아니라 data 디렉토리의 내용을 해당 S3 버킷에 업로드하여 결과 구조가 다음과 같이 보일 수 있습니다.
engineering/rootrunner3k-techspecs.txt
wiki/ecorobopotato.txt
kendra-acl.json
AWS Management Console에서 Amazon Kendra 지수로 이동하여 Add Data Sources 옵션을 선택하십시오. Amazon S3 connector 옵션을 선택하십시오. 데이터 소스의 이름을 지정하십시오. IAM 역할을 만들거나 원하는대로 기존 역할을 사용하십시오. Configure sync settings 에서 S3 버킷의 위치를 입력하고 Access control list configuration file location 설정에 kendra-acl.json 파일을 설정하고 Additional configuration 확장하고 engineering 및 marketing 인덱싱 할 접두사로 추가하십시오. 다른 모든 기본값은 Kendra 데이터 소스를 작성하고 배포하기에 충분합니다. 데이터 소스가 만들어지면 데이터 소스 sync 작업을 한 번 이상 시작하고 파이썬 스크립트를 실행하기 전에 해당 동기화가 완료 될 때까지 기다려야합니다.
Amazon 기반암 모델을 호출하기 전에 모델 액세스를 활성화해야합니다. 이 저장소는 Claude 3 Sonnet을 사용하므로 최소한이 모델을 활성화해야합니다.
CloudWatch Python 파일을 구체적으로 실행하려면 Amazon Bedrock 모델 호출 로깅, 특히 Amazon CloudWatch Logs 대상을 사용해야합니다.
이 프로세스의 일환으로 CloudWatch Logs 그룹을 생성하며 동반 된 Python 스크립트에서 업데이트해야합니다.
Bedrock Guardrails와 관련된 Python 스크립트를 실행하려면 Bedrock Guardrail을 만들어야합니다. AWS Management Console을 사용하여 Amazon Bedrock 서비스로 이동하여 Guardrails 섹션을 선택하십시오. Create guardrail 선택하십시오. 이름을 지정하고 기본값이나 선호하는 옵션으로 설정하십시오. 그러나 Add sensitive information filters 섹션에서 Address PII 유형을 추가하고 가드 레일 동작으로 Mask 선택하십시오. 이를 통해 GuardRail 이이 프로젝트의 Python 스크립트에서 시연 될 동작을 복제 할 수 있습니다.
src 디렉토리의 Markdown 파일, 이미지 및 Python 코드 파일은 번호 매기기 체계에 의해 지정된 순서로보고 실행되도록 의도됩니다. 다음은 이러한 코드 샘플과 함께 제공되는 프레젠테이션의 의도를 통해 독자를 안내하는 각 파일에 대한 설명입니다.
이 코드 스 니펫의 주요 점을 제공합니다.이 코드 스 니펫은 읽을 수있는 매우 단순화 된 Python 코드를 보여주고 Rag가 기본 수준에서 어떻게 작동하는지 보여주고 Genai 워크로드에 대한 데이터 보호 고려 사항을 더욱 광범위하게 강조합니다.
이미지는 우리가 사용하는 데이터의 명목 제품 및 조직을 소개하는 데 사용되었습니다. 데이터는 의도적으로 터무니 없으므로 LLMS는 실수 로이 개념적 제품 또는 조직과 관련된 교육 데이터가 없습니다. 그러나이 수반되는 저장소가 이제 오픈 소스이기 때문에 LLM이 결국이 저장소를 교육 데이터 소스로 사용할 수 있으며 결국이 가정을 중단 할 수 있습니다!
소스 데이터가 포함 된 Amazon S3 버킷의 내용을 간단히 보여줍니다. 또한 S3 의이 데이터의 암호화 유형을 강조하여 휴식시 데이터 암호화의 중요성을 강조합니다.
Kendra의 개념과 데이터 소스에 대한 시맨틱 검색을 수행 할 수있는 방법을 소개하기 위해 Amazon Kendra 지수에 대한 기본 정보 중 일부를 인쇄합니다.
Kendra 지수에 대한 간단한 retrieve API 호출을 보여줍니다.이 질문은 우리가 묻는 질문에 따라 컨텍스트를 검색합니다.
Amazon Bedrock에게 전화를 걸어 우리의 명목 독점 데이터와 관련이없는 질문을합니다. LLM은 종종 공개 인터넷에서 긁힌 대량의 데이터에 대해 종종 훈련되기 때문에 LLM이 공개적으로 이용할 수있는 것들에 대한 많은 질문에 어떻게 대답 할 수 있는지 보여주기위한 것입니다.
기반암에 전화를 걸어 독점 데이터에 대해 질문합니다. LLM이 독점적이며 교육 데이터 세트의 일부가 아닌 데이터에 대한 질문에 어떻게 대답 할 수 있는지 보여줍니다.
먼저 Kendra에게 전화하여 독점 데이터에서 관련 컨텍스트를 검색 한 다음 Amazon Bedrock에서 LLM을 호출 할 때 해당 컨텍스트를 사용합니다. 이 패턴을 검색 증강 생성 또는 걸레라고합니다.
Amazon Kendra에 대한 호출의 액세스 제어 목록에 추가됩니다. 우리의 "마케팅"그룹은 Kendra의 기술 사양 문서에 액세스 할 수 없기 때문에 우리의 대답에는 마케팅이 볼 수없는 컨텐츠에 대한 세부 정보가 포함되어 있지 않습니다. 이는 RAG 기반 접근 방식을 사용할 때 문서 수준의 승인을 얻을 수있는 방법을 보여줍니다. 대신 독점 데이터를 사용하여 LLM을 사용자 정의하기 위해 미세 조정 또는 지속적인 사전 훈련을 수행하는 경우 문서 수준에서 세밀한 승인을 할 수있는 능력을 잃어 버립니다. 사용자는 해당 맞춤형 모델에 액세스 할 수 있거나 그렇지 않습니다.
특정 주소가 포함 된 래그 쿼리를 수행합니다. 그러나 아마도 우리는 챗봇에 주소 또는 다른 유형의 pii 또는 민감한/유해한 콘텐츠를 포함하지 않기를 원할 것입니다 ...
간단히 다음 단계에서 사용할 Amazon Bedrock Guardrail의 일부 속성을 나열합니다. 구체적으로, 우리는 GuardRail이 데이터 유형을 다루는 것을 보게됩니다.
09_rag_address.py와 동일한 래그 기반 호출을 수행하지만 Bedrock에 대한 호출의 일부로 Bedrock Guardrail을 추가합니다. 이는 응답에서 특정 주소 pii 데이터를 수정합니다.
기반암 호출의 최근 CloudTrail 인스턴스 3 개를 나열합니다. 이것은 단순히 CloudTrail이 아마존 기반암 서비스의 사용을 감사하는 데 사용될 수있는 방법을 보여줍니다. 다른 AWS 서비스는 또한 CloudTrail 이벤트를 생성 하며이 데이터를 사용하여 AWS 리소스를 감사하고 보호 할 수 있습니다.
최근 3 개의 CloudWatch 모델 호출 로그를 나열합니다. 이것은 데이터를 CloudWatch 모델 호출 로그에 포함시키는 방법을 보여줍니다. 따라서 모델 호출 로그를 활성화하면 데이터 소스 자체를 보호 할 수있는 동일한 수준의 치료로이를 보호해야합니다.
Python 스크립트를 실행 한 후에는 생성 AI 워크로드에 대한 데이터 보호 고려 사항을 보여주는 몇 가지 예제를 안내하게됩니다. 주요 테이크 아웃 중 일부는 다음과 같습니다.
데이터 보호 기본 사항은 여전히 적용됩니다.
생성 AI는 몇 가지 새로운 고려 사항을 소개합니다
자세한 내용은 기여를 참조하십시오.
이 라이브러리는 MIT-0 라이센스에 따라 라이센스가 부여됩니다. 라이센스 파일을 참조하십시오.