Chatbot 답변 평가 적용
You’ll learn:
- LLM chatbot/conversation evaluation vs. regular LLM evaluation
- Different modes of LLM conversation evaluation
- Different types of LLM chatbot evaluation metrics
- How to implement LLM conversation in code using
DeepEval
TL;DR
- LLM chatbot evaluation는 사용자가 챗봇과 대화할 수 있고 과거 대화의 기억이 유지되는 멀티턴 LLM 앱과 관련이 있다.
- 멀티턴 시스템을 평가하려면 대화 내역 전체를 맥락에 맞게 다루거나, 슬라이딩 윈도우 기법을 통해 이전 맥락을 통합하면서 각 턴을 개별적으로 평가해야 한다.
- 챗봇을 위한 멀티턴 데이터 세트는 단일턴의 입력과 예상 출력이 아닌 대화의 시나리오와 예상 결과를 정의하는 것이 포함된다.
- LLM 챗봇 측정 항목에는 대화 관련성, 완전성, 역할 준수, 지식 보유 등이 기본으로 포함되며, 맞춤형 LLM 심사위원 측정 항목도 포함된다.
DeepEval을 사용하면 누구나 몇 줄의 간단한 코드로 대화형/멀티턴 지표를 구현할 수 있으며, 여기에는 사용자 정의 멀티턴 지표도 포함된다.
What is LLM Chatbot Evaluation and How is it Different From LLM Evaluation?
LLM 챗봇 평가는 대화에서 LLM이 만든 응답의 품질을 평가하여 LLM 대화형 에이전트의 성능을 평가하는 프로세스다. 일반적인 LLM system의 평가는 개별 입출력 상호작용에 대한 LLM 적용을 평가하는 반면, LLM 챗봇 평가는 이전 대화 기록을 추가 맥락으로 사용하여 LLM 입출력 상호작용을 평가한다는 점에서 차이가 있다.
즉, LLM 챗봇의 평가를 수행하는 데 사용하는 지표는 이전 대화 내용을 고려하기 위해 완전히 새로운 구현이 필요하다.
Different Modes of LLM Conversation Evaluation
LLM 대화 평가에는 두 가지 유형이 있다:
- Entire conversation evaluation: 대화 전체를 살펴보고 대화의 모든 흐름을 기준으로 평가
- Last best response evaluation: LLM 챗봇이 대화에서 생성하는 마지막 응답만 평가
개별턴을 평가하지 않는 이유는 종종 불필요한 잡담이 너무 많아 평가할 토큰이 낭비되기 때문이다. 원칙은 동일하며, 어떤 유형의 대화 평가를 선택하든 이전 턴의 맥락을 염두에 두고 수행해야 한다.
Entire Conversation Evaluation
왜 전체 대화를 평가해야 하는가?
LLM 챗봇은 대화 중간중간 사용자로부터 받은 정보를 기억하고 활용해야 한다. 하지만 현실에서는 다음과 같은 문제가 자주 발생함:
- 기억 누락: 이미 전달된 정보를 반복적으로 물음 (예: 이름, 주소, SSN 등)
- 맥락 손실: 대화 흐름을 이해하지 못하고, 단절된 답변을 생성
이 때문에 일부 평가지표는 단일 턴이 아닌 전체 대화의 흐름을 기준으로 평가되어야 함.
Knowledge Retention Metric
Def. 대화 중 사용자가 제공하는 정보를 LLM이 얼마나 잘 기억하고, 다시 활용하는지를 측정하는 지표.
- 사용자 정보가 처음 제공된 턴부터 이후 활용되는 방식까지 전체 맥락을 추적
- 용도 예시:
- LLM이 이름을 기억하고 계속 동일하게 사용하는지?
- 주소, 생년월일 등 개인 정보가 대화 흐름에 따라 유지되는지?
Conversation Relevancy Metric
Def. 각 응답이 맥락상 얼마나 관련이 있는지 측정하는 지표
주요 평가 방법:
- 전체 대화의 각 턴마다 평가 진행
- 슬라이딩 윈도우(sliding window) 를 사용하여 직전 N개의 턴을 문맥으로 사용
- 각 응답이 문맥에 적절한지 판단
- 총 관련 응답 수 / 전체 턴 수 = 최종 관련성 점수
슬라이딩 윈도우 접근 방식 예시:
- 100턴짜리 대화에서 50번째 응답을 평가할 때:
- 이전 2턴(48, 49) 만 보면 무관한 것처럼 보이지만
- 이전 10턴(39~49) 을 보면 중요한 맥락이 숨어 있을 수 있음
- 얼마나 많은 과거 턴을 볼지는 윈도우 크기(window size) 로 조정
LLM-as-a-Judge의 한계
“LLM이 LLM을 평가하는 방식”은 가능하지만 다음과 같은 문제가 있음:
- 대화가 길어질수록 LLM 평가자가 hallucination(환각)을 일으킬 가능성 증가
- 어떤 턴까지를 고려할 것인지 명확한 기준이 없으면 일관성 없는 평가 발생
- 평가 문맥이 제한적이면 오판단 유도
그래서 슬라이딩 윈도우 같은 구조화된 기준이 반드시 필요함
Last Best Response Evaluation
전체 대화를 평가하지 않고, 마지막 응답(Last Response) 하나만 대상으로 평가하는 방식이다. 물론 이전 턴이 맥락으로 사용되긴 하지만, 평가 대상은 오직 마지막 응답이다. 실전에서는 대화 도중 평가하지 않고, 마지막 응답을 나중에 생성 후 평가하는 경우가 많다.
왜 이 평가 방식이 필요한가?
- 빠르고 간단한 평가가 필요할 때
- 특정 질문에 대한 응답 품질만 평가하고 싶을 때
- 전체 흐름보다 개별 응답의 품질에 집중해야 할 때
이 방식은 특히 다음과 같은 상황에 유리함:
- FAQ 기반 챗봇 응답의 품질 평가
- 고객 응대 챗봇에서 “최종 안내 문구”의 품질 확인
- 전체 응답 흐름보다는 마지막 전환 성과에 집중하는 평가 시나리오
평가 방식
- 대화 히스토리(과거 턴들) 를 슬라이딩 윈도우 방식 등으로 일부 포함
- LLM으로 마지막 응답을 생성하거나, 수집된 응답을 가져옴
- 아래 기준으로 응답을 평가(평가 기준은 예시):
- 적절성 (relevance)
- 유용성 (helpfulness)
- 정답성 (correctness)
- 신뢰성 (faithfulness)
- 자연스러움 (fluency)
장점
| 항목 | 설명 |
|---|---|
| 단순성 | 전체 대화를 다루지 않기 때문에 구조가 간단 |
| 재사용성 | 기존 LLM 평가 메트릭(BLEU, ROUGE, GPTScore 등)을 재사용 가능 |
| 빠른 반복 실험 | 학습-평가 루프가 빠름 (fine-tune 전후 비교에 유용) |
| 최종 결과 강조 | “사용자 최종 경험”에 가까운 응답 평가 가능 |
고려할 점
- 과거 턴이 짧으면 맥락이 부족해져 평가가 왜곡될 수 있음
- 사용된 평가 지표가 대화형 시스템에 최적화되어 있는지 확인 필요
- 여러 대화 주제를 다룰 경우, 마지막 응답 하나만으로는 전체 품질을 대표하기 어려움