pridanie semantickych testov evaluatora
This commit is contained in:
parent
c0a90f72d5
commit
aa453531aa
146
test/test_rag_metrics_semantic.py
Normal file
146
test/test_rag_metrics_semantic.py
Normal file
@ -0,0 +1,146 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from evaluation.rag_metrics import (
|
||||
evaluate_answer,
|
||||
expected_phrase_matches,
|
||||
)
|
||||
|
||||
|
||||
def test_compact_unit_spacing_matches() -> None:
|
||||
assert expected_phrase_matches(
|
||||
"450MB",
|
||||
"Nazbieraných bolo približne 450 MB textu.",
|
||||
)
|
||||
|
||||
|
||||
def test_llm_matches_large_language_model() -> None:
|
||||
assert expected_phrase_matches(
|
||||
"LLM",
|
||||
"Projekt používa veľký jazykový model.",
|
||||
)
|
||||
|
||||
|
||||
def test_named_entities_matches_slovak_wording() -> None:
|
||||
assert expected_phrase_matches(
|
||||
"named entities",
|
||||
"Stáž sa venovala pomenovaným entitám.",
|
||||
)
|
||||
|
||||
|
||||
def test_knowledge_graph_matches_slovak_wording() -> None:
|
||||
assert expected_phrase_matches(
|
||||
"knowledge graph",
|
||||
"Cieľom bolo zostaviť znalostný graf.",
|
||||
)
|
||||
|
||||
|
||||
def test_multilingual_medical_triplet_phrase_matches_translation() -> None:
|
||||
assert expected_phrase_matches(
|
||||
"multilinguálna extrakcia trojíc z medicínskych dát",
|
||||
"Téma bola viacjazyčné extrahovanie trojíc z lekárskych dát.",
|
||||
)
|
||||
|
||||
|
||||
def test_cesar_goal_matches_slovak_equivalent() -> None:
|
||||
assert expected_phrase_matches(
|
||||
"recognize unknown named entities",
|
||||
"Cieľom bolo rozpoznávať neznáme pomenované entity.",
|
||||
)
|
||||
assert expected_phrase_matches(
|
||||
"manually annotated training set",
|
||||
"Mal vytvoriť manuálne anotovanú trénovaciu množinu.",
|
||||
)
|
||||
assert expected_phrase_matches(
|
||||
"annotation schema",
|
||||
"Mal navrhnúť anotačnú schému.",
|
||||
)
|
||||
|
||||
|
||||
def test_mteb_evaluation_can_match_descriptive_answer() -> None:
|
||||
assert expected_phrase_matches(
|
||||
"Hate Speech a MTEB evaluácia",
|
||||
(
|
||||
"Stáž zahŕňala slovenský hate speech a hodnotenie "
|
||||
"modelov sentence transformer."
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
def test_ordinary_phrase_still_requires_ordered_local_match() -> None:
|
||||
assert not expected_phrase_matches(
|
||||
"slovenský internet",
|
||||
"Internetový projekt používa slovenský jazyk.",
|
||||
)
|
||||
|
||||
|
||||
def test_multi_document_requires_two_gold_sources_not_all() -> None:
|
||||
question = {
|
||||
"category": "multi_document",
|
||||
"expected_answer_contains": ["RAG"],
|
||||
"expected_source_urls": [
|
||||
"https://example.test/a",
|
||||
"https://example.test/b",
|
||||
"https://example.test/c",
|
||||
"https://example.test/d",
|
||||
],
|
||||
"should_answer": True,
|
||||
}
|
||||
answer = (
|
||||
"RAG sa nachádza vo viacerých dokumentoch.\n\n"
|
||||
"Zdroje:\n"
|
||||
"https://example.test/a\n"
|
||||
"https://example.test/c"
|
||||
)
|
||||
|
||||
result = evaluate_answer(
|
||||
question,
|
||||
answer,
|
||||
tool_called=True,
|
||||
)
|
||||
|
||||
assert result["source_match_count"] == 2
|
||||
assert result["source_required_count"] == 2
|
||||
assert result["strict_pass"] is True
|
||||
|
||||
|
||||
def test_invalid_placeholder_source_urls_do_not_force_failure() -> None:
|
||||
question = {
|
||||
"category": "multi_document",
|
||||
"expected_answer_contains": ["strojový preklad"],
|
||||
"expected_source_urls": ["...", "...", "..."],
|
||||
"should_answer": True,
|
||||
}
|
||||
|
||||
result = evaluate_answer(
|
||||
question,
|
||||
"Dokumenty riešia strojový preklad.",
|
||||
tool_called=True,
|
||||
)
|
||||
|
||||
assert result["source_required_count"] == 0
|
||||
assert result["source_url_score"] == 1.0
|
||||
assert result["strict_pass"] is True
|
||||
|
||||
|
||||
def test_single_document_still_requires_its_expected_source() -> None:
|
||||
question = {
|
||||
"category": "specific_fact",
|
||||
"expected_answer_contains": ["Prodigy"],
|
||||
"expected_source_urls": ["https://example.test/question"],
|
||||
"should_answer": True,
|
||||
}
|
||||
|
||||
result = evaluate_answer(
|
||||
question,
|
||||
"Používa sa Prodigy.",
|
||||
tool_called=True,
|
||||
)
|
||||
|
||||
assert result["source_required_count"] == 1
|
||||
assert result["strict_pass"] is False
|
||||
|
||||
def test_cesar_goal_matches_rozoznavat_variant() -> None:
|
||||
assert expected_phrase_matches(
|
||||
"recognize unknown named entities",
|
||||
"Cieľom bolo rozoznávať neznáme pomenované entity.",
|
||||
)
|
||||
Loading…
Reference in New Issue
Block a user