✌🏼RAGAS
00 min
2024-5-17
2024-5-19
type
status
date
slug
summary
tags
category
icon
password
RAGAS:检索增强生成的自动评估
  • RAGAS最初是2023年9月卡迪夫大学发表的一篇论文。论文中介绍了无需标注数据自动评估RAG系统的方法。
  • 如今RAGAS可被视为一个开源的RAG评估工程工具框架.除了评估RAGAS论文中提到的指标外,也集成了其他指标
  • RAGAS框架所需要数据源:
    • Question:用户问题
    • Answer:AI生成的回复
    • Ground Truths:真相,人工标注的数据,可以有多个真相对应同一个问题
    • Contexts:语境,即检索到的内容
    • notion image

指标

Query 检索Contexts
Query Vs Answer
contexts Vs answer
answer Vs truth

1. Answer similarity(答案相似度)

  • 作用:Answer similarity评估真相Truths与答案Answer之间的相似度
  • 计算:
    • 用embedding模型提取Truths与Answer的文本语义向量。
    • 计算向量之间的相似度,相似度算法任意,可以计算cos距离
    • n是真相的数量,表示第个真相,代表答案
  • 所需输入:Answer, Truths
  • 是否需要标注:是
    • 💡
      注:需要将阈值设为None,可直接计算相似度。answer_similarity.threshold=None,不然只会输出0或1

2. Answer Relevance(答案相关度)

  • 作用:由答案反推出的问题和真实问题的相似度。本质上可以视为无标注数据时的Answer Similarity。因为做法不同,所以它更多的是Answer和Question之间的对齐程度。
  • 做法:
    • 利用LLM通过答案反推出问题。
    • 用embedding模型提取Answer与生成问题的文本语义向量
    • 计算向量间的相似度
      • 其中,n是生成的问题数量,q_i代表第i个生成的问题,q代表实际的问题。

3. Context Precision(语境精确率)

  • 作用:Context Precision评估的是检索到的文档是否对question都有帮助。
    • 其实就是有帮助的文档数量与所有被检索出文档数量的比例。它体现的是RAG系统对于文档检惩罚搜索一大堆没用文档喂给下游的行为。
  • 做法:
      1. 用LLM判断Contexts对Question有帮助的数量,假设该数量为
      1. 设所有被检索出的文档数量为,计算它们的比值
  • 所需要输入:Question, Contexts
  • 是否需要标注:否

4. Context Relevance(语境相关性)

  • Context Relevance评估的是检索到的文档中所有的内容是否对Question都有帮助。
    • 它与Context Precision的区别是它精确到了文档文本的所有内容。例如有的文档很长,它涉及到的内容很广泛自然也包含回答问题的信息,所以这篇文档在计算ContextPrecision时会是一个正例。但是因为这篇文章内容中也包含了其他几余信息,所以它的Context Relevance不会高。
  • 做法:
      1. 用LLM将所有Contexts分解为句子,设句子数量为||
      1. 判断对Question有帮助的句子数量,记作||
      1. 计算他们的比值:
    • 所需输入:Question,Contexts
    • 是否需要标注:否

    5. Context Recall(语境召回率)

    • 作用:评估的是检索到的文档中包含真相Truths所需要信息的程度。
      • 如果为了优化Context Precision把文档删减了很多以至于包含的信息不够了,自然 Context Recall便会低。
    • 做法:
        1. 用LLM提取所有Truths中的要点,设要点的数量为
        1. 用LLM判断在Contexts能找到对应信息的要点数量,记作||
        1. 计算它们的比值:
      • 所需输入:Question,Truths,Contexts
      • 是否需要标注:是
      💡
      注:在Context Recall源码当中,将文本数据送入eval函数,但是有个问题,如果文本当中双引号还有双引号就会报错。可以更改源码。 提取Truths中的要点!!!
       

      6. Faithfulness(忠实性)

      • 作用:Faithfulnes评估的是Answer忠实于Contexts的程度
        • 因为LLM有编造回答的能力,在理想的RAG系统中,答案应该全部由提供的Contexts推理而来。
      • 做法:
          1. 用LLM提取Answer中的要点,设要点的数量为
          1. 用LLM检验这些要点是否可以Contexts中推理而来,设能够推理而来要点数量为
          1. 计算它们的比值:
            1. 所需输入:Question(提取要点用),Answer,Contexts
            1. 是否需要标注:否
            💡
            提取Answer中的要点!!!检验Answer能力

        7. Answer Correctness

        • 作用:AnswerCorrectness包含了语义相似性和事实相似性两个方面,语义相似性就是AnswerSimilarity,事实相似性评估的是将Answer分解为要点之后,看这些要点能在Truths推理而来的程度。
        • 做法:
            1. 计算Answer Similarity(AS,答案和事实之间的相关性)
            1. 用LLM提取Answer中的要点,设要点的数量为
            1. 用LLM检验这些要点是否可以容Truths中推理而来,设能够推理而来的要点数量为
              1. 💡
                考虑一种情况,就是Answer提取的要点都是对的,但是Truth当中没有这些,那么计算出的事实相似性较低,但真实情况却不是这样 包含了Answer Similarity,代码中不要引入阈值
              2. 事实相似性其实就是将Truths代入计算Faithfulness时的Contexts去计算Faithfulness
              3. 分别是可调整的权重,在RAGAS框架中默认均为0.5.
        • 所需输入:Question,Answer,Truth
        • 是否需要标注:是

        8. Aspect Critique(层面评判)了解

        • 作用:自定义方向性的评估,例如评估该回复是否合适儿童阅读
        • 做法:
            1. 描述一个定义Definition,利用LLM判断Answer是否满足此定义,二分类指标。
        • RAGAS预置的Aspect:
            1. harmfulness(危害性):提交内容是否会对个人、群体或整个社会造成或有可能造成伤害?
            1. maliciousness(恶意性):提交内容是否意在伤害、欺骗或利用用户?
            1. coherence(连贯性):提交内容是否以逻辑有序的方式呈现了观点、信息或论据?
            1. correctness(正确性):提交内容是否事实准确且无误?
            1. conciseness(简洁性):提交内容是否清楚高效地传达了信息或观点,没有不必要的或几余的细节? 所需输入:Question,Answer,Contexts是否需要标注:否
        • 所需输入:Question,Answer,Contexts
        • 是否需要标注:否
         

        8. 总结

        各指标所需要输入总结
        指标名
        Question
        Answer
        Truths
        Contexts
        Answer Similarity(答案相似度)
        NO
        Yes
        Yes
        NO
        Answer Relevance(答案相关度)
        Yes
        Yes
        No
        No
        Context Precision(语境精确率)
        Yes
        NO
        No
        Yes
        Cntext Relevance(语境相关性)
        Yes
        No
        No
        Yes
        Context Recall(语境召回率)
        Yes
        NO
        Yes
        Yes
        Faithfuness(忠实性)
        Yes
        Yes
        No
        Yes
        Answer Correctness(答案正确性)
        Yes
        Yes
        Yes
        No
        Aspect Critique(层面评判)
        Yes
        Yes
        NO
        Yes
        演示代码