Search

RAGAS 라이브러리를 활용한 Golden Dataset 생성

Number
5

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보다 커스텀 방식이 더 안정적일 수 있다.