Skip to content

평가

LLM 스튜디오를 통해 RAG(Retrieval-Augmented Generation) 시스템의 답변 품질을 평가하고, 평가에 필요한 데이터셋을 자동으로 처리해줍니다.

시작하기

평가 작업을 위한 데이터 파일 준비

평가 작업을 위한 데이터 파일을 준비합니다. 데이터 파일은 JSONL 파일 형식을 지원합니다.

{"user_input": "지방은행과 시중은행의 차이를 설명해주세요.", "reference": "지방은행은 시중은행 대비 규모가 작고 영업 범위가 한정되어 있습니다.", "metadata": {"filename": "bank_report.pdf"}}
{"user_input": "2024년에 2020년 대비 한국의 무역수지가 어떻게 변화했나요?", "reference": "2024년에는 2020년 대비 무역수지가 개선되었습니다."}

입력 필드

필드 타입 필수 여부 설명
user_input string 필수 사용자 질문
reference string 필수 기대하는 정답 또는 기준 답변
reference_contexts list[string] 선택 정답 판단에 필요한 골드 컨텍스트
metadata dict 선택 파일명, 문서 ID, 고객사 정보 등 부가 정보
필드별 설명

user_input 평가할 질문입니다.

예시:

"user_input": "지방은행과 시중은행의 차이를 설명해주세요."

reference 기대하는 정답입니다.

평가 모델은 RAG 시스템이 생성한 답변이 이 기준 답변과 얼마나 잘 맞는지 참고합니다.

예시:

"reference": "지방은행은 특정 지역을 중심으로 영업하며, 시중은행은 전국 단위로 영업합니다."

reference_contexts QA가 어떤 문서 내용에서 파생되었는지를 보여주는 참고용 정보입니다.

테스트셋 생성 시 include_reference_contexts 옵션으로 포함 여부를 선택할 수 있으며, 결과 파일을 사람이 검수할 때 "이 답변이 어느 컨텍스트에서 만들어졌는지" 확인하는 용도로 사용됩니다.

예시:

"reference_contexts": [
  "지방은행은 특정 지역 내 금융 서비스를 중심으로 운영된다.",
  "시중은행은 전국 단위 영업망을 기반으로 한다."
]

metadata 평가 결과를 나중에 분석하기 위한 부가 정보입니다.

예시:

"metadata": {
  "filename": "bank_policy.pdf",
  "category": "finance",
  "volume": "customer-a"
}

평가 작업 제출

1) LLM 스튜디오

평가 메뉴를 클릭합니다.

평가 실행 버튼을 클릭합니다.

이름을 입력하고 준비한 데이터 파일을 첨부합니다.

다음을 클릭합니다.

평가 작업을 위한 옵션을 설정합니다.

  • 평가 작업 정보 설정

✔ 평가 대상 : Modular RAG 또는 Agentic RAG를 선택합니다.

✔ 생성 모델 : 실제 RAG 시스템이 답변을 생성할 때 사용하는 모델입니다.

✔ 평가 모델 : 생성된 답변을 평가하는 모델입니다.


⚠ 왜 두 모델을 분리하나요?

답변을 만드는 모델과 답변을 평가하는 모델은 역할이 다릅니다.
- 생성 모델은 답변을 만듭니다.
- 평가 모델은 답변이 적절한지 검토합니다.

평가 모델이 너무 약하면 다음 문제가 생길 수 있습니다.
- 맞는 답변을 틀렸다고 평가함
- 틀린 답변을 맞다고 평가함
- 문서 근거 여부를 제대로 판단하지 못함
- 질문 의도와 답변의 관계를 잘못 해석함

따라서 평가 모델은 가능하면 생성 모델과 같거나 더 성능이 좋은 모델을 사용하는 것이 좋습니다.

✔ 볼륨 : 검색할 대상의 볼륨입니다.

시작을 클릭합니다. 제출된 평가 작업은 평가 페이지에서 확인할 수 있습니다.

평가 작업 상태 확인

평가 페이지에서 제출된 평가 작업들의 이름을 선택 시, 실행 결과의 상태 값에서 확인 할 수 있습니다.

