_rank_eval APIregression) 검증POST /my-index-000001/_rank_eval
{
"requests": [
{
"id": "JFK query",
"request": { "query": { "match_all": {} } },
"ratings": []
} ],
"metric": {
"precision": {
"k": 20,
"relevant_rating_threshold": 1,
"ignore_unlabeled": false
}
}
}
requests
id: 각 쿼리 id. response의 details에서 key로 사용request: 평가할 search 쿼리 search API requestratings: 각 쿼리별 정답셋 _index, doc _id, ratingmetric
precision, recall, mean_reciprocal_rank (MRR), dcg, expected_reciprocal_rank (ERR){
"metric_score": 0.6666667,
"details": { ... },
"failures": { ... }
}
metric_score : 모든 쿼리에 대한 평균 점수details : 쿼리별 상세 평가failures : 실패한 쿼리가 있는 경우아래는 _rank_eval에서 사용 가능한 주요 metric들을 “무슨 지표인지 / 어떤 파라미터가 있고 / 언제 쓰는지” 기준으로 정리한 내용입니다.
실무에서 바로 참고할 수 있도록 의미 → 파라미터 → 해석 포인트 순서로 정리했습니다.
precision0/1일 때 가장 직관적"precision": {
"k": 10,
"relevant_rating_threshold": 1,
"ignore_unlabeled": false
}
k : 평가에 포함할 상위 결과 개수 (default: 10)relevant_rating_threshold : relevant 판정할 기준 rating 값 (default: 1)ignore_unlabeled : label 없는 문서를 무시할지 여부 (default: false)false : unlabeled 문서를 irrelevant로 취급true : unlabled 문서를 계산에서 제외recall"recall": {
"k": 50,
"relevant_rating_threshold": 1
}
k : 상위 k개 결과까지만 고려 (default: 10)relevant_rating_threshold :relevant 판정할 기준 rating 값 (default: 1)mean_reciprocal_rank (MRR)"mean_reciprocal_rank": {
"k": 10,
"relevant_rating_threshold": 1
}
k : 상위 k개까지만 탐색 (default 10)relevant_rating_threshold :relevant 판정할 기준 rating 값 (default: 1)dcg (Discounted Cumulative Gain)"dcg": {
"k": 10,
"normalize": false
}
k : 상위 k개 평가 (default: 10)normalize : nDCG 여부 (default: false)"dcg": {
"k": 10,
"normalize": true
}
expected_reciprocal_rank (ERR)"expected_reciprocal_rank": {
"k": 10,
"maximum_relevance": 3
}
k : 상위 k개 평가 (default: 10)maximum_relevance : rating의 최대값 (default 없는 필수 필드)| 목적 | 추천 metric |
|---|---|
| 상단 품질 빠른 체크 | Precision@k |
| 첫 정답 중요 | MRR |
| graded relevance | nDCG |
| recall-first 시스템 | Recall |
| 연구 / 실험 | ERR (선택) |