@ 앞서 RAG 학습용 데이터로 파인튜닝한 모델에 대해 평가를 하고자 한다.

 

@ vllm을 활용하여 모델을 서빙 및 추론하면서 평가를 진행할 예정이다.

# vLLM의 역할 = “파인튜닝 ‘이후’ 서빙/추론 엔진입니다.
# SLM(Small Language Model)을 LoRA/QLoRA 등으로 파인튜닝하는 도구가 아니라, 
# 완성된(혹은 어댑터가 붙은) 모델을 빠르고 싸게 돌려주는 서버예요.

# 왜 vLLM을 쓰나
# PagedAttention/KV 캐시 페이징으로 GPU 메모리 효율↑, 긴 컨텍스트도 안정적으로 처리
# Continuous batching으로 동시 요청 처리량(throughput)↑
# 멀티-GPU 분산(tensor parallel) & 스트리밍 토큰 지원
# OpenAI 호환 API 제공 → 기존 클라이언트 교체가 쉬움
# LoRA 어댑터 온더플라이 로딩/스위칭(여러 파인튜닝 버전을 한 서버에서)
# (옵션) 양자화/저정밀 추론과의 연계로 비용 절감

 

@ 저장해둔 rag 성능 향상을 위한 파인튜닝 모델을 불러온다.

 

@ 질문-정답 예시

 

@ 테스트 데이터에 대한 예측 생성

 

@ 평가 프롬프트

prompt_template = """
당신은 RAG(Retrieval-Augmented Generation) 시스템 평가 전문가입니다. 아래 정보를 바탕으로 생성된 답변의 품질을 철저히 평가해주세요.

질문: {question}

검색된 컨텍스트:
{context}

생성된 답변:
{prediction}

참조 답변(정답):
{label}

다음 4가지 평가 기준으로 1-5점 척도로 점수를 매겨주세요:

1. 응답 정확성 (Answer Correctness) [1-5]:
   * 생성된 답변이 참조 답변과 비교하여 정확하고 완전한 정보를 제공하는지 평가
   * 1점: 완전히 잘못된 정보
   * 2점: 부분적으로 관련된 정보를 담고 있으나 대부분 부정확함
   * 3점: 정확한 정보와 부정확한 정보가 혼재되어 있음
   * 4점: 대부분 정확하지만 일부 정보가 누락되거나 미미한 오류가 있음
   * 5점: 참조 답변과 비교했을 때 완전히 정확하고 포괄적인 정보를 제공함

2. 컨텍스트 관련성 (Context Relevance) [1-5]:
   * 검색된 컨텍스트가 질문에 대답하기 위해 관련성이 높은지 평가
   * 1점: 컨텍스트가 질문과 전혀 관련이 없음
   * 2점: 컨텍스트가 질문과 간접적으로만 관련됨
   * 3점: 컨텍스트 중 일부만 질문과 직접적으로 관련됨
   * 4점: 대부분의 컨텍스트가 질문과 직접적으로 관련됨
   * 5점: 모든 컨텍스트가 질문에 완벽하게 관련되어 있고 불필요한 정보가 없음

3. 컨텍스트 충실성 (Context Faithfulness) [1-5]:
   * 생성된 답변이 주어진 컨텍스트에만 기반하는지, 아니면 없는 정보를 추가했는지 평가
   * 1점: 답변이 컨텍스트에 없는 정보로만 구성됨 (심각한 환각)
   * 2점: 답변이 주로 컨텍스트에 없는 정보로 구성됨
   * 3점: 답변이 컨텍스트 정보와 없는 정보가 혼합되어 있음
   * 4점: 답변이 주로 컨텍스트에 기반하지만 약간의 추가 정보가 있음
   * 5점: 답변이 전적으로 컨텍스트에 있는 정보만을 사용함

4. 컨텍스트 충분성 (Context Recall) [1-5]:
   * 검색된 컨텍스트가 질문에 완전히 답변하기에 충분한 정보를 포함하는지 평가
   * 1점: 컨텍스트가 답변에 필요한 정보를 전혀 포함하지 않음
   * 2점: 컨텍스트가 필요한 정보의 일부만 포함함
   * 3점: 컨텍스트가 필요한 정보의 약 절반을 포함함
   * 4점: 컨텍스트가 필요한 정보의 대부분을 포함하지만 일부 누락됨
   * 5점: 컨텍스트가 질문에 완전히 답변하기 위한 모든 필요한 정보를 포함함

반드시 다음 JSON 형식으로만 응답하세요. 마크다운은 사용하지 않습니다.:
{
  "answer_correctness": 정수로 된 점수(1-5),
  "context_relevance": 정수로 된 점수(1-5),
  "context_faithfulness": 정수로 된 점수(1-5),
  "context_recall": 점수(1-5),
  "analysis": "종합적인 분석 의견"
}

다른 형식의 응답은 하지 마세요. 오직 마크다운이 아닌 JSON만 반환하세요.
"""

 

@ gpt4o에게 평가 수행하게 하기

 

@ 평가 요약 통계

 

@ 평가 예시 점수

 

-> gpt4o가 총점 20점 만점에 4가지 항목(각각 5점 만점)으로 질문세트를 평가한 것을 볼 수 있다.

 

+ Recent posts