Skip to content

上下文实体召回率

上下文实体召回

ContextEntityRecall 指标衡量了检索到的上下文的召回率,基于 referenceretrieved_contexts 中共同存在的实体数量相对于 reference 中单独存在的实体数量。简而言之,它是衡量从 reference 中召回的实体比例。该指标在基于事实的用例中非常有用,如旅游帮助台、历史问答等。该指标可以帮助评估实体的检索机制,通过与 reference 中存在的实体进行比较,因为在实体重要的用例中,我们需要覆盖这些实体的 retrieved_contexts

为了计算这个指标,我们使用两个集合,\(GE\)\(CE\),分别表示 referenceretrieved_contexts 中存在的实体集合。然后我们取这两个集合的交集中的元素数量,并将其除以 \(GE\) 中的元素数量,公式如下:

\[ \text{context entity recall} = \frac{| CE \cap GE |}{| GE |} \]

示例

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()

await scorer.single_turn_ascore(sample)

计算方法

示例

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

让我们考虑上述的 ground truth 和上下文。

  • 步骤1: 找出 ground truth 中存在的实体。
    • 实体在 ground truth (GE) 中 - ['泰姬陵', '亚穆纳河', '阿格拉', '1631', '沙贾汗', '穆塔兹·玛哈尔']
  • 步骤2: 找出上下文中存在的实体。
    • 实体在上下文 (CE1) 中 - ['泰姬陵', '阿格拉', '沙贾汗', '穆塔兹·玛哈尔', '印度']
    • 实体在上下文 (CE2) 中 - ['泰姬陵', '联合国教科文组织', '印度']
  • 步骤3: 使用上述公式计算实体召回率

    \[ \text{context entity recall 1} = \frac{| CE1 \cap GE |}{| GE |} = 4/6 = 0.666 \]
    \[ \text{context entity recall 2} = \frac{| CE2 \cap GE |}{| GE |} = 1/6 \]

    我们可以看到,第一个上下文具有较高的实体召回率,因为它在给定的 ground truth 下具有更好的实体覆盖率。如果这两个上下文是由两个检索机制从同一组文档中检索出来的,我们可以说在实体重要的用例中,第一个机制比另一个更好。