Closed3

Context Entities Recallをざっくり調査する

そのだそのだ

実際にやってみる

ドキュメント通りにやってみる。

from ragas import SingleTurnSample
from ragas.metrics import ContextEntityRecall

sample = SingleTurnSample(
    reference="The Eiffel Tower is located in Paris.",
    retrieved_contexts=["The Eiffel Tower is located in Paris."], 
)

scorer = ContextEntityRecall(llm=evaluator_llm)

await scorer.single_turn_ascore(sample)

スコアは0.999999995と表示された。
retrieved_contextsの固有名詞を削除して、スコアがどのように変化するかを検証する。
コードは以下の通り。

sample = SingleTurnSample(
    reference="The Eiffel Tower is located in Paris.",
    retrieved_contexts=["The Eiffel Tower is located."],  # in Parisを削除した
)

スコアは0.4999999975と表示され、評価が下がった。
次はreferenceの固有名詞を削除して、スコアがどのように変化するかを検証する。

sample = SingleTurnSample(
    reference="The Eiffel Tower is located", # in Parisを削除した
    retrieved_contexts=["The Eiffel Tower is located in Paris."], 
)

スコアは0.9999999900000002となり、良い評価が得られた。
したがって、参照回答(reference)に含まれる固有名詞が、検索コンテキスト(retrieved_contexts)にどれだけ含まれているかが重要になってくることがわかった。

考察

2つ目でスコアが下がった理由は、参照回答(reference)に含まれているin Parisが、retrieved_contextsにないためである。
逆に3つ目のスコアが上がった理由は、参照回答(reference)に含まれているEiffel Towerがretrieved_contextsにあるからである。retrieved_contextsにin Parisがあっても評価には関係がない。

そのだそのだ

結論

参照回答(reference)に含まれている固有表現(エンティティ)が検索されたコンテキスト(retrieved_contexts)にどれだけ含まれているかを評価するもの。

このスクラップは2ヶ月前にクローズされました