이 리포지토리에는 GenAI AWS 서비스를 사용하여 개인 문서와 관련된 질문에 답할 수 있는 Q&A 앱을 구축하는 방법에 대한 실제 사례가 포함되어 있습니다.
이전에는 Azure OpenAI GPT-4 및 Pinecone (여기에서 찾을 수 있음) 을 사용하여 Q&A 앱을 구축했습니다.
이 리포지토리에서는 AWS 서비스(+ UI용 Streamlit)만 사용하여 정확히 동일한 앱을 구축할 것입니다.
더 정확하게 말하면 앱의 아키텍처는 다음과 같습니다.
그리고 다음과 같은 기술을 사용합니다.
이 저장소에는 다음 앱이 포함되어 있습니다.
Streamlit
앱.개인 문서는 s3 버킷에 저장됩니다.
Kendra Index는 s3 커넥터를 사용하도록 구성됩니다. 인덱스는 N분마다 s3 버킷에서 새 콘텐츠를 확인합니다. 버킷에서 새 콘텐츠가 발견되면 자동으로 구문 분석되어 Kendra 데이터베이스에 저장됩니다.
사용자가 Streamlit
앱을 통해 쿼리를 실행하면 앱은 다음 단계를 따릅니다.
Streamlit
앱을 사용하는 대신 RAG 패턴 설정 지침을 단계별로 실행하고 싶다면 이 작업을 정확하게 수행할 수 있는 Jupyter 노트북( /notebooks/rag-with-langchain.ipynb
)이 있습니다.
Streamlit
앱은 RAG 패턴을 구현하기 위해 LangChain
라이브러리를 많이 사용합니다. 타사 라이브러리를 사용하지 않고 boto3
라이브러리만으로 RAG 패턴을 설정하려는 경우 이 작업을 수행할 수 있는 두 번째 Jupyter 노트북( /notebooks/rag-with-only-boto3.ipynb
)이 있습니다. .
/infra
폴더에는 앱이 제대로 작동하는 데 필요한 모든 AWS 서비스를 생성하는 일련의 Terraform 파일이 있습니다.
이러한 Terraform 파일은 다음 리소스를 생성합니다.
애플리케이션을 실행하기 전에 알아야 할 몇 가지 전제 조건이 있습니다.
"모델 액세스" 섹션에는 액세스할 수 있는 LLM과 액세스할 수 없는 LLM에 대한 개요가 있습니다.
이 애플리케이션을 완전히 사용하려면 모든 AWS Bedrock 제3자 LLM에 대한 액세스 권한이 있어야 합니다 .
boto3
로컬 시스템에 있는 AWS 구성 파일의 default
프로필에서 AWS 자격 증명을 검색하도록 설정됩니다. boto3
자격 증명 구성을 위한 다중 접근 방식에 대한 개요를 보려면 다음 링크로 이동하세요.
앱을 실행하기 전에 AWS 인프라 및 사전 조건 섹션을 읽어보세요.
저장소에는 앱이 성공적으로 실행되는 데 필요한 환경 변수가 포함된 .env
파일이 있습니다.
KENDRA_INDEX='<kendra-index>'
AWS_BEDROCK_REGION='<bedrock-region>'
AWS_KENDRA_REGION='<region-where-kendra-index-is-deployed>'
이에 따라 값을 변경하십시오.
pip install -r requirements.txt
Streamlit
설치하면 명령줄(CLI) 도구도 설치됩니다. 이 도구의 목적은 Streamlit
앱을 실행하는 것입니다.
앱을 실행하려면 다음 명령을 실행하세요.
streamlit run app.py
이 저장소에는 컨테이너에서 앱을 실행하려는 경우를 위한
Dockerfile
이 있습니다.
docker build -t aws-rag-app .
docker run -p 5050:5050
-e KENDRA_INDEX="<kendra-index>"
-e AWS_BEDROCK_REGION="<bedrock-region>"
-e AWS_KENDRA_REGION="<region-where-kendra-index-is-deploy>"
-e AWS_ACCESS_KEY_ID="<aws-access-key>"
-e AWS_SECRET_ACCESS_KEY="<aws-secret-access-key>"
aws-rag-app
app.py
업데이트했습니다.boto3
및 botocore3
휠 파일을 제거했습니다. Bedrock과 호환되는 boto3
마침내 공개되었습니다.