跳到内容

上下文实体召回

上下文实体召回

ContextEntityRecall 指标衡量的是检索到的上下文的召回率,其计算方式是根据在 referenceretrieved_contexts 中都存在的实体数量与仅在 reference 中存在的实体数量的比例。简单来说,它衡量的是从 reference 中召回了多少比例的实体。这个指标在基于事实的用例中非常有用,例如旅游帮助台、历史问答等。通过与 reference 中存在的实体进行比较,这个指标有助于评估实体的检索机制,因为在实体重要的用例中,我们需要包含这些实体的 retrieved_contexts

为了计算此指标,我们使用两个集合

  • \(RE\): 参考中的实体集合。
  • \(RCE\): 检索到的上下文中的实体集合。

我们计算两个集合的共有实体数量(\(RCE \cap RE\)),并将其除以参考中的实体总数(\(RE\))。公式如下:

\[ \text{上下文实体召回率} = \frac{\text{RCE 与 RE 之间的共同实体数量}}{\text{RE 中的实体总数}} \]

示例

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

如何计算

示例

参考:泰姬陵是位于印度城市阿格拉亚穆纳河右岸的一座象牙白大理石陵墓。它由莫卧儿皇帝沙贾汗于 1631 年委托建造,用于安葬他最爱的妻子穆塔兹·玛哈尔。高实体召回上下文:泰姬陵是位于印度阿格拉的爱与建筑奇迹的象征。它由莫卧儿皇帝沙贾汗建造,以纪念他心爱的妻子穆塔兹·玛哈尔。这座建筑以其复杂的大理石工艺和美丽的周围花园而闻名。低实体召回上下文:泰姬陵是印度的一个标志性古迹。它是联合国教科文组织世界遗产,每年吸引数百万游客。精美的雕刻和令人惊叹的建筑使其成为必游之地。

让我们考虑上面给出的参考和检索到的上下文。

  • 步骤 1:找出参考中存在的实体。
    • 事实真相中的实体 (RE) - ['泰姬陵', '亚穆纳河', '阿格拉', '1631', '沙贾汗', '穆塔兹·玛哈尔']
  • 步骤 2:找出检索到的上下文中的实体。
    • 上下文中的实体 (RCE1) - ['泰姬陵', '阿格拉', '沙贾汗', '穆塔兹·玛哈尔', '印度']
    • 上下文中的实体 (RCE2) - ['泰姬陵', '联合国教科文组织', '印度']
  • 步骤 3:使用上面给出的公式计算实体召回率

    \[ \text{上下文实体召回率 1} = \frac{| RCE1 \cap RE |}{| RE |} = 4/6 = 0.666 \]
    \[ \text{上下文实体召回率 2} = \frac{| RCE2 \cap RE |}{| RE |} = 1/6 \]

    我们可以看到第一个上下文具有较高的实体召回率,因为它相对于参考具有更好的实体覆盖。如果这两个检索到的上下文是由两种不同的检索机制从同一组文档中获取的,我们可以说在实体很重要的用例中,第一种机制优于第二种。