평가 결과 파일 열람

평가 페이지에서 제출된 평가 작업들의 이름을 선택 시, 출력 파일 선택하면 평가 결과 파일을 열람할 수 있습니다.

필터

필터를 통해 데이터 중 원하는 데이터만 표시하고 나머지 데이터는 숨길 수 있습니다.

필터 추가 버튼을 클릭합니다.
필터 이름표현식을 입력 후 확인 버튼을 클릭합니다.

평가 결과 파일 다운로드

평가 파일 열람 상단에 액션 [⁝] 버튼을 클릭하고 내려받기 메뉴를 선택합니다. CSV 혹은 JSONL 파일 포맷으로 결과 파일을 다운로드 받을 수 있습니다.

평가 결과 필드

필드 설명
user_input 평가한 질문
response RAG 시스템이 실제 생성한 답변
reference 기대 답변
faithfulness 답변이 검색 컨텍스트에 근거했는지
answer_relevancy 답변이 질문에 적절한지
context_precision 검색 결과가 얼마나 정밀한지
context_recall 필요한 근거를 얼마나 잘 검색했는지

오류 파일

평가 또는 테스트셋 생성 중 일부 항목이 실패할 수 있습니다.

이 경우 실패한 항목은 error.jsonl에 기록됩니다.

예시:

{"stage": "generating", "user_input": "질문 내용", "error": "ReadTimeout: request timed out"}
{"stage": "evaluating", "user_input": "질문 내용", "errors": {"faithfulness": "APIConnectionError: connection failed"}}

에러 파일을 확인해야 하는 경우

다음 상황에서는 error.jsonl을 확인하는 것이 좋습니다.

  • 전체 작업은 완료됐지만 일부 질문의 점수가 비어 있음

  • 특정 메트릭만 계산되지 않음

  • 평가 시간이 지나치게 오래 걸릴 때

  • 외부 LLM 서버 연결이 불안정함

  • 검색 서비스 또는 Agent Server 호출 실패가 의심 될때

평가 메트릭 상세 설명

✔ Faithfulness

Faithfulness는 답변이 검색된 컨텍스트에 근거하고 있는지를 평가합니다.

쉽게 말하면 다음 질문에 답하는 점수입니다.

“이 답변은 실제로 검색된 문서에 있는 내용을 바탕으로 작성되었는가?”

높은 점수가 나오는 경우

질문:

지방은행과 시중은행의 차이를 설명해주세요.

검색된 컨텍스트:

지방은행은 특정 지역을 중심으로 영업하며, 시중은행은 전국 단위 영업망을 기반으로 한다.

답변:

지방은행은 특정 지역을 중심으로 영업하고, 시중은행은 전국 단위로 영업한다는 차이가 있습니다.

이 경우 답변의 내용이 컨텍스트에 근거하고 있으므로 Faithfulness 점수가 높게 나옵니다.

낮은 점수가 나오는 경우

검색된 컨텍스트:

지방은행은 특정 지역을 중심으로 영업한다.

답변:

지방은행은 해외 지점을 중심으로 운영되며, 시중은행보다 글로벌 사업 비중이 높습니다.

이 답변은 컨텍스트에 없는 내용을 말하고 있습니다.

이런 경우 Faithfulness 점수가 낮게 나옵니다.

Faithfulness가 낮을 때 의심할 수 있는 문제

  • LLM이 문서에 없는 내용을 지어냄

  • 검색된 컨텍스트가 부족함

  • 답변 생성 프롬프트가 근거 기반 답변을 강하게 요구하지 않음

  • 검색 결과와 질문이 잘 맞지 않음

  • 답변이 너무 일반론적으로 생성됨

✔ Answer Relevancy

Answer Relevancy는 답변이 질문 의도에 얼마나 잘 맞는지를 평가합니다.

쉽게 말하면 다음 질문에 답하는 점수입니다.

“사용자가 물어본 것에 제대로 답했는가?”

높은 점수가 나오는 경우

질문:

