과제 소개
AutoRAG 라이브러리를 활용하여 업로드한 PDF 데이터에 대한 QA 데이터셋 생성 부터, RAG에서의 여러가지 방법론에 대한 실험 및 검증을 자동으로 진행, 성능 평가를 하고, 최적의 RAG 파이프라인으로 Streamlit을 빠르게 배포
목적
각 데이터에 최적인 RAG 파이프라인을 Metric을 통해 알아낸다.
QA 데이터 셋을 gpt-4o를 통해 빠르게 만든다.
YAML 파일만으로 python 코드 작성 없이 여러 RAG 모듈을 자동으로 테스트 한다.
자동으로 찾은 성능이 가장 최적화된 RAG 파이프라인을 api 서버와 streamlit 웹 서버로 사용 가능
방법론
본 과제는 https://github.com/Marker-Inc-Korea/AutoRAG 를 통해 구현함
결론
AutoRAG를 통해서 RAG의 성능을 최적화 하는 pipeline을 정량적인 metric 평가를 통해 도출해 낼 수 있다.
Advanced RAG에 수많은 방법론들이 존재한다.
각 문서에 맞는 각각의 RAG pipeline이 존재한다.
AutoRAG는 GPU 인프라가 갖춰진 LINUX 서버에서 돌리는것을 추천한다. (vllm 이 슈)
AutoRAG의 개념
RAG의 성능을 최적화 하기 위해서는 수많은 실험을 진행해야 하는데, 이 실험들을 효율적이고 편하게 할 수 있도록 자동화한 툴이 AutoRAG
YAML 파일만으로 python 코드 작성 없이 여러 RAG 모듈을 자동으로 테스트한다.
Pdf, raw 문서에서 평가용 데이터를 자동 생성 가능
자동으로 찾은 성능이 가장 최적화된 RAG 파이프라인을 api 서버와 streamlit 웹 서버로 사용 가능
각 데이터에 최적인 RAG 파이프라인을 자동으로 찾는 것이 핵심!
AutoRAG 깃헙 주소
https://github.com/Marker-Inc-Korea/Auto
RAG 평가 방법
크게 2가지 인데, 검색기 평가와 LLM 생성 답변 평가로 나눠진다.
원하는 단락을 잘 가져왔는지
생성한 답변 A가 원하는 답변과 얼마나 일치하게 나오는지
데이터셋을 얼만큼 만들어야 할까요?
→ 제대로 된 데이터 100개 정도면 충분합니다.
→ 무조건 데이터가 많다고 좋은게 아니라, 인간이 관여한 퀄리티가 높은 데이터 셋이 필요합니다.
AutoRAG로 최적의 파이프라인 해를 구하는 방법
저희가 실습해던 RAG는 가장 기본적인 RAG였고,
Advanced RAG에서는 다음과 같이 많은 과정이 추가가 됩니다.
추가된 과정에서 최적의 해를 구하는 방법으로 AutoRAG를 쓸 수 있습니다.
각 단계를 하나씩 파워포인트 템플릿으로 최적화
RAG Retriver 평가지표에서는 Recall이 중요하다..!
정답 단락을 무조건 하 나는 가져와야 한다(대부분의 RAG에서 유용) → Recall
환각을 줄이고 싶다(모르는것은 제발 모른다고 해달라) → precision
Recall과 Precision의 조화평균 → F1
Precision과 Recall만으로는 성능을 측정하기 어려우니, 다른 3개의 지표를 활용
NDCG (Normalized Discounted Cumulative Gain)
NDCG는 검색 결과의 순서가 중요할 때 사용되는 지표로, 검색 결과의 관련성에 따라 점수를 매기고, 이를 이상적인 순서와 비교하여 정규화합니다.
높은 NDCG 값은 사용자가 더 관련성 높은 결과를 상위에 볼 확률이 높음을 의미합니다.
MAP (Mean Average Precision)
MAP는 여러 쿼리에 대해 평균적인 정밀도를 계산한 지표로, 각 쿼리에서의 평균 정밀도를 다시 평균하여 구합니다.
이는 전체 쿼리 집합에 대한 검색 시스템의 전반적인 성능을 평가하는 데 유용합니다.
MRR (Mean Reciprocal Rank)
MRR은 첫 번째 관련 문서가 검색 결과 리스트에서 얼마나 빨리 나타나는지를 평가하는 지표로, 각 쿼리의 첫 번째 관련 문서의 역순위를 평균하여 계산합니다.
높은 MRR 값은 관련 문서를 상위에 배치하는 검색 시스템의 능력을 의미합니다.
LLM의 답변을 평가할수 있는 방법
N-gram based metrics
N-gram 기반 지표는 모델의 출력과 정답 간의 N-gram 일치도를 측정하여 텍스트 생성의 정확도를 평가합니다.
대표적인 지표로 BLEU, ROUGE 등이 있으며, 주로 번역 및 요약 작업에 사용됩니다.
LM-based metrics
언어 모델 기반 지표는 생성된 텍스트의 유창성과 일관성을 평가하기 위해 사전 학습된 언어 모델을 사용합니다.
예를 들어, Perplexity는 모델이 텍스트를 얼마나 잘 예측하는지를 나타내는 지표입니다.
Sem Score
Sem Score는 생성된 텍스트와 참조 텍스트 간의 의미적 유사성을 평가하는 지표입니다.
이는 주로 임베딩 벡터 간의 코사인 유사도를 사용하여 계산됩니다.
LLM-based metrics
대규모 언어 모델 기반 지표는 LLM을 활용하여 생성된 텍스트의 품질을 평가하며, 휴리스틱 평가나 인간 평가를 모델이 모방합니다.
이는 특히 문맥적 일관성, 창의성, 논리적 연결성을 평가하는 데 유용합니다.
실습
< 이 글은 노션에서 먼저 작성됐습니다. 노션에서 보시길 추천드립니다! >
노션 링크 : https://www.notion.so/AutoRAG-f42add7e424243998d71cf67718d93fb
AutoRAG 다운로드 받기
먼저 git clone을 해줍니다.
git clone https://github.com/Marker-Inc-Korea/AutoRAG.git
git clone 또는 Download zip 을 해줍니다.
https://github.com/Marker-Inc-Korea/AutoRAG?tab=readme-ov-file