Skip to main content

A Python package for RAG performance evaluation

Project description

Krag

Krag는 RAG 시스템(Retrieval-Augmented Generation)을 평가하기 위해 설계된 Python 패키지입니다. Hit Rate, Recall, Precision, MRR(Mean Reciprocal Rank), MAP(Mean Average Precision), NDCG(Normalized Discounted Cumulative Gain) 등 다양한 평가 지표를 계산하는 도구를 제공합니다.

설치 방법

pip를 사용하여 Krag를 설치할 수 있습니다:

pip install krag

사용 예시

다음은 Krag 패키지에서 제공하는 KragDocumentOfflineRetrievalEvaluators 클래스를 사용하는 간단한 예제입니다.

from krag.document import KragDocument as Document
from krag.evaluators import OfflineRetrievalEvaluators, AveragingMethod, MatchingCriteria

# 각 쿼리에 대한 정답 문서 
actual_docs = [
    [Document(page_content="이것은 실제 문서의 내용입니다. 중요한 정보를 포함하고 있습니다."), 
     Document(page_content="두 번째 실제 문서입니다. 추가적인 세부 사항이 있습니다.")],
    [Document(page_content="다른 주제에 관한 실제 문서입니다. 새로운 개념을 소개합니다."), 
     Document(page_content="네 번째 실제 문서로, 이전 개념을 확장합니다.")]
]

predicted_docs = [
    [Document(page_content="이것은 예측된 문서의 내용입니다. 중요한 정보를 다루고 있습니다."), 
     Document(page_content="두 번째 예측 문서는 추가 세부 정보를 제공합니다."),
     Document(page_content="세 번째 예측 문서는 관련이 없을 수 있습니다.")],
    [Document(page_content="다른 주제에 대한 예측 문서입니다. 새로운 아이디어를 제시합니다."), 
     Document(page_content="이 예측 문서는 이전 개념을 더 자세히 설명합니다."), 
     Document(page_content="마지막 예측 문서는 요약을 제공합니다.")]
]

# 평가도구 초기화 
evaluator = OfflineRetrievalEvaluators(
    actual_docs, 
    predicted_docs, 
    match_method="text",
    averaging_method=AveragingMethod.BOTH,
    matching_criteria=MatchingCriteria.PARTIAL
)

# 평가지표 계산 (k=2 예시)
hit_rate = evaluator.calculate_hit_rate(k=2)
mrr = evaluator.calculate_mrr(k=2)
recall = evaluator.calculate_recall(k=2)
precision = evaluator.calculate_precision(k=2)
f1_score = evaluator.calculate_f1_score(k=2)
map_score = evaluator.calculate_map(k=2)
ndcg = evaluator.calculate_ndcg(k=2)

# 결과 출력
print(f"Hit Rate @2: {hit_rate}")
print(f"MRR @2: {mrr}")
print(f"Recall @2: {recall}")
print(f"Precision @2: {precision}")
print(f"F1 Score @2: {f1_score}")
print(f"MAP @2: {map_score}")
print(f"NDCG @2: {ndcg}")

# 결과 시각화
evaluator.visualize_results(k=2)

주요 기능

  1. 문서 매칭:

    • 평가자는 실제 문서와 예측된 문서를 매칭하기 위한 여러 가지 방법을 제공합니다. 여기에는 정확한 텍스트 매칭과 ROUGE 기반 매칭(rouge1, rouge2, rougeL)이 포함됩니다.
  2. 평가지표:

    • Hit Rate (적중률): 예측된 문서 집합에서 실제 문서가 올바르게 식별된 비율을 측정합니다.
    • Recall: 상위 k개의 예측에서 얼마나 많은 관련 문서가 포함되었는지를 평가합니다.
    • Precision: 상위 k개의 예측의 정밀도를 평가합니다.
    • F1 Score: Precision과 Recall의 조화 평균을 계산합니다.
    • MRR (Mean Reciprocal Rank, 평균 역순위): 첫 번째 관련 문서의 순위의 역수를 평균내어 계산합니다.
    • MAP (Mean Average Precision): 상위 k위 안에 관련 문서가 등장하는 순위에서의 정밀도를 평균냅니다.
    • NDCG (Normalized Discounted Cumulative Gain): 관련성 점수를 바탕으로 문서 순서를 고려하여 순위 품질을 평가합니다.
  3. ROUGE 점수 매칭:

    • RougeOfflineRetrievalEvaluators 클래스는 기본 평가자 기능을 확장하여 ROUGE 점수(rouge1, rouge2, rougeL)를 사용한 매칭과 검색 품질 평가를 수행합니다.
  4. 결과 시각화:

    • visualize_results 메서드를 사용하여 평가 결과를 그래프로 시각화할 수 있습니다.

ROUGE 매칭 사용 예제

from krag.document import KragDocument
from krag.evaluators import RougeOfflineRetrievalEvaluators, AveragingMethod, MatchingCriteria

# ROUGE 매칭을 사용한 평가도구 초기화 
evaluator = RougeOfflineRetrievalEvaluators(
    actual_docs, 
    predicted_docs, 
    match_method="rouge1",
    averaging_method=AveragingMethod.BOTH,
    matching_criteria=MatchingCriteria.PARTIAL,
    threshold=0.5
)

# 평가지표 계산 (k=2 예시)
hit_rate = evaluator.calculate_hit_rate(k=2)
mrr = evaluator.calculate_mrr(k=2)
recall = evaluator.calculate_recall(k=2)
precision = evaluator.calculate_precision(k=2)
f1_score = evaluator.calculate_f1_score(k=2)
map_score = evaluator.calculate_map(k=2)
ndcg = evaluator.calculate_ndcg(k=2)

# 결과 출력
print(f"ROUGE Hit Rate @2: {hit_rate}")
print(f"ROUGE MRR @2: {mrr}")
print(f"ROUGE Recall @2: {recall}")
print(f"ROUGE Precision @2: {precision}")
print(f"ROUGE F1 Score @2: {f1_score}")
print(f"ROUGE MAP @2: {map_score}")
print(f"ROUGE NDCG @2: {ndcg}")

# 결과 시각화
evaluator.visualize_results(k=2)

라이선스

이 프로젝트는 MIT 라이선스 하에 있습니다 - 자세한 내용은 MIT 라이선스를 참조하세요.

연락처

질문이 있으시면 이메일로 연락 주시기 바랍니다.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

krag-0.0.27.tar.gz (10.8 kB view hashes)

Uploaded Source

Built Distribution

krag-0.0.27-py3-none-any.whl (11.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page