自学内容网 自学内容网

RAG 系统的评测 --> RAGAs(量化 RAG 系统的好坏)

在开发RAG系统的过程中,比较头疼的就是怎么评测做出来的系统的好与坏。
人工评测最直观,但是局限性很大,且不够客观。
所以 RAGAs 作为一个很方便的一个测评 RAG 系统的工具而问世。让我们来看看他的真面目吧

Step1:流程

  1. 先考虑是否使用本地大模型
    1. 如果使用 SaaS 模式去调用云端大模型,那么很方便,可以直接使用 langchain 官方支持的那几个大模型langchain_community 中的接口。记得要LangchainLLMWrapper or LangchainEmbeddingsWrapper 包装起来
    2. 如果要使用本地的大模型进行评测,那就要考虑写继承了。简单而言,
      1. 如果直接使用 ragas,那么就需要让模型继承 BaseRagasLLMBaseRagasEmbeddings
        1. BaseRagasLLMgenerate_textagenerate_text 一定要重写;
        2. BaseRagasEmbeddingsembed_text 一定要重写;如果是 embedding 模型,embed_queryembed_document 一定要重写
      2. 如果是使用 Langchain ,就得继承 langchain 规定的基类,即继承 LLM 类,实现 _call 方法;嵌入模型同理。
    3. 个人建议,
      1. 能用 Langchain 就用 Langchain,不要自己去集成 RAGAs 的基类,因为用 Langchain 的方式,社区支持很多,出错易调错;
      2. 如果是本地部署的大模型,可以费劲的去写基类,对于嵌入模型,如果实在没时间,可以不写基类,用云端的也费不了几块钱。
      3. 测试的时候,记得把温度变成 0,为了测评结果的稳定性
  2. RAGAs 大体的流程如下
    1. 首先要生成一个评测集,

      1. 其中 questionground_truths 可以是人工的(更准),也可以驱动大模型去生成。当然如果信不过大模型,又懒得人工去编写,可以把两者结合起来,让大模型作为工具先生成,人工在进行改写和检验。

      2. answercontexts 一定要是自己的 RAG 系统生成的。

      3. 评测集格式(Dataset 格式),包含四个列表

        • 一定要保持 contextsground_truths 格式一致性
        question: list[str] -> 这个是 RAG 系统希望评测的问题
        answer: list[str] -> 有 RAG 系统生成,并提供给用户的答案,即需要评测的答案
        contexts: list[list[str]] -> 传入 LLM 并回答问题的上下文
        ground_truths:list[list[str]] -> 问题的真实答案,如果是在线测评,忽略;因为无法获取真实的答案数据
        

        外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    2. 有了评测数据,接下来的工作就简单了。可以直接使用 evaluate 去评测模型了,这里以四个常用评测指标(忠诚度、召回率、准确率和相关性)为例

      from ragas import evaluate
      from ragas.metrics import LLMContextRecall, Faithfulness, FactualCorrectness, SemanticSimilarity
      
      eval_results = evaluate(
                          metrics=[
                              Faithfulness(llm=evaluator_llm),
                              FactualCorrectness(llm=evaluator_llm),
                              SemanticSimilarity(embeddings=embed, llm=evaluator_llm),
                              LLMContextRecall(llm=evaluator_llm)
                          ],
                          dataset=test_dataset,
                      )
      

      Note:
      这里的评估模型和嵌入模型,强烈推荐用第三方的能力强的大模型作为 evaluator

      • 避免自我评价偏差
      • 客观性和公信力
      • 标准一致性
      • 能力保证

      所以,推荐 GPT-4 这种模型,当然 Claude 也可以。

Step2:评价指标

  • Faithfulness(忠实度):检查答案是否仅基于给定上下文
  • FactualCorrectness(准确性):答案与真实答案的符合程度
  • SemanticSimilarity(语义相似度):答案与问题的相关程度
  • LLMContextRecall(上下文召回):检索内容的相关性

RAG 系统可以根据不同的标准进行评估,具体取决于它的具体应用。例如

  • 如果 RAG 被用于文本生成,评估准则可能包括生成文本的连贯性、流畅度和相关性
  • 如果系统被用于信息检索,需求可能包括 准确率、召回率和排序质量
  • QA 应用中,系统可能被评估基于 答案的准确率、完整性以及处理复杂问题的能力

我们将使用 RAGA 的忠实度、相关性、上下文精确率和上下文召回率指标来执行评估。

  1. Faithfulness

    衡量模型的输出对源材料中存在的信息的准确程度

    忠实的回复包含忠实于原始内容的信息,而不引入新的或矛盾的信息

    高忠实度意味着模型没有产生幻觉

  2. Relevancy

    评估模型的输出对给定查询的处理是如何的好

    一个相关的回应直接回答问题,且包含符合用户需求的信息。

    高相关性表示模型理解查询并且提供合适的主题信息

  3. Context Recall

    表示候选句子提取和自然语言推理(NLI)的组合,允许系统估计它正确捕获的数据(正样本,TP)和错误捕捉的数据(负样本,FP).

    T P T P + F N \frac{TP}{TP+FN} TP+FNTP

  4. Context Precision

    它指的是评价在从所提供的上下文中精确定位并提取与准确回答给定问题相关且必不可少的特定句子方面所起的作用。最终得分是提取出的句子数量与给定上下文中句子总数的比率,用以衡量提取的完整性和准确性


原文地址:https://blog.csdn.net/weixin_46034279/article/details/143524118

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!