DocumentMRREvaluator
DocumentMRREvaluator
DocumentMRREvaluator는 Haystack 파이프라인이 검색한 문서를 ground truth 레이블과 비교해 평가해요. ground truth 문서가 검색된 문서 리스트에서 몇 번째 순위에 나타나는지 검사합니다. 이 측정항목을 MRR(mean reciprocal rank)라고 해요.
출처: 문서
본문
| 항목 | 내용 |
|---|---|
| 파이프라인에서의 일반적인 위치 | 단독으로 또는 평가 파이프라인에서 사용. Evaluator의 입력을 생성한 별도 파이프라인 뒤에 배치 |
| 필수 run 변수 | ground_truth_documents — ground truth 문서의 리스트를 담은 리스트. 질문별 ground truth 문서 리스트 하나를 뜻해요. / retrieved_documents — 검색된 문서의 리스트를 담은 리스트. 질문별 검색 문서 리스트 하나를 뜻합니다. |
| 출력 변수 | 딕셔너리: score — 평균 역순위를 나타내는 0.0individual_scores — 각 입력 쌍(검색 문서 리스트와 ground truth 문서 리스트)에 대한 개별 역순위(0.0 |
| API reference | Evaluators |
| GitHub link | https://github.com/deepset-ai/haystack/blob/main/haystack/components/evaluators/document_mrr.py |
| Package name | haystack-ai |
Overview
DocumentMRREvaluator 컴포넌트로 Haystack 파이프라인(예: RAG 파이프라인)이 검색한 문서를 ground truth 레이블과 비교해 평가할 수 있어요. 평균 역순위가 높을수록 좋으며, 관련 문서가 검색된 문서 리스트에서 더 앞쪽 위치에 나타난다는 뜻입니다.
DocumentMRREvaluator를 초기화하는 데 필요한 파라미터는 없습니다.
Usage
On its own
아래는 두 쿼리에 대해 검색된 문서를 평가하기 위해 DocumentMRREvaluator 컴포넌트를 사용하는 예시예요. 첫 번째 쿼리에는 ground truth 문서 1개와 검색 문서 1개가 있습니다. 두 번째 쿼리에는 ground truth 문서 2개와 검색 문서 3개가 있어요.
from haystack import Document
from haystack.components.evaluators import DocumentMRREvaluator
evaluator = DocumentMRREvaluator()
result = evaluator.run(
ground_truth_documents=[
[Document(content="France")],
[Document(content="9th century"), Document(content="9th")],
],
retrieved_documents=[
[Document(content="France")],
[
Document(content="9th century"),
Document(content="10th century"),
Document(content="9th"),
],
],
)
print(result["individual_scores"])
# [1.0, 1.0]
print(result["score"])
# 1.0
In a pipeline
아래는 두 답변을 평가하고 ground truth 답변과 비교하기 위해 DocumentRecallEvaluator와 DocumentMRREvaluator를 파이프라인에서 사용하는 예시예요. 개별 컴포넌트 대신 파이프라인을 실행하면 둘 이상의 지표를 계산하기가 더 간단해집니다.
from haystack import Document, Pipeline
from haystack.components.evaluators import DocumentMRREvaluator, DocumentRecallEvaluator
pipeline = Pipeline()
mrr_evaluator = DocumentMRREvaluator()
recall_evaluator = DocumentRecallEvaluator()
pipeline.add_component("mrr_evaluator", mrr_evaluator)
pipeline.add_component("recall_evaluator", recall_evaluator)
ground_truth_documents = [
[Document(content="France")],
[Document(content="9th century"), Document(content="9th")],
]
retrieved_documents = [
[Document(content="France")],
[
Document(content="9th century"),
Document(content="10th century"),
Document(content="9th"),
],
]
result = pipeline.run(
{
"mrr_evaluator": {
"ground_truth_documents": ground_truth_documents,
"retrieved_documents": retrieved_documents,
},
"recall_evaluator": {
"ground_truth_documents": ground_truth_documents,
"retrieved_documents": retrieved_documents,
},
},
)
for evaluator in result:
print(result[evaluator]["individual_scores"])
# [1.0, 1.0]
# [1.0, 1.0]
for evaluator in result:
print(result[evaluator]["score"])
# 1.0
# 1.0
더 알아보기 (Learn more)
- DocumentMRREvaluator — Haystack 공식 문서