[reinvent 2024] Amazon Bedrock, LangChain, RAGAS를 사용한 RAG 파이프라인 고도화

Summary

Amazon Bedrock, langchain, RAGAS를 사용하여 응답과 RAG 파이프라인의 성능을 평가하는 방법에 대한 워크샵 세션입니다. RAG 및 LLM의 정확성, 안정성 등의 성능을 측정하는 방법을 공유합니다.


리인벤트 2024 테크 블로그의 더 많은 글이 보고 싶다면?

Tech Blog

AWS re:Invent 2024 Tech Blog written by MegazoneCloud

Overview

  • Title: Evaluate your RAG pipeline with Amazon Bedrock, LangChain, and Ragas
  • Date: 2024년 12월 4일(수)
  • Venue: MGM Grand | Level 1 | Terrace 151
  • Speaker:
  • Justin McGinnity(Solutions Architect, AWS)
  • Francesco Cerizzi(Solutions Architect, Amazon Web Services)
  • Deepthi Paruchuri(Sr.Solutions Architect, Amazon Web Services (AWS))
  • Alfredo Castillo(Sr Solutions Architect, AWS)
  • Ozan Talu(Sr Manager, Solutions Architecture, AWS)
  • Industry: Cross-Industry Solutions

들어가며

이번 세션은 Amazon Bedrock, Langchain, RAGAS를 활용해 RAG 파이프라인을 고도화하는 방법에 대한 워크샵을 진행했습니다. RAG를 사용한 Gen AI 어플리케이션을 구성할 때에 발생할 수 있는 문제점과 RAGAS를 활용해 그런 문제의 원인들을 해결할 수 있는 방안을 공유드립니다.

1. RAG를 활용한 Gen AI 어플리케이션의 실패 요인

RAG를 활용해 컨텍스트를 검색하여 사용하는 Gen AI 어플리케이션을 구성할 때 발생 가능한 일반적인 실패 요인은 다음 이미지와 같습니다.

RAG 파이프라인의 과정 별로 발생할 수 있는 문제점이 다른데, 크게는 컨텍스트 검색이 잘 되지 않았을 때, LLM을 통해 생성된 최종 답변이 적절하지 않을 때 두 가지로 나눌 수 있습니다.

그 중에서도 컨텍스트 검색이 잘 되지 않을 때는 문제의 원인이 임베딩이 잘 되지 않았을 때와 청킹이 잘 되지 않았을 때 두 가지로 나눌 수 있습니다. 이번 워크샵에서는 이런 세 가지 문제 상황들에 RAGAS를 활용하여 여러 모델, 여러 방안들을 비교 분석할 수 있는 방법을 공유했습니다.

2. RAGAS를 활용한 임베딩 모델 비교

RAG를 사용하기 위해서는 임베딩 모델을 사용하여 문서를 벡터화하고 벡터 데이터베이스에 저장하는 과정을 거쳐야 합니다. 여기에서 임베딩 모델에 따라 벡터화 되는 성능이 달라지는데, RAGAS를 활용하여 각 임베딩 모델 별로 어떤 모델이 어떤 부분에서 더 성능이 좋을지에 대한 비교를 할 수 있습니다.  


워크샵에서는 Amazon Titan Embedding 모델과 Cohere Endlish Embedding 모델을 사용했고, Answer relevancy, context precision, context reall, context entity recall, answer similarity, answer correctness 기준들을 가지고 비교를 진행합니다. 

  두 개의 임베딩 모델을 비교한 그래프는 다음과 같습니다.

3. RAGAS를 활용한 청킹 전략 비교

문서를 청킹하는 방안에는 여러가지가 있고, 상황에 따라 어떤 청킹 방안을 사용하는 것이 좋을지가 달라집니다. 문서를 청킹하는 방법은 RAG의 성능에 큰 영향을 미치는데, 청크의 크기에 따라, 청킹하는 내용이 문단 단위인지, 문장 단위인지에 따라, 청킹의 중복을 얼마나 허용할지에 따라 결과가 크게 달라질 수 있습니다. 

RAGAS를 활용해서 질문과 기대하는 답변 (ground truth)을 사용해 서로 다른 청킹 전략을 사용했을 경우 어떻게 결과가 달라지는지, 그 결과가 answer relevancy, context precision, context entity recall, answer correctness 라는 지표로 평가했을 때는 각 지표에 얼마나 충족하는지를 평가할 수 있습니다.

워크샵에서는 Hierarchical, Semantic, Fixed 세 가지 방법에 대한 지표를 비교해보았습니다. 

Hierarchical 청킹 방식은 문서를 계층적 구조로 나누는 방식으로 문서 > 섹션 > 문단 > 문장처럼 문서를 계층적으로 세분화합니다. 일반적으로 검색된 정보의 일관성이 높지만 계층 구조를 설계하기가 어렵고, 검색 범위가 넓어질 수 록 성능이 저하됩니다. Semantic 청킹은 의미적으로 연결된 내용을 기준으로 청킹을 하는 방식으로, 검색된 정보가 사용자의 쿼리와 관련이 높은 것을 가져와 정확도는 높을 수 있지만, 청크의 크기가 일정하지 않다는 단점이 있습니다. Fixed 청킹은 정해진 일정한 크기로 청킹하는 방식으로 검색 속도는 빠르지만, 정해진 크기로 청킹되어 문맥이 끊기거나 사라질 수 있다는 단점이 있습니다.

위의 표를 확인해보면 Hierarchical 청킹의 경우 컨텍스트 내의 엔터티를 정확히 찾아내는 능력 (context_entity_recall) 이 현저히 낮지만 그 외의 answer_relevancy(답변 관련성), Context_precision(문맥의 정밀도), answer_correctness(답변 정확성)은 다른 청킹 방식들보다는 조금씩 더 높다는 것을 알 수 있습니다.

4. RAGAS를 활용한 LLM 모델 비교

최종적으로 답변을 생성해내는 LLM 모델의 성능에 따라서도 결과 값이 크게 달라질 수 있습니다. RAGAS에서 질문과 함께 기대하는 답변 (ground truth)를 함께 제공하면 비교하려는 모델 별로 각각 faithfulness, answer relevancy, answer similarity, answer correctness 한 부분이 ground truth 답변과 비교했을 때 얼마나 충족하는지를 지표로 확인할 수 있습니다.

워크샵에서는 Claude 3 Haiku, Claude 3 Sonnet과 Titan Text Empress 세 개의 모델을 비교했고, 이를 비교한 그래프는 다음과 같습니다.

결론

이번 세션에서는 RAG를 사용하는 Gen AI 어플리케이션에서 발생할 수 있는 문제점과 그런 문제점을 해결하기 위한 방안, 고려해야할 사항들을 비교할 수 있는 방법에 대한 내용을 진행했습니다. 특히, RAG를 활용한 Gen AI 어플리케이션에서 발생할 수 있는 실패 요인과 문제점을 진단하고, 이를 해결하기 위해 RAGAS를 활용한 임베딩 모델, 청킹 전략, LLM 모델 비교 분석 방법을 공유했습니다.
세션을 진행하며 참여자들이 진행해봤던 다양한 프로젝트의 사례를 통해 업계에 따라 중요하게 보는 부분이 다르다는 것을 공유할 수 있는 시간이었습니다.
글 │메가존클라우드, AI & Data Analytics Center(ADC), Data Application Support Team, 엄유진 매니저
게시물 주소가 복사되었습니다.