평가 지표를 어떻게 선택해야하나를 기재한다.
DeepEval에서는 몇가지 표준 메트릭(평가지표, 평가기준) 을 제공하고 있다. 이름들이 조금 어렵긴 한데... 이름이 좋아보인다는 이유로 고르지 말고, 이 점수가 낮으면 어느 컴포넌트를 고쳐야할까? 로 접근해야한다.
대표적으로는 아래의 표와 같다.
| 평가 질문 | 후보 메트릭 | 주로 진단하는 대상 |
|---|---|---|
| 답변이 질문에 관련 있는가? | AnswerRelevancyMetric | generator/final answer |
| 답변의 주장이 검색 문서에 근거하는가? | FaithfulnessMetric | RAG generator |
| 검색 결과에 불필요한 내용이 많은가? | ContextualRelevancyMetric | retriever |
| 필요한 근거를 빠뜨렸는가? | ContextualRecallMetric | retriever |
| 중요한 근거가 위에 랭크되었는가? | ContextualPrecisionMetric | retriever/reranker |
| 정해진 도구를 올바르게 호출했는가? | ToolCorrectnessMetric | agent |
| 전체 과업을 달성했는가? | TaskCompletionMetric | traced agent |
| 제품 고유 기준을 만족하는가? | GEval | 요구사항에 따라 결정 |
| 출력이 JSON schema를 만족하는가? | JsonCorrectnessMetric 또는 결정적 검사 | structured output |
| 대화 전체가 목적을 달성했는가? | conversational metrics | multi-turn chatbot |
처음에는 전체 suite 중 5개 정도로 추려본다.
표준 메트릭으로 부족하면, GEval 과 같은 custom metric을 만들어볼 수 있다.
| 방식 | 적합한 기준 |
|---|---|
GEval | 정확성, 친절성, 유용성처럼 자연어로 설명 가능한 단일 품질 축 |
DAGMetric | 조건부 분기와 hard gate가 있는 rubric |
BaseMetric 직접 구현 | 완전한 코드 기반 점수 계산 |
ConversationalGEval | 대화 전체에 대한 제품 고유 기준 |
ConversationalDAGMetric | 대화 전체의 조건부 평가 |
특정 케이스마다, 이 케이스가 실패했을 때 발생할 위험을 리스트업해본다. 예를 들어
잘못된 환불 기간 때문에 사용자가 환불 기회를 놓친다.
필요한 정책 문서를 못 찾음
→ Retriever
문서는 찾았지만 90일이라고 답함
→ Generator grounding
올바른 답변이지만 신청 방법이 빠짐
→ 제품 고유 답변 구성
근거 누락
→ ContextualRecallMetric
근거와 모순
→ FaithfulnessMetric
신청 방법 누락
→ 환불 완전성 GEval
예를 들어 나의 경우에는 아래와 같이 생각해보았다.
그럼에도 불구하고, 평기지표들이 많다보니 선택하기가 어려울 수 있다. 이것을 달달 외운다고 해도 llm과 agent는 계속 발전하고 있다보니 그때그때 상황마다 또 안맞는 것들이 있을 수 있다.
그런 경우에는 deepEval에서 제공하는 스킬을 설치하고, llm에게 물어보자.
적절한 평가방법에 대해 알려줄 수 있을 것이다.
ref