Skip to content

上下文召回率

上下文召回率衡量成功检索到的相关文档(或信息片段)的数量。它关注的是不遗漏重要结果。更高的召回率意味着遗漏的相关文档更少。简而言之,召回率是关于不错过任何重要内容。由于它涉及不错过任何内容,因此计算上下文召回率总是需要一个参考来进行比较。

基于LLM的上下文召回率

LLMContextRecall 使用 user_inputreferenceretrieved_contexts 计算,其值范围在0到1之间,值越高表示性能越好。该指标使用 reference 作为 reference_contexts 的代理,这也使得它更容易使用,因为注释参考上下文可能非常耗时。为了从 reference 估计上下文召回率,参考文献被分解为声明,每个 reference 答案中的声明都会被分析,以确定它是否可以归因于检索到的上下文。在理想情况下,参考答案中的所有声明都应该可以归因于检索到的上下文。

计算上下文召回率的公式如下:

\[ \text{context recall} = {|\text{可以归因于上下文的GT声明数量}| \over |\text{GT中的声明总数}|} \]

示例

from ragas.dataset_schema import SingleTurnSample
from ragas.metrics import LLMContextRecall

sample = SingleTurnSample(
    user_input="埃菲尔铁塔位于哪里?",
    response="埃菲尔铁塔位于巴黎。",
    reference="埃菲尔铁塔位于巴黎。",
    retrieved_contexts=["巴黎是法国的首都。"], 
)

context_recall = LLMContextRecall()
await context_recall.single_turn_ascore(sample)

非LLM的上下文召回率

NonLLMContextRecall 指标使用 retrieved_contextsreference_contexts 计算,其值范围在0到1之间,值越高表示性能越好。该指标使用非LLM的字符串比较指标来识别检索到的上下文是否相关。你可以使用任何非LLM的指标作为距离度量来识别检索到的上下文是否相关。

计算上下文召回率的公式如下:

\[ \text{context recall} = {|\text{检索到的相关上下文数量}| \over |\text{参考上下文总数}|} \]

示例

from ragas.dataset_schema import SingleTurnSample
from ragas.metrics import NonLLMContextRecall

sample = SingleTurnSample(
    retrieved_contexts=["巴黎是法国的首都。"], 
    reference_contexts=["巴黎是法国的首都。", "埃菲尔铁塔是巴黎最著名的地标之一。"]
)

context_recall = NonLLMContextRecall()
await context_recall.single_turn_ascore(sample)