RAGAS 라이브러리를 활용한 Golden Dataset 생성
개요
•
이 강의는 RAGAS 라이브러리를 활용해 Golden Dataset(골든 데이터셋) 을 생성하는 방법을 다룹니다.
•
핵심 목표는 문서 기반으로 Question-Answer Pair(QA Pair) 를 만들어, 이후 에이전트 평가(Evaluation) 에 사용할 수 있는 테스트 데이터를 준비하는 것입니다.
•
특히, 실제 문서(PDF)를 바탕으로 데이터셋을 만드는 흐름과 함께, 도구 사용 시 발생하는 한계와 주의점도 설명합니다.
환경 설정: UV 사용 권장
UV 패키지 매니저의 장점
•
강의에서는 가상 환경을 설정할 때 UV를 사용합니다.
•
UV는 pip보다 매우 빠르며, Poetry보다도 빠른 편이라 최근 많이 사용됩니다.
•
레포지토리를 클론한 뒤 uv sync를 사용하면:
◦
파이썬 버전
◦
패키지 설치
◦
가상환경 생성
을 한 번에 처리할 수 있습니다.
왜 UV를 추천하는가?
•
기존 방식(PIP + virtualenv/conda)에서는 파이썬 버전 불일치로 에러가 종종 발생합니다.
•
UV는 이런 문제를 줄여주어 수강생과 강의자 환경 차이를 완화합니다.
•
PIP 사용자를 위해 requirements.txt 도 함께 제공한다고 설명합니다.
Golden Dataset이란?
정의
•
Golden Dataset은 평가 기준이 되는 정답 데이터셋(Ground Truth) 입니다.
•
에이전트나 RAG 시스템의 성능을 측정할 때 기준점으로 사용됩니다.
생성 방식
•
RAGAS는 문서 기반의 synthetic data generation을 지원합니다.
•
단순 랜덤 생성이 아니라, 문서 내용을 바탕으로 질문-답변 쌍을 만들어냅니다.
•
즉, 사용자가 문서를 제공하면 RAGAS가 이를 기반으로 QA Pair를 생성합니다.
입력 문서 준비: PDF → Markdown → Text
왜 이런 변환이 필요한가?
•
강의에서는 사내 QnA 봇용 PDF 문서를 활용합니다.
•
PDF를 바로 쓰기보다 먼저 Markdown으로 변환한 뒤, 다시 Text(.txt) 로 바꿉니다.
변환 이유
•
PDF 구조를 잘 파싱하기 위해 PyXerox 패키지를 사용합니다.
•
PyXerox는 PDF를 이미지로 변환한 뒤, Vision 가능한 LLM을 사용해 Markdown으로 변환합니다.
•
그런데 Markdown을 LangChain loader로 읽을 때 unstructured가 기본 사용되며,
◦
테이블 구조가 깨지는 문제
◦
문맥 손실 문제
가 발생할 수 있습니다.
•
따라서 최종적으로는 Text로 변환해서 txt loader를 사용하는 방식을 택합니다.
PyXerox 사용: PDF를 Markdown으로 변환
준비 사항
•
환경 변수 로드
•
asyncio 설정 필요
asyncio 설정 이유
•
PyXerox는 비동기(async) 기반입니다.
•
Jupyter Notebook에서 비동기를 실행하려면 이벤트 루프 중첩 문제를 해결해야 하므로 asyncio 설정이 필요합니다.
사용할 모델
•
GPT-4.1을 사용합니다.
•
이유:
◦
Vision 모델이면 충분함
◦
GPT-5 계열보다 비용이 저렴
◦
이미지 인식 작업 정도에는 굳이 고가 모델이 필요하지 않음
OpenAI API 키 설정
•
.env 파일에 API 키를 저장하여 사용합니다.
openai_api_key=YOUR_API_KEY
Plain Text
복사
실행 흐름
1.
PDF 파일 경로를 지정
2.
출력 디렉토리 지정
3.
PyXerox로 PDF를 Markdown으로 변환
4.
생성된 Markdown 파일 확인
5.
Markdown을 Text로 변환
Markdown → Text 변환 후 로딩
변환 목적
•
Markdown을 바로 읽으면 테이블이 깨질 수 있으므로, Text 파일로 변환합니다.
•
이후 LangChain의 Directory Loader를 사용해 폴더 내 .txt 파일을 전부 불러옵니다.
확인 결과
•
변환 후에도 표(table)가 비교적 잘 보존되는 것을 확인합니다.
•
이 텍스트 문서들이 이후 RAGAS 데이터 생성의 기반이 됩니다.
RAGAS로 Golden Dataset 생성 시도
기대 역할
•
RAGAS는 문서를 기반으로 질문-답변 쌍을 생성하여 Golden Dataset을 만듭니다.
사용 시도 시 문제점
강의에서는 RAGAS 사용에 대해 다음과 같은 문제를 지적합니다.
1. OpenAI 모델에서 에러 발생
•
RAGAS 내부에서 에이전트를 구성하고, 응답을 JSON 포맷으로 후처리하는 과정에서 에러가 발생합니다.
•
그래서 강의에서는 Anthropic 모델로 대체해 실행합니다.
2. Gemini는 Rate Limit 문제
•
Gemini를 사용하면 rate limit 문제가 발생할 수 있어 제외합니다.
3. 영어 전용 성향
•
생성된 QA Pair에 영어가 앞뒤로 섞이는 현상이 있습니다.
•
원문이 한국어 문서인데도 영어 문장이 들어가 신뢰도가 떨어집니다.
•
즉, 한국어 문서에 대한 품질이 좋지 않음을 지적합니다.
4. 비용과 시간 문제
•
11개 데이터 생성에 약 35분
•
비용은 약 10달러
•
개당 약 1달러 수준이라 비용 효율이 매우 떨어짐
결론
•
현재 시점에서는 RAGAS를 실무적으로 바로 쓰기 어렵다고 평가합니다.
•
다만, 패키지가 개선될 가능성이 있으므로, 나중에 업데이트되면 다시 활용할 수 있습니다.
RAGAS 내부 동작 설명
LLM Factory와 LiteLLM
•
RAGAS는 내부적으로 LLM Factory를 사용해 모델을 불러옵니다.
•
이 과정에서 LiteLLM이 동작합니다.
LiteLLM이란?
•
다양한 LLM API를 통합적으로 다룰 수 있게 해주는 라우팅/연동용 라이브러리입니다.
•
지원 예시:
◦
OpenAI
◦
Anthropic
◦
AWS Bedrock
◦
Google Vertex AI
•
프로덕션 환경에서:
◦
fallback
◦
routing
같은 기능을 구현할 때 유용합니다.
임베딩 모델
•
임베딩은 OpenAI Embedding을 사용합니다.
•
이유: Anthropic은 임베딩을 제공하지 않기 때문입니다.
생성 결과의 품질 문제
문제 예시
•
생성된 질문에 문서에 없는 영어 표현이 섞입니다.
•
답변 또는 컨텍스트에 불필요한 번역 텍스트가 들어갑니다.
•
문서에 없는 이름이나 표현이 끼어드는 등 정확성 저하가 있습니다.
해석
•
이런 결과는 Golden Dataset으로 쓰기엔 부적합합니다.
•
사내 문서 기반 평가 데이터는 정확성, 일관성, 문맥 보존이 중요하므로 품질 문제가 치명적입니다.
실무적 결론
RAGAS 사용에 대한 평가
•
강의자는 RAGAS를 현재는 추천하지 않는다고 명확히 말합니다.
•
이유:
◦
에러가 많음
◦
한국어 문서에서 품질이 낮음
◦
시간과 비용이 과도함
하지만 학습 포인트
•
강의 목적상, 이런 도구가 어떤 식으로 동작하는지와 왜 문제가 생기는지를 이해하는 것이 중요합니다.
•
이후 업데이트로 개선될 수 있으므로, 개념과 사용 흐름을 익혀두는 것이 유익합니다.
다음 단계 예고
•
강의 마지막에서는 동작이 불안정한 RAGAS 대신커스텀 프롬프트를 활용한 Golden Dataset 생성 방식으로 넘어가겠다고 예고합니다.
핵심 정리
•
Golden Dataset은 에이전트 평가의 기준이 되는 정답 데이터셋이다.
•
RAGAS는 문서 기반으로 QA Pair 생성을 지원하지만, 현재 강의 시점에서는:
◦
한국어 문서 품질 문제
◦
에러
◦
비용/시간 문제
가 크다.
•
문서 변환은 PDF → Markdown → Text 순으로 처리하며, 테이블 보존을 위해 Text loader를 사용한다.
•
UV는 빠르고 편리한 환경 설정 도구로 추천된다.
•
실무적으로는 RAGAS보다 커스텀 방식이 더 안정적일 수 있다.