[RAG] RAG 평가 및 개선

avatar
2025.01.17
·
6 min read

Ch2. LangSmith API를 활용한 프롬프트 최적화

01. LangChain Dataset Testing에 데이터셋 생성

  • 데이터셋을 구축하기 위해선 크게 3가지 과정에 대한 이해 필요

    1. Retrieval이 Question에 Relevant 한지 평가

    2. Answer이 Question에 Relevant 한지 평가

    3. Answer가 검색된 문서 안에서 답변하였는지 (할루시네이션)

  • Langsmith의 Dataset에 생성

  • 데이터셋 예제는 추가 가능

02. LLM-as-judge

  • LLM을 평가자로 두는 방법

  • input(질문), prediction(생성 답변), reference(정답 혹은 문맥)을 전달해줘야한다.

  • 평가가 빠르며 비용이 저렴

1. Question-Answer Evaluator

  • 가장 기본적이며 질문과 답변을 평가

  • ask_question이라는 함수를 만들어 input key에 해당하는 데이터를 evaluate에 넣어서 평가를 실행

  • 정답이 맞았는지 correct or incorrect로 평가

  • 함수를 생성해 LangSmith에 테스트 데이터셋 업로드 (랜덤 100개)

    • 100개 질문을 테스트하는데 약 10분 소요

    • 맞았는데 incorrect로 나온 문장들 제외하면 incorrect 3개 - 정확도 97%

2. Context-Answer Evaluator

  • 참조를 사용하도록 지시

  • context를 반환하는 함수를 별도로 정의해야한다.

  • 정답 답변에 관련있는 문서가 들어갔는지 correct or incorrect로 평가

03. Criteria Evaluator

  • 기준들을 정의해놓고 평가

04. Embedding Evaluator

  • 답변과 정답 답변 사이의 거리를 측정하는 평가자를 생성한다.

  • cosine 유사도는 할루시네이션 말고 답변 형태가 비슷한지를 더 고려한다.

  • 정답 형태가 비슷했으면 좋을 때 사용한다.

  • 양식에 맞춘 답변을 평가하고 싶을 때 사용한다.

05. Custom LLM-as-judge

  • 사용자 정의 Evaluator로 평가로 사용자가 점수를 정의할 수 있다.

06. 한글 형태소 분석기

  • 문장을 형태소 단위로 분리

  • 각 형태소의 품사 태깅

  • 형태소의 기본형 추출

07. 휴리스틱 평가

  1. Rouge

    자동 요약 및 기계 번역의 품질을 평가하는 데 사용되는 평가지표

    생성된 텍스트가 참조 텍스트의 중요 키워드를 얼마나 포함하는지 측정

    n-gram 중첩을 기반으로 계산한다.

    Rouge-1, Rouge-2, Rouge-L 등으로 계산한다.

  2. BLEU

    생성된 텍스트가 참조 텍스트와 얼마나 유사한지 측정

    1-gram부터 4-gram까지의 정밀도를 계산

    단어의 중요도를 구분하지 않고 문자열 일치만 확인하기에 한계가 있다.

  3. METEOR

    단어 매칭, 정밀도와 재현율 계산, F-mean 계산, 순서 패널티 계산

    동의어와 어간 변형을 인식해 더 유연한 평가가 가능

    Rouge와 달리 단어 순서를 명시적으로 고려

    계산이 더 복잡하고 시간이 오래걸릴 수 있다.

  4. SemScore

    의미적 텍스트 유사성 기반

    단순한 단어 매칭을 넘어 문장의 전반적인 의미를 고려한다.

    사전 훈련된 언어 모델을 사용해 문장 임베딩을 생성한다.

08. 실험별 비교 분석

  • LangSmith에서 제공하는 Compare 기능 활용

09. Summary Evaluators

  • 전체 수준의 점수를 사용자 재정의 가능

  • 리스트에 질문을 통째로 받는다.

  • retriever answer에 가중치를 더 줄 수 있다.

10. Groundedness Evaluator

  • 할루시네이션 평가하는 방식에 활용

11. 실험 비교 분석을 위한 Pairwise 평가

  • llm 2개 모델이 생성해낸 답변을 비교한다.

  • 끝낸 2개의 실험에 대해 생성

12. 반복 평가

  • 여러 번 평가를 내서 평균을 구한다.

  • num_repetition을 지정

13. 온라인 LLM 평가를 활용한 평가 자동화

  • LangSmith 자체적인 기능

  • Chain을 RunnableParallel로 묶고 context, answer, question key를 넣어줘야한다.

  • 태그를 통해 분류해서 평가 가능







- 컬렉션 아티클