2024년 한국의 무역수지는 2020년 대비 어떻게 변했나요?

답변:

2024년 한국의 무역수지는 2020년 대비 개선되었습니다. 특히 2023년 적자 이후 수출 회복으로 흑자 흐름이 나타났습니다.

질문은 “2020년 대비 2024년에 어떻게 변했는가”를 묻고 있습니다.

답변이 비교와 변화 방향을 직접 설명하므로 점수가 높게 나옵니다.

낮은 점수가 나오는 경우

질문:

2024년 한국의 무역수지는 2020년 대비 어떻게 변했나요?

답변:

무역수지는 국가 경제에서 중요한 지표이며, 수출과 수입의 차이를 의미합니다.

이 답변은 무역수지의 일반적인 정의만 설명하고 있습니다.

질문에서 요구한 “2020년 대비 2024년 변화”에는 답하지 않았습니다.

이런 경우 Answer Relevancy 점수가 낮게 나옵니다.

Answer Relevancy가 낮을 때 의심할 수 있는 문제

  • 답변이 질문의 핵심 조건을 놓침

  • 답변이 너무 일반적임

  • 질문은 비교를 요구했지만 답변은 정의만 제공함

  • 질문은 수치를 요구했지만 답변에 수치가 없음

  • 모델이 모호하거나 회피적으로 답변함

✔ Context Precision

Context Precision은 검색된 컨텍스트 중에서 실제로 답변에 도움이 되는 컨텍스트가 얼마나 정밀하게 포함되어 있는지를 평가합니다.

쉽게 말하면 다음 질문에 답하는 점수입니다.

“검색 결과 상위에 쓸모 있는 문서가 잘 나왔는가?”

높은 점수가 나오는 경우

질문:

지방은행과 시중은행의 차이를 설명해주세요.

검색 결과:

1위: 지방은행과 시중은행의 영업 범위 차이
2위: 지방은행의 지역 기반 운영 방식
3위: 시중은행의 전국 영업망 설명

상위 검색 결과가 모두 질문과 관련이 높습니다.

이 경우 Context Precision 점수가 높게 나옵니다.

낮은 점수가 나오는 경우

질문:

지방은행과 시중은행의 차이를 설명해주세요.

검색 결과:

1위: 은행 광고 캠페인 소개
2위: 금융권 채용 공고
3위: 지방은행과 시중은행의 영업 범위 차이

정답에 필요한 문서가 있기는 하지만, 관련 없는 문서가 상위에 많이 있습니다.

이 경우 Context Precision 점수가 낮아질 수 있습니다.

Context Precision이 낮을 때 의심할 수 있는 문제

  • 검색 키워드 또는 임베딩 검색 품질이 낮음

  • Chunk 크기나 분할 방식이 적절하지 않음

  • 유사하지만 다른 문서가 많이 검색됨

  • 검색 결과 재정렬 reranking이 필요함

  • 상위 검색 개수 top-k 설정이 과도함

  • 문서 메타데이터 필터링이 부족함

✔ Context Recall

Context Recall은 정답을 만들기 위해 필요한 근거가 검색 결과에 충분히 포함되었는지를 평가합니다.

쉽게 말하면 다음 질문에 답하는 점수입니다.

“정답을 만들기 위해 필요한 자료를 빠뜨리지 않고 찾았는가?”

높은 점수가 나오는 경우

질문:

2024년 한국의 무역수지는 2020년 대비 어떻게 변했나요?

정답에 필요한 근거:

- 2020년 무역수지 정보
- 2024년 무역수지 정보
- 두 시점의 비교 설명

검색 결과에 위 정보가 모두 포함되어 있다면 Context Recall 점수가 높게 나옵니다.

낮은 점수가 나오는 경우

검색 결과에 2024년 정보만 있고 2020년 정보가 없는 경우:

검색 결과:
- 2024년 무역수지 개선 관련 문서

이 경우 비교에 필요한 2020년 근거가 빠져 있습니다.

따라서 Context Recall 점수가 낮아질 수 있습니다.

