AnswerExactMatchEvaluator
AnswerExactMatchEvaluator
AnswerExactMatchEvaluator는 Haystack 파이프라인이 예측한 답변을 정답(ground truth) 라벨과 비교해 평가해요. 예측 답변이 정답과 문자 단위로 정확히 일치하는지 확인하죠. 이 지표를 exact match라고 부릅니다.
파이프라인에서 가장 흔한 위치: 단독으로, 또는 평가 파이프라인에서 사용. Evaluator의 입력을 생성한 별도의 파이프라인 뒤에 둠
필수 run 변수: ground_truth_answers(정답 문자열 목록), predicted_answers(평가할 예측 답변 문자열 목록)
출력 변수: 다음을 담은 딕셔너리:
score: 예측 답변 중 어느 하나라도 정답과 일치한 질문의 비율을 나타내는 0.0~1.0 숫자individual_scores: 0과 1의 목록. 1은 예측 답변이 정답 중 하나와 일치했음을 의미
API reference: Evaluators
GitHub link: https://github.com/deepset-ai/haystack/blob/main/haystack/components/evaluators/answer_exact_match.py
Package name: haystack-ai
출처: 문서
본문
Overview
AnswerExactMatchEvaluator 컴포넌트로 Haystack 파이프라인(추출형 질의응답 파이프라인 같은)이 예측한 답변을 정답 라벨과 비교해 평가할 수 있어요. AnswerExactMatchEvaluator는 예측 답변이 정답과 정확히 일치하는지 확인하기 때문이죠. RAG 파이프라인처럼 LLM이 생성한 답변을 평가하기에는 적합하지 않아요. 그런 경우 FaithfulnessEvaluator나 SASEvaluator를 사용하세요.
AnswerExactMatchEvaluator를 초기화할 때 필요한 파라미터는 없습니다.
한 번에 하나의 예측 답변만 하나의 정답과 비교된다는 점을 기억하세요. 이 컴포넌트는 같은 질문에 대한 여러 정답이나, 같은 질문에 대해 예측된 여러 답변을 지원하지 않아요.
Usage
On its own
아래는 AnswerExactMatchEvaluator 컴포넌트로 두 답변을 평가해 정답과 비교하는 예시예요.
from haystack.components.evaluators import AnswerExactMatchEvaluator
evaluator = AnswerExactMatchEvaluator()
result = evaluator.run(
ground_truth_answers=["Berlin", "Paris"],
predicted_answers=["Berlin", "Lyon"],
)
print(result["individual_scores"])
# [1, 0]
print(result["score"])
# 0.5
In a pipeline
아래는 파이프라인에서 AnswerExactMatchEvaluator와 SASEvaluator를 사용해 두 답변을 평가하고 정답과 비교하는 예시예요. 개별 컴포넌트 대신 파이프라인을 실행하면 두 개 이상의 지표를 계산하기가 더 간단해집니다.
from haystack import Pipeline
from haystack.components.evaluators import AnswerExactMatchEvaluator
from haystack.components.evaluators import SASEvaluator
pipeline = Pipeline()
em_evaluator = AnswerExactMatchEvaluator()
sas_evaluator = SASEvaluator()
pipeline.add_component("em_evaluator", em_evaluator)
pipeline.add_component("sas_evaluator", sas_evaluator)
ground_truth_answers = ["Berlin", "Paris"]
predicted_answers = ["Berlin", "Lyon"]
result = pipeline.run(
{
"em_evaluator": {
"ground_truth_answers": ground_truth_answers,
"predicted_answers": predicted_answers,
},
"sas_evaluator": {
"ground_truth_answers": ground_truth_answers,
"predicted_answers": predicted_answers,
},
},
)
for evaluator in result:
print(result[evaluator]["individual_scores"])
# [1, 0]
# [1.0, 0.5174766182899475]
for evaluator in result:
print(result[evaluator]["score"])
# 0.5
# 0.7587383091449738
더 알아보기 (Learn more)
- Evaluators — Evaluator 컴포넌트
- SASEvaluator — 의미 유사도 평가
- FaithfulnessEvaluator — 충실도 평가