[reinvent 2024] 서버리스 컨테이너와 RAG를 활용한 생성형 AI의 기능 확장
Summary
Amazon ECS와 AWS Fargate, Retrieval Augmented Generation(RAG), Opensearch Serverless를 사용하여 서버리스 환경에 컨테이너 기반 생성형 AI 어플리케이션을 구축하는 방법 및 고려해야할 사항, 모범 사례를 살펴봅니다.
리인벤트 2024 테크 블로그의 더 많은 글이 보고 싶다면?
Overview
들어가며
1. RAG의 개념 및 구현 방안
고객은 Gen AI를 도입하기에 앞서 다음과 같은 과정을 거치게 됩니다. 먼저 use case를 정의하고, Gen AI 어플리케이션이 기존 서비스보다 더 가치 있을지, 투자대비 충분한 가치를 제공하는지를 판단합니다. 또 어떤 모델이 적절한지, 어떤 환경이 적절한지, 보안이 필요한 데이터는 어떻게 사용해야할지 등을 고려합니다.
본 세션에서는 이런 고객의 요구 사항을 해결하는 실질적인 방안으로 RAG (Retrieval Augmented Generation)를 제안합니다.
RAG는 LLM을 재학습 시키지 않고, fine tuning 시키지 않고도 최신화된 데이터 소스를 활용해 유연성을 높일 수 있으며 모델의 편향성을 최소화 할 수 있습니다.
다음 이미지는 RAG를 하는 과정에 대한 워크플로우 입니다. 데이터 소스를 임베딩하여 벡터 스토어에 저장하면, 사용자의 입력이 있을 때 시멘틱 서치를 통해 컨텍스트를 검색할 수 있습니다. 검색된 컨텍스트와 LLM을 통해 사용자의 의도에 맞는 답변을 제공할 수 있습니다.
2. 컨테이너 기반의 배포
컨테이너는 어플리케이션을 독립적으로 패키징해서 실행이 가능해 스케일링 등을 적용하는데에 유용하며 AWS에서는 Amazon ECS를 사용해 효율적으로 관리할 수 있습니다. 또, 서버리스 환경은 인프라의 관리를 최소화 하며 자동화를 시키기 좋다는 이점이 있습니다. 따라서 서버리스와 컨테이너 기반의 배포 방법을 Gen AI 어플리케이션에 적용시 각각의 강점을 사용해 빠르고 효율적인 배포가 가능합니다.
3. Fargate를 활용한 서버리스 Gen AI 아키텍처
서버리스 환경은 빠르고 간단하게 배포가 가능하다는 장점이 있습니다. 이 장점을 Gen AI 배포에 적용하면 더 혁신적인 기능을 더 빠르게 배포가 가능하며 관리 부담을 줄일 수 있습니다.
AWS Fargate를 사용한 RAG의 워크로드는 다음 이미지와 같습니다. RAG 데이터는 Amazon Bedrock의 Knowledge Base를 활용하여 앞서 말한 RAG를 위한 데이터 소스를 임베딩하여 Opensearch Serverless 서비스에 저장합니다. 저장된 벡터 데이터를 사용자의 입력이 들어올 때마다 Retrieve API를 사용하여 컨텍스트를 검색할 수 있습니다.
전반적인 플로우는 다음과 같습니다. 사용자가 질문을 해 AWS Fargate를 통해 API를 콜하면, 해당 사용자의 질문을 사용하여 Retrieve API를 사용해 관련된 RAG 데이터를 검색해 옵니다. 그리고 검색된 데이터와 사용자의 질문, 시스템 프롬프트를 함께 Foundation 모델에 넣어 받은 최종 답변을 사용자에게 전달해 줍니다.
결론
컨테이너 기반의 Gen AI 어플리케이션 뿐만 아니라 완전히 서버리스 형태로 AWS Fargate를 사용하여 배포하는 아키텍처에 대해 직접 실습해볼 수 있어, 이후 비용 효율성 등의 이유로 서버리스 환경을 사용하게 될 경우 이런 아키텍처를 적용해볼 수 있을 것 같습니다.