Recap Series
- 세션 02: Terraform을 활용한 AWS 컴플라이언스
- 세션 03: 초보자에서 빌더로: 멋진 클라우드 여정
- 세션 04: Laravel와 Bref를 활용한 팀 우선 서버리스 엔지니어링
- 세션 05: 행사 개회: AWS Community Day Hong Kong 2025
- 세션 06: Agent-to-Agent: AWS에서 상호 운용 가능한 AI 구축하기
- 세션 07: AI 에이전트와 추가 텔레메트리 데이터를 활용한 신속한 개선
- 세션 08: 바이브 코딩을 넘어서: Kiro를 활용한 사양 주도 개발
- 세션 09: MCP 및 AI 에이전트를 활용한 자동화 테스트
- 세션 10: 통신 보안 현대화: ML 기반 접근 방식
- 세션 11: GenAI 에이전트 재고찰: RAG와 MCP
- 세션 12: TAK와 AWS를 활용한 재난 및 긴급 대응
- 세션 13: 테스트 관점에서 서버리스 애플리케이션 워크플로 재고찰
- 세션 14: 클라우드 성공을 위한 실용적인 AWS FinOps
에이전트 아키텍처의 RA와 MCP
세션의 초점
- 에이전트 세계의 두 가지 전통적 기술인 검색 증강(RA)과 다중 체인 처리(MCP)를 논의합니다.
- 에이전트 아키텍처에서 중요한 요소와 에이전트 성능을 높이는 방법을 강조합니다.
핵심 사항
- 에이전트 오케스트레이션: 에이전트는 모델에 의해 오케스트레이션되므로 모델이 매우 중요합니다.
- 모델 발전: 별도의 맞춤형 훈련을 수행하지 않는 한, 모델의 논리적 사고와 역량 발전은 주로 모델 제공업체가 주도합니다.
- 외부 시스템 연결성: 에이전트가 외부 시스템에 연결하여 정확하게 작업을 수행하는 능력이 매우 중요합니다.
검색 증강(RA)
- 정의: RA를 사용하면 대규모 언어 모델(LLM)이 재훈련 없이 맞춤형 지식 베이스에 접근할 수 있습니다.
- 이점: 모델 미세 조정 또는 재훈련에 필요한 컴퓨팅 성능과 관련 비용을 줄입니다.
- 사용 사례: 퓨샷 또는 원샷 학습을 활용한 프롬프트 엔지니어링만으로는 부족할 수 있는 복잡한 워크로드에 적합합니다.
목표
- 에이전트의 실질적인 성능을 향상합니다.
- 에이전트 아키텍처에서 RA의 성능을 개선합니다.
아키텍처 개요
- 이 세션에서는 RA와 MCP가 전반적인 성능에 어떻게 기여하는지에 초점을 맞춰 에이전트 시스템의 아키텍처를 자세히 살펴봅니다.
검색 증강(RA) 아키텍처 상세 분석
RA 구현 단계
- 문서 준비: 자체 문서(PDF, 미디어, 동영상)로 시작합니다.
- 청킹: 문서를 청크(의미 있는 텍스트 구간)로 나눕니다.
- 임베딩: 임베딩 모델을 사용하여 청크를 숫자 표현(벡터)으로 변환합니다.
- 벡터 저장: 벡터를 데이터베이스(관계형 데이터베이스 또는 Neo4j나 Pinecone 같은 네이티브 벡터 저장소)에 저장합니다.
쿼리 프로세스
- 사용자가 질문하면 질문이 벡터로 변환됩니다.
- 벡터 데이터베이스가 유사도 검색을 수행하여 가장 관련성 높은 답변을 찾습니다.
- 맞춤형 응답을 생성하도록 답변이 대규모 언어 모델(LLM)에 전달됩니다.
RA 성능 향상을 위한 핵심 요소
청킹 전략
- 청킹의 중요성:
- 초기 LLM은 컨텍스트 창이 제한적이었습니다.
- 청킹은 중요한 정보를 놓치는 "중간 정보 손실" 현상을 방지합니다.
- 주요 고려 사항:
- 청크 크기: 주관적이며 개인의 선호에 따라 달라집니다.
- 청킹 로직: 텍스트를 의미 있게 나누는 방법입니다.
임베딩 모델 선택
- 정확한 벡터 표현을 위해서는 적절한 임베딩 모델을 선택하는 것이 매우 중요합니다.
벡터 데이터베이스 선택
- 벡터 데이터베이스마다 서로 다른 알고리즘과 라이브러리를 사용합니다.
- 적절한 데이터베이스의 선택은 성능과 정확도에 영향을 줍니다.
청킹이 중요한 이유
- 컨텍스트 창의 한계: 초기 LLM은 대용량 입력을 처리할 수 없었으며, 청킹을 사용하면 처리 가능한 구간으로 나눌 수 있습니다.
- 중간 정보 손실 방지: 처리 중에 중요한 정보를 놓치지 않도록 합니다.
- 청크 크기와 로직: 청킹의 효과에 영향을 미치는 주관적인 선택 사항입니다.
청킹 전략과 영향에 대한 추가 세부 정보
청크 크기의 영향
- 청크 크기는 응답 시간과 충실도 및 관련성 같은 성능 지표에 영향을 줍니다.
- LlamaIndex는 청크 크기와 성능 간의 관계를 보여 줍니다.
AWS의 청킹 전략
고정 크기 청킹
- 텍스트를 고정 크기의 청크로 규칙적이고 구문적으로 나눕니다.
의미 기반 청킹
- 자연어 처리(NLP)를 사용하여 텍스트를 이해하고 의미 있는 방식으로 나눕니다.
계층적 청킹
- 상위-하위 관계를 활용하며, 계층 구조를 가진 문서에 자주 사용됩니다.
청킹의 주요 고려 사항
- 의미 있는 청크: 단순히 구문적으로 나누는 데 그치지 않고 청크가 의미론적으로 유의미하도록 해야 합니다.
- 텍스트 이해: 청크가 유의미한지 판단할 수 있도록 텍스트를 이해하는 것이 목표입니다.
- 무청킹 전략: 데이터 세트가 완전하거나 충분히 학습되어 있다면 청킹이 필요하지 않을 수 있습니다.
요약
- 청킹은 단순히 크기의 문제가 아니라 텍스트를 이해하고 의미 있게 나누는 과정입니다.
- AWS는 고정 크기, 의미 기반, 계층적 청킹을 비롯한 다양한 청킹 전략을 제공합니다.
- 청킹 전략은 텍스트의 특성과 원하는 성능 결과에 따라 선택해야 합니다.
임베딩 모델과 유사도 지표 상세 설명
임베딩 모델
- 임베딩 모델은 텍스트를 숫자 표현(벡터)으로 변환합니다.
- 예: "ABC"(A: "나는 달리기를 좋아한다", B: "내가 가장 좋아하는 장소는 달리기 장소다", C: "오늘 날씨가 좋다")는 [0.8, 0.6, 0.11]과 같은 벡터로 임베딩됩니다.
- 이러한 벡터의 의미는 임베딩 모델에 의해 결정됩니다.
유사도 지표
- 유클리드 거리: 두 벡터 사이의 직선거리를 측정합니다. 거리가 짧을수록 유사도가 높습니다.
- 코사인 유사도: 두 벡터 사이의 각도를 측정합니다. 값이 1에 가까울수록 유사도가 높습니다.
예시
- ABC 예시에서 A와 B는 유클리드 거리와 코사인 유사도 모두에서 수학적으로 더 유사하거나 가깝습니다.
적절한 임베딩 모델 선택
- [ 1 ] 사용 사례와 언어:
- 구체적인 사용 사례와 언어 요구 사항(예: 다국어 지원)을 파악합니다.
- [ 2 ] 토큰 크기 또는 창 크기:
- 모델이 텍스트 자료의 크기를 처리할 수 있는지 확인합니다.
- [ 3 ] 차원 수:
- 차원 수가 많을수록 더 많은 의미를 포착할 수 있지만 메모리가 더 필요할 수 있습니다.
- 정보 포착 능력과 메모리 비용 사이의 절충이 필요합니다.
AWS 임베딩 모델
- AWS에서는 다양한 임베딩 모델을 사용할 수 있으며, 최근에는 Nova 임베딩 같은 새로운 모델도 출시되었습니다.
- 선택하려면 테스트 결과를 검토하고 모델의 역량을 이해하는 것이 중요합니다.
요약
- 임베딩 모델은 텍스트를 숫자 벡터로 변환하여 유사도 검색을 가능하게 합니다.
- 유사도는 유클리드 거리와 코사인 유사도를 사용하여 측정합니다.
- 적절한 임베딩 모델을 선택할 때는 사용 사례, 토큰 크기, 차원 수를 고려해야 합니다.
벡터 데이터베이스와 검색 알고리즘 요약
벡터 데이터베이스(벡터 DB)
- 텍스트를 숫자 표현(벡터)으로 변환한 후에는 이를 벡터 데이터베이스에 저장해야 합니다.
- AWS는 Pinecone이나 Mu 같은 오픈 소스 서버리스 솔루션을 비롯하여 다양한 데이터베이스 옵션을 제공합니다.
- 검색 방법을 이해하기 위한 예시로 OpenSearch를 중점적으로 다룹니다.
검색 방법
- [ 1 ] 계층적 탐색 가능 소형 세계(HNSW):
- 더 빠른 검색을 위해 그래프 형태의 계층별 구조를 생성합니다.
- 단점: 메모리 소비량이 더 많습니다.
- [ 2 ] 역파일 색인(IVF):
- 벡터를 버킷으로 나누어 하위 버킷을 검색합니다.
- 장점: HNSW보다 메모리 사용량이 적습니다.
적절한 검색 방법 선택
- 쿼리 지연 시간, 쿼리 품질, 메모리 사용량, 인덱싱을 고려합니다.
- OpenSearch는 방법을 선택할 때 이러한 요소를 고려할 것을 권장합니다.
- FAISS 같은 방법은 최적의 성능을 위해 HNSW와 IVF를 결합할 수 있습니다.
벡터 DB 선택의 절충점
- 정해진 답은 없으며, 성능과 허용 수준은 사용자마다 다릅니다.
- 품질, 비용, 지연 시간 사이에서 균형을 맞춰야 합니다.
- 메모리 사용량이 많을수록 비용이 증가하지만 결과의 정확도는 높아집니다.
결론
- 벡터 DB와 검색 알고리즘은 구체적인 사용 사례와 요구 사항에 따라 선택해야 합니다.
- 의사 결정 다이어그램과 트리 다이어그램이 적절한 옵션을 선택하는 데 도움이 될 수 있습니다.
MCP로 전환
- 이제 세션은 모델 컨텍스트 프로토콜(MCP)을 논의하고 MCP 사용 경험을 공유하는 내용으로 넘어갑니다.
모델 컨텍스트 프로토콜(MCP) 소개
MCP란?
- MCP는 Model Context Protocol의 약자로, AI 애플리케이션을 외부 시스템, 데이터베이스 또는 지식 베이스와 연결하기 위한 오픈 소스 표준입니다.
- 시스템이 더욱 효과적으로 응답할 수 있도록 하는 것이 목적입니다.
MCP 아키텍처 개요
- MCP 호스트: 여러 MCP 클라이언트를 포함하는 중앙 구성 요소입니다.
- MCP 클라이언트: MCP 서버와 상호 작용합니다.
- MCP 서버: 파일 시스템, 데이터베이스 또는 기타 애플리케이션 같은 여러 시스템을 나타냅니다.
MCP 클라이언트의 핵심 기능
- 샘플링: MCP 서버로 보내는 요청 수를 제어합니다.
- 루트: 클라이언트가 MCP 서버에서 추출하려는 디렉터리 또는 데이터 유형을 지정합니다.
- 정보 요청: 클라이언트가 MCP 서버에서 수신하려는 데이터에 대한 선호 사항을 정의합니다.
AWS에 MCP 서버를 배포하기 위한 참조 아키텍처
- CloudFront와 Buff: 성능 향상과 악의적인 공격에 대한 보안에 사용됩니다.
- Amazon Cognito: MCP 클라이언트의 요청이 유효한지 확인하는 인증에 활용됩니다.
요약
- MCP는 AI 애플리케이션과 외부 시스템 간의 상호 작용을 향상하는 프로토콜입니다.
- 아키텍처에는 MCP 호스트, 클라이언트, 서버가 포함됩니다.
- MCP 클라이언트의 주요 기능에는 샘플링, 루트, 정보 요청이 있습니다.
- MCP 서버를 안전하고 효율적으로 배포하려면 CloudFront, Buff, Amazon Cognito 같은 AWS 서비스를 사용하는 것이 좋습니다.
AWS의 MCP 배포에 대한 추가 설명
MCP 서버용 백엔드 서비스
- AWS Fargate와 AWS Lambda:
- Fargate: 장시간 실행해야 하는 MCP 서버를 호스팅합니다.
- Lambda: 이벤트에 의해 트리거되어 일시적으로 실행되는 코드를 호스팅합니다.
추가 AWS 서비스
- Amazon CloudWatch: MCP 서버 성능을 모니터링합니다.
- Parameter Store: MCP 서버의 환경 변수를 저장합니다.
- Amazon ECR: MCP 서버 구축에 사용할 이미지를 호스팅합니다.
- ACM(AWS Certificate Manager): 전송 중인 데이터가 인증서를 통해 암호화되도록 합니다.
AWS MCP 서버 배포 데모
- CDK(Cloud Development Kit): MCP 서버 아키텍처를 배포하는 데 사용합니다.
- [ 1 ] 단계:
- CDK 툴킷을 구성합니다.
- AWS에서 제공하는 CDK를 사용하여 백엔드 아키텍처를 배포합니다.
- [ 2 ] 배포된 스택 구성:
- VPC
- 보안 그룹
- CloudFront
- 인증용 Cognito 사용자 풀
- MCP 서버
배포 프로세스
- 배포 프로세스에는 소스 코드에서 Docker 이미지를 빌드하고 ECR에 푸시한 다음 ECS Fargate와 Lambda 같은 서비스에 배포하는 작업이 포함됩니다.
- 서버 구축과 배포가 복잡하기 때문에 이 프로세스에는 많은 시간이 소요됩니다.
요약
- MCP 서버의 백엔드는 Fargate와 Lambda 같은 서버리스 플랫폼을 활용합니다.
- CloudWatch, Parameter Store, ECR, ACM 같은 추가 AWS 서비스는 모니터링, 변수 저장, 이미지 호스팅, 암호화 보장에 사용됩니다.
- CDK를 사용한 데모에서는 AWS에 MCP 서버를 배포하는 방법을 보여 주며, 이 프로세스에 필요한 복잡성과 시간을 강조합니다.
MCP 클라이언트 상호 작용과 모범 사례에 대한 마무리 설명
MCP 서버와의 상호 작용
- 백엔드를 배포한 후 MCP 클라이언트를 사용하여 MCP 서버와 상호 작용할 수 있습니다.
- 미국 기상 경보를 제공하는 외부 웹사이트(API)에 연결된 MCP 서버와 상호 작용하는 방법을 시연합니다.
- 예: 경도와 위도를 입력하여 기상 경보를 예측하고 api.weather.gov에서 응답을 받습니다.
모범 사례 팁
- MCP 클라이언트를 콜백 호스트와 함께 배치하지 않기:
- MCP 클라이언트를 MCP 서버의 콜백 호스트와 동일한 호스트에 배치하지 않는 것이 좋습니다.
- 이렇게 하면 콜백 시간 초과 문제를 방지하는 데 도움이 됩니다.
요약
- MCP 클라이언트는 MCP 서버와 효과적으로 상호 작용하여 외부 시스템에서 데이터를 가져올 수 있습니다.
- 시간 초과 문제를 방지하려면 MCP 클라이언트와 콜백 호스트를 분리하는 것이 좋습니다.
- 데모에서는 MCP 서버가 외부 API와 상호 작용하여 기상 경보를 예측하도록 사용하는 방법을 보여 주었습니다.
