너무 적게 쓰이는 가장 단순한 grader
LLM judge 부르기 전에 물어: '이걸 끝낼 string check 가 있나?' 대부분 팀이 exact-match 와 contains 를 자기 수준 아래라고 skip 해. 잘못 생각해. 이 grader 는 free, deterministic, 즉각, 그리고 사람들이 인정하는 것보다 훨씬 많은 실제 regression 잡아.
Exact-match 가 작동하는 곳
- Single-token 답 (yes/no, true/false, A/B/C/D classification).
- 고정 형식 numeric 답.
- 특정 함수명 요청한 prompt 의 code generation.
- JSON output 안 structured field.
왜 'contains' 가 workhorse
대부분 자연어 task 에서 exact match 는 너무 strict ("Paris" vs "Paris is the capital of France"). contains grader 는 reference 가 output 에 어디든 나타나는지 체크 — case-insensitive 옵션. 장황하거나 간결한 phrasing 받아주면서 잘못된 output 잡아.
원칙: LLM judge 비용 내기 전에 deterministic grader 다 소진해. 1000배 싸고 사람들이 인정하는 것보다 더 많은 regression 잡아.
Multi-reference contains
실제 질문은 자주 여러 acceptable phrasing 가져. '남수단 수도?' 는 "Juba", "Juba is the capital", "South Sudan's capital is Juba" 다 답 가능. acceptable reference list 저장하고 아무거나 match 시키면 grader 가 substance 에 strict 하면서 style 에 lenient 해.