Context Recall이 낮을 때 의심할 수 있는 문제

  • 필요한 문서가 색인되어 있지 않음

  • 문서 Chunk 분할이 잘못되어 핵심 정보가 분리됨

  • 검색 쿼리 변환이 부정확함

  • top-k가 너무 작음

  • 검색 대상 volume이 잘못됨

  • 정답(reference)이 실제 검색 컨텍스트와 표현 차이가 큼

점수 조합으로 문제 원인 해석하기

각 메트릭은 단독으로 보는 것보다 함께 보는 것이 중요합니다.

Case 1. 검색 점수는 높은데 답변 점수가 낮은 경우

메트릭 점수
Faithfulness 낮음
Answer Relevancy 낮음
Context Precision 높음
Context Recall 높음

해석

검색은 잘했지만, LLM이 답변을 잘못 만들었을 가능성이 큽니다.

개선 방향

  • 답변 생성 프롬프트 개선

  • “검색된 문서에 근거해서만 답변하라”는 지시 강화

  • 답변 형식 가이드 추가

  • 생성 모델 성능 개선

  • temperature 낮추기

Case 2. Answer Relevancy은 높은데 Faithfulness가 낮은 경우

메트릭 점수
Faithfulness 낮음
Answer Relevancy 높음
Context Precision 보통
Context Recall 보통

해석

답변은 질문에 잘 맞지만, 문서에 없는 내용을 섞었을 수 있습니다.

즉, 그럴듯한 답변이지만 근거 신뢰성이 낮을 수 있습니다.

개선 방향

  • 답변에 출처 기반 제약 추가

  • 근거 없는 추론 금지

  • 검색 컨텍스트 외 지식 사용 제한

  • 답변 후 근거 문장 매칭 로직 추가

Case 3. Faithfulness는 높은데 Answer Relevancy가 낮은 경우

메트릭 점수
Faithfulness 높음
Answer Relevancy 낮음
Context Precision 높음
Context Recall 높음

해석

답변이 문서에 근거하긴 했지만, 질문에 직접적으로 답하지 않았을 수 있습니다.

예를 들어 질문은 “차이점”을 물었는데 답변은 각각의 정의만 설명하는 경우입니다.

개선 방향

  • 질문 의도 분석 강화

  • 비교, 요약, 원인, 절차 등 질문 유형별 답변 템플릿 적용

  • 답변 생성 프롬프트에서 “질문에 직접 답변” 요구

  • 불필요한 배경 설명 축소

Case 4. Context Precision은 낮고 Context Recall은 높은 경우

메트릭 점수
Context Precision 낮음
Context Recall 높음

해석

필요한 문서를 찾기는 했지만, 불필요한 문서도 많이 함께 검색된 상태입니다.

즉, 검색 범위는 넓지만 정밀도가 낮습니다.

개선 방향

  • top-k 축소

  • reranker 적용

  • 메타데이터 필터 추가

  • 검색 쿼리 개선

  • Chunk 품질 개선

Case 5. Context Precision은 높고 Context Recall은 낮은 경우

메트릭 점수
Context Precision 높음
Context Recall 낮음

해석 검색된 문서들은 관련성이 높지만, 정답에 필요한 모든 정보를 가져오지는 못한 상태입니다. 즉, 검색은 정확하지만 범위가 좁을 수 있습니다.

개선 방향

  • top-k 확대

  • query expansion 적용

  • multi-query retrieval 적용

  • 관련 문서 간 연결 검색 강화

  • Chunk overlap 조정

Case 6. 모든 점수가 낮은 경우

메트릭 점수
Faithfulness 낮음
Answer Relevancy 낮음
Context Precision 낮음
Context Recall 낮음

해석

RAG 파이프라인 전반에 문제가 있을 가능성이 높습니다.

검색도 잘 안 되고, 답변도 적절하지 않은 상태입니다.

개선 방향

  • 색인 데이터 확인

  • 검색 API 연결 확인

  • volume 설정 확인

  • embedding 모델 확인

  • LLM 호출 설정 확인

  • QA 데이터 품질 확인

  • 프롬프트 및 컨텍스트 전달 방식 확인