1. GenAI Application의 트렌드
최근 몇 년 사이, 생성형 인공지능(Generative AI)은 기술 분야 전반에서 가장 주목받는 혁신의 중심에 서 있습니다. OpenAI의 ChatGPT가 대중적인 인기를 끌면서, 대규모 언어 모델(Large Language Model, LLM)을 중심으로 하는 인공지능 활용이 급속히 확산되었으며, 이는 단순한 기술을 넘어 기업 경영, 업무 프로세스 자동화 등 다방면에 걸친 영향을 미치고 있습니다. 특히 검색 증강 생성(Retrieval-Augmented Generation, RAG) 기법의 대두는 기존의 언어 모델이 갖고 있던 환각(hallucination) 문제를 줄이고, 최신성과 정확성을 확보하는 데 효과적인 대안으로 자리잡았습니다.
이 글에서는 생성형 AI의 최신 트렌드와 함께, RAG 기법의 다양한 형태, 프레임워크 비교, 그리고 AWS 기반에서의 구현 전략까지 전반적으로 다루어 보고자 합니다.
2. RAG의 개념 및 유형
검색 증강 생성(RAG)은 대규모 언어 모델의 한계를 극복하기 위한 방법론으로, 외부 지식 소스에서 관련 정보를 검색하여 생성 프로세스를 보강하는 기술입니다. RAG는 GenAI 애플리케이션의 RAG의 개념 및 유형에 대해서 알아보겠습니다.
1). RAG의 기본 개념
RAG(Retrieval-Augmented Generation)는 생성형 인공지능의 응답 정확성을 높이고, 보다 신뢰성 있는 정보를 제공하기 위한 아키텍처로, 크게 세 가지 주요 구성 요소로 이루어져 있습니다. 이 구성 요소들은 각각 고유한 역할을 수행하면서 유기적으로 결합되어, 기존의 LLM(Large Language Model) 단독 운영 방식으로는 달성하기 어려운 성능 향상을 가능케 합니다.
첫 번째는 검색 시스템(Retrieval System)입니다. 이는 사용자로부터 입력된 질문이나 요청(쿼리)에 대해, 사전에 구축된 지식 저장소 내에서 의미적으로 관련된 정보를 찾아내는 역할을 수행합니다. 이 검색 시스템은 보통 벡터 검색 엔진이나 키워드 기반의 색인 검색 시스템으로 구성되며, 사용자가 입력한 질문을 임베딩하여 문서들과의 의미적 유사도를 계산함으로써, 가장 관련성 높은 문서나 단락을 반환합니다. 이 과정은 단순한 키워드 매칭이 아닌, 의미 기반의 연관성을 판단하기 때문에, 복잡하거나 비정형화된 질문에도 유연하게 대응할 수 있다는 강점을 지닙니다.
두 번째 구성 요소는 지식 저장소(Knowledge Base)입니다. 이는 조직이 보유하고 있는 다양한 정보 자산을 저장하고 관리하는 저장소로, 일반적으로 기업 내부 문서(PDF, 워드 문서 등), 웹 페이지, 데이터베이스, 전자메일, FAQ, 정책 문서, 고객 응대 기록 등 다양한 데이터 소스를 포함합니다. 이 지식 저장소는 사전에 전처리 및 임베딩 과정을 거쳐 벡터 형태로 저장되며, 검색 시스템이 이 데이터에 대해 질의할 수 있도록 설계됩니다. RAG 시스템의 성능은 이 지식 저장소의 품질과 폭넓은 커버리지에 크게 영향을 받기 때문에, 정확한 문서 수집과 관리, 정제된 임베딩 전략이 핵심 요소로 작용합니다.
세 번째는 생성 모델(Generative Model)입니다. 검색 시스템이 반환한 관련 문서나 정보는 그대로 사용자에게 전달되는 것이 아니라, LLM에 컨텍스트로 제공되어 자연어 형태로 재구성됩니다. 이 때 생성 모델은 단순히 정보를 나열하는 것이 아니라, 사용자의 질문 의도를 반영하여 정돈된 문장 구조로 응답을 생성합니다. 예를 들어, 단순 검색 시스템이 “FAQ 문서의 특정 단락”을 반환한다면, 생성 모델은 이를 바탕으로 보다 자연스럽고 응집력 있는 문장으로 재작성하여 사용자가 쉽게 이해할 수 있도록 돕습니다.
이러한 구조를 통해 RAG는 다음과 같은 주요 이점을 제공합니다.
첫째, 최신 정보의 제공이 가능합니다. 기존 LLM은 사전 학습 데이터 이후의 정보는 반영할 수 없다는 한계가 있었지만, RAG는 검색 시스템을 통해 실시간 혹은 주기적으로 업데이트된 외부 데이터 소스에 접근할 수 있기 때문에, 최신 정보를 포함한 응답을 제공할 수 있습니다.
둘째, 환각(Hallucination) 현상을 줄이는 데 효과적입니다. 일반적인 LLM은 존재하지 않는 사실을 마치 진짜인 것처럼 생성해내는 경향이 있는데, RAG는 외부의 실제 문서나 데이터에 기반해 응답을 생성하기 때문에, 정보의 사실성(Factuality)을 높이고 잘못된 정보를 줄이는 데 기여합니다.
셋째, 맥락 이해를 향상시킵니다. 검색 시스템을 통해 질문과 직접적으로 관련된 문맥이 제공되기 때문에, 생성 모델이 단순한 패턴 매칭이 아닌 보다 풍부한 배경 정보와 함께 문장을 생성할 수 있게 됩니다. 이는 특히 복잡한 질의나 다단계 추론이 필요한 질문에 있어 응답의 품질을 크게 향상시킵니다.
넷째, 도메인 특화 지식의 반영이 용이합니다. 일반적인 LLM은 범용적인 지식 기반으로 학습되어 있으므로 특정 산업, 기업, 법률, 의료 등 특화된 분야에 대해서는 제한적인 응답만 제공할 수 있습니다. 반면, RAG는 특정 도메인의 내부 문서나 데이터베이스를 지식 저장소로 활용할 수 있기 때문에, 매우 정밀하고 맥락에 맞는 응답을 생성할 수 있습니다.
이처럼 RAG는 생성형 인공지능의 정확성과 신뢰성을 강화하는 데 있어 중요한 진보이며, 특히 기업 환경에서 신뢰할 수 있는 AI 응답을 필요로 하는 다양한 실무 시나리오에 널리 적용되고 있습니다.
2). RAG의 유형
기본 RAG (Basic RAG)
가장 단순한 형태의 RAG로, 사용자 쿼리를 기반으로 관련 문서를 검색하고, 이를 컨텍스트로 LLM에 제공하여 응답을 생성합니다. 단일 검색-생성 사이클로 구성됩니다.
Advanced RAG
기본 RAG를 개선한 형태로, 다음과 같은 고급 기능을 포함합니다. 현재 가장 많이 활용되고 있는 기술입니다.
- 쿼리 재작성(Query Rewriting): 원래 쿼리를 더 효과적인 검색을 위해 재구성합니다.
- 다중 쿼리 생성(Multi-Query Generation): 하나의 사용자 질문에서 여러 검색 쿼리를 생성하여 검색 범위를 확장합니다.
- 결과 재순위화(Re-ranking): 검색된 문서를 관련성에 따라 재정렬합니다.
- 문서 요약(Document Summarization): 검색된 문서를 요약하여 LLM에 더 집중된 컨텍스트를 제공합니다.
Modular RAG
RAG 파이프라인을 모듈화하여 각 구성 요소를 독립적으로 최적화할 수 있는 접근법입니다. 이러한 모듈식 접근법은 각 구성 요소를 독립적으로 교체하고 최적화할 수 있어 유연성이 높습니다. Advanced RAG를 보다 재사용성이 높습니다. 주요 모듈은 다음과 같습니다.
- Chunking Module: 문서를 효과적인 크기의 청크로 분할합니다.
- Embedding Module: 텍스트를 벡터로 변환하는 임베딩 생성을 담당합니다.
- Retrieval Module: 가장 관련성 높은 문서를 검색합니다.
- Generation Module: 최종 응답을 생성합니다.
Recursive RAG
RAG 프로세스를 반복적으로 수행하는 방법으로, 첫 번째 응답을 생성한 후 추가 정보가 필요한 경우 후속 검색을 수행합니다. 이를 통해 복잡한 질문에 대해 더 포괄적인 답변을 제공할 수 있습니다.
Adaptive RAG
질문의 복잡성과 유형에 따라 RAG 프로세스를 동적으로 조정하는 접근법입니다. 간단한 질문에는 기본 RAG를, 복잡한 질문에는 더 정교한 RAG 기법을 적용합니다. 그외 Hypothetical Document RAG 등 다양한 방식이 존재합니다.
3. GenAI Application Framework 특징 및 장단점
생성형 AI 애플리케이션을 개발할 때는 다양한 프레임워크 중에서 요구사항에 맞는 도구를 선택하는 것이 중요합니다. 각 프레임워크는 LLM과 외부 시스템을 연결하거나, 프롬프트 체이닝, 검색, 생성, 데이터 관리 등 고유의 기능에 최적화되어 있으며, 그에 따라 장단점도 상이합니다. 아래는 대표적인 생성형 AI 애플리케이션 프레임워크들의 특성과 장단점에 대한 설명입니다. 국내에서는 LangChain이 가장 많이 사용되며, LlamaIndex가 그 다음으로 많이 사용됩니다. 해외에서는 앞서 언급한 2개의 프레임워크 외에도 AutoGen이나 CrewAI도 많이 사용되고 있습니다.
1). 주요 프레임워크 설명 및 비교
LangChain
LangChain은 생성형 AI 워크플로우를 구성하기 위한 모듈형 프레임워크입니다. 체인(chain) 개념을 통해 프롬프트를 단계별로 조합하거나, 에이전트를 통해 다양한 도구를 제어하는 구조로 설계되어 있습니다. 다양한 LLM(OpenAI, Anthropic 등)과 벡터DB, API 등과 쉽게 통합 가능하며, 풍부한 커뮤니티 문서와 예제가 제공됩니다. 사실 국내에서 가장 많이 쓰이는 범용적인 프레임워크라고 생각됩니다.
구분 | 키워드 | 설명 |
장점 | 광범위한 통합성 | 다양한 LLM, 툴, DB, API와 손쉬운 연결 |
빠른 프로토타이핑 | 체인 설계가 쉬워 초기 제품 구현에 유리함 | |
풍부한 예제 | 다양한 유스케이스에 대한 템플릿 제공 | |
단점 | 학습 곡선 존재 | 초보자에게는 체인과 에이전트 개념이 난해할 수 있음 |
호환성 문제 | 버전별 기능 차이 및 API 변경으로 인한 유지보수 필요 | |
대규모 운영 이슈 | 고성능 분산 환경에서 성능 튜닝 필요 |
LlamaIndex
LlamaIndex는 데이터 연결, 인덱싱, 검색 기능에 특화된 프레임워크로, 특히 Retrieval-Augmented Generation(RAG) 아키텍처에 최적화되어 있습니다. 간결한 API와 다양한 커넥터(S3, Notion, SQL 등)를 제공하며, 텍스트 기반 문서를 효율적으로 임베딩하고 검색할 수 있습니다.
구분 | 키워드 | 설명 |
장점 | 데이터 연결 및 인덱싱 최적화 | 다양한 외부 소스 연동이 간편함 |
직관적인 구조 | 코드 구조가 단순하고 이해하기 쉬움 | |
효율적인 검색 성능 | 벡터 검색과 텍스트 기반 색인 조합 지원 | |
단점 | 제한된 커뮤니티 규모 | LangChain에 비해 생태계가 작음 |
고급 자동화 부족 | 복잡한 에이전트 워크플로우 구현에는 한계 있음 | |
일부 기능 미완성 | 실험적 기능의 문서화 미흡함 |
AutoGen
Microsoft Research에서 개발한 AutoGen은 다중 에이전트 기반 협업 환경을 지원하는 프레임워크입니다. 여러 LLM 기반 에이전트를 구성하고, 이들이 대화하고 협업하는 구조를 통해 복잡한 태스크를 분산 처리할 수 있도록 돕습니다.
구분 | 키워드 | 설명 |
장점 | 다중 에이전트 지원 | 역할 분담을 통한 태스크 분산 및 협업 가능 |
에이전트 간 상호작용 | 대화형 프로토콜로 복잡한 로직 처리 가능 | |
확장성 우수 | 커스텀 에이전트 구성에 유연함 | |
단점 | 미성숙한 생태계 | 실사용 사례와 튜토리얼이 제한적임 |
학습 리소스 부족 | 문서화가 상대적으로 미흡함 | |
복잡성 증가 | 에이전트 구조 설계에 시간 소요 |
CrewAI
CrewAI는 팀 단위의 에이전트 설계 개념을 도입한 프레임워크로, 인간의 조직 구조를 모방한 설계를 통해 복잡한 작업의 분할 및 위임을 돕습니다. 각 역할에 따라 에이전트를 배치하고, 이들 간 협업 시나리오를 정의할 수 있습니다.
구분 | 키워드 | 설명 |
장점 | 직관적인 팀 모델링 | 역할별 분담과 위임 로직이 명확함 |
협업 구조 설계 | 작업 분할에 최적화된 설계 구조 제공 | |
분산형 처리 가능 | 태스크 자동화에 적합한 환경 구성 | |
단점 | 비교적 신생 기술 | 안정성 확보를 위한 사례 부족 |
예제 및 레퍼런스 부족 | 실제 구현 참고자료가 제한적임 | |
대규모 적용 미검증 | 프로덕션 환경 운영 사례 부족 |
2). LLM API 직접 사용 vs 프레임워크 사용 비교
LLM을 사용하는 방식은 크게 두 가지로 나뉩니다. 하나는 OpenAI나 Anthropic API를 직접 호출하여 애플리케이션을 구성하는 방법이고, 다른 하나는 LangChain, LlamaIndex 같은 프레임워크를 활용하여 보다 체계적으로 구성하는 방식입니다. 각각의 접근 방식은 장단점이 뚜렷합니다.
LLM API 직접 호출
구분 | 키워드 | 설명 |
장점 | 간단한 구성 | 프레임워크 없이 직접 구현 가능 |
의존성 최소화 | 외부 모듈에 대한 의존도 낮음 | |
낮은 오버헤드 | 프레임워크에 따른 성능 저하 없음 | |
단점 | 유지보수 어려움 | 복잡한 워크플로우 설계 시 재사용 어려움 |
통합성 부족 | 다양한 기능은 별도 구현 필요 | |
멀티 LLM 전환 불편 | API별 로직 중복 발생 가능 |
프레임워크 활용
구분 | 키워드 | 설명 |
장점 | 기능 확장성 | 검색, 체인, 에이전트 등 다양한 기능 지원 |
전환 유연성 | 다양한 LLM 간 손쉬운 교체 가능 | |
통합 옵션 풍부 | 벡터DB, 파일 시스템, 외부 API 등 연계 용이 | |
단점 | 복잡한 학습 | 프레임워크 구조 이해에 시간 소요 |
성능 오버헤드 | 추상화 계층으로 인한 처리 비용 증가 가능 | |
버전 의존성 | 업데이트에 따른 코드 수정 필요 |
이와 같이 생성형 AI 애플리케이션 구축 시 어떤 프레임워크를 선택할지는 개발자의 경험, 조직의 요구사항, 성능 요구 조건, 유지보수 계획 등에 따라 달라질 수 있다. MVP 단계에서는 API 직접 호출 방식이 빠르게 결과를 낼 수 있는 장점이 있으며, 이후 엔터프라이즈 확장 단계에서는 LangChain이나 LlamaIndex와 같은 프레임워크를 도입해 모듈화된 구조로 발전시키는 전략이 효과적입니다.
4. AWS에서 RAG를 이용한 GenAI Application 아키텍처
Amazon Web Services(AWS)는 Retrieval-Augmented Generation(RAG) 기반 생성형 AI 애플리케이션을 구축하기 위한 다양한 매니지드 서비스를 제공합니다. 이 절에서는 RAG 아키텍처를 구현하기 위한 주요 구성 요소와 각 단계에서 활용 가능한 AWS 서비스를 설명합니다. 이 구조는 확장성, 비용 효율성, 운영 간소화 등을 고려하여 설계되며, 서버리스 기반 아키텍처와 전통적인 모델 호스팅 방식이 조합될 수 있습니다.
1). 기본 RAG 아키텍처 구성 요소
RAG 아키텍처는 크게 네 가지 계층으로 구성됩니다: 데이터 수집 및 저장, 데이터 처리, 모델 서빙, 애플리케이션 계층입니다. 아래 표는 각 계층에서 활용할 수 있는 주요 AWS 서비스를 요약한 것입니다.
계층 | 기능 | 활용 서비스 |
데이터 수집 및 저장 | 원시 문서 저장 및 구조화 데이터 관리 | Amazon S3, Amazon RDS, Amazon DynamoDB |
데이터 처리 | 문서 청크 분할, 임베딩 생성, 벡터 색인 구축 | AWS Lambda, Amazon OpenSearch Service |
모델 서빙 | 생성 모델 호출, 커스텀 모델 서빙 | Amazon Bedrock, Amazon SageMaker, AWS Lambda |
애플리케이션 계층 | API 제공, 콘텐츠 전송, 비즈니스 로직 처리 | Amazon API Gateway, AWS Lambda, Amazon CloudFront |
이러한 구성은 RAG의 전형적인 흐름인 검색 → 생성 → 응답의 단계를 매끄럽게 처리하며, 전체 시스템의 탄력성과 안정성을 높이는 기반이 됩니다.
2). 데이터 인덱싱 및 검색 전략
Amazon OpenSearch 기반 벡터 검색
Amazon OpenSearch Service는 대규모 벡터 임베딩 데이터를 관리하고 검색하는 데 최적화된 오픈서치 엔진입니다. OpenSearch는 아래와 같은 특징을 가집니다.
- k-NN 기반 벡터 유사도 검색 지원
- 키워드 검색과 벡터 검색을 결합한 하이브리드 검색 가능
- 대규모 데이터셋에서의 확장성과 성능 확보
Amazon OpenSearch Service 외에도 Kendra라는 서비스가 있으나 최근에는 대부분 OpenSearch로 벡터 스토어를 구성하고 있어 추천하지는 않습니다.
3). 임베딩 생성 및 관리
서비스 | 특징 | 활용 방식 |
Amazon SageMaker | 고성능 모델 학습/배포 | 임베딩 모델 배포 및 대용량 배치 임베딩 생성 |
Amazon Bedrock | 서버리스 기반 API 호출 | Titan 등 다양한 모델을 통한 임베딩 생성 지원 |
SageMaker는 GPU 인스턴스를 사용한 맞춤형 임베딩 생성에 적합하며, Bedrock은 서버리스 방식으로 간편하게 다양한 모델의 임베딩 API를 사용할 수 있습니다.
4). 생성형 AI 모델 호출 (LLM 기반 응답 생성)
서비스 | 특징 | 사용 예시 |
Amazon Bedrock | Claude, Llama 등 다양한 모델 API 제공 | 프롬프트 기반 응답 생성, Knowledge Base 통합 |
SageMaker JumpStart | 사전 학습된 모델 제공, 커스텀 가능 | 파인튜닝 및 도메인 특화 모델 학습 후 서빙 |
Bedrock은 관리형 환경에서 다양한 생성형 모델을 API 형식으로 제공하며, SageMaker JumpStart는 학습된 모델을 커스터마이징하거나, 도메인 맞춤형 LLM을 구축하는 데 적합합니다. 즉, 별도의 LLM을 서빙하려면 SageMaker를, AWS가 제공하는 다양한 LLM을 그대로 활용하려면 Bedrock을 사용하면 됩니다.
이와 같이 AWS는 RAG 기반 생성형 AI 시스템을 구축하는 데 필요한 데이터 수집, 임베딩 생성, 검색, 생성 모델 호출, 응답 제공에 이르기까지 전 주기를 커버할 수 있는 다양한 서비스를 제공합니다. 적절한 조합을 통해 비용 효율적이면서도 유연하고 확장 가능한 RAG 아키텍처를 설계할 수 있으며, 이는 특히 민감 데이터 보안, 대용량 트래픽 대응, 도메인 맞춤화가 요구되는 엔터프라이즈 환경에서 강력한 선택지가 됩니다.
결론
생성형 인공지능의 핵심 기술 중 하나인 RAG(Retrieval-Augmented Generation)는 최신 정보 반영과 도메인 특화 응답을 가능하게 하여, 기업이 신뢰성 높은 AI 시스템을 구축하는 데 중요한 역할을 합니다. AWS와 같은 CSP를 이용하면 RAG 구현에 필요한 데이터 저장, 임베딩 생성, 검색, 생성, 응답 제공에 이르기까지 전 과정을 지원하는 완성도 높은 서비스를 쉽고 빠르게 개발할 수 있으며, 이를 기반으로 확장성과 보안, 비용 효율성을 모두 갖춘 GenAI 애플리케이션을 구축할 수 있습니다.
LangChain, LlamaIndex 등 다양한 프레임워크는 사용 목적에 따라 복잡한 워크플로우 설계, 에이전트 기반 협업, 타입 안전성 확보 등 차별화된 기능을 제공하며, 직접 API를 사용하는 방식보다 높은 생산성과 유지보수 효율성을 보장합니다.
궁극적으로 성공적인 RAG 기반 시스템 구현을 위해서는 요구사항에 맞는 아키텍처 설계와 프레임워크 선택, 그리고 클라우드 서비스의 효과적인 조합이 필수적입니다. 이와 함께 보안, 거버넌스, 사용자 경험 최적화 전략을 함께 고려한다면, 기업은 경쟁력 있는 생성형 AI 서비스를 지속적으로 발전시켜 나갈 수 있습니다.
참고문헌
- https://www.langchain.com
- https://www.llamaindex.ai
- https://www.crewai.com
- https://microsoft.github.io/autogen/stable//index.html
- https://aws.amazon.com/ko/what-is/retrieval-augmented-generation
- https://aws.amazon.com/ko/blogs/tech/multi-rag-and-multi-region-llm-for-chatbot
- https://aws.amazon.com/startups/learn/serverless-retrieval-augmented-generation-on-aws?lang=ko
- https://aws.amazon.com/ko/blogs/tech/bedrock-multimodal-rag-chatbot