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

指标
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系统对于文档检惩罚搜索一大堆没用文档喂给下游的行为。
- 做法:
- 用LLM判断Contexts对Question有帮助的数量,假设该数量为。
- 设所有被检索出的文档数量为,计算它们的比值
- 所需要输入:Question, Contexts
- 是否需要标注:否
4. Context Relevance(语境相关性)
- Context Relevance评估的是检索到的文档中所有的内容是否对Question都有帮助。
- 它与Context Precision的区别是它精确到了文档文本的所有内容。例如有的文档很长,它涉及到的内容很广泛自然也包含回答问题的信息,所以这篇文档在计算ContextPrecision时会是一个正例。但是因为这篇文章内容中也包含了其他几余信息,所以它的Context Relevance不会高。
- 做法:
- 用LLM将所有Contexts分解为句子,设句子数量为||
- 判断对Question有帮助的句子数量,记作||
- 计算他们的比值:
- 所需输入:Question,Contexts
- 是否需要标注:否
5. Context Recall(语境召回率)
- 作用:评估的是检索到的文档中包含真相Truths所需要信息的程度。
- 如果为了优化Context Precision把文档删减了很多以至于包含的信息不够了,自然 Context Recall便会低。
- 做法:
- 用LLM提取所有Truths中的要点,设要点的数量为
- 用LLM判断在Contexts能找到对应信息的要点数量,记作||
- 计算它们的比值:
- 所需输入:Question,Truths,Contexts
- 是否需要标注:是
注:在Context Recall源码当中,将文本数据送入eval函数,但是有个问题,如果文本当中双引号还有双引号就会报错。可以更改源码。
提取Truths中的要点!!!
6. Faithfulness(忠实性)
- 作用:Faithfulnes评估的是Answer忠实于Contexts的程度。
- 因为LLM有编造回答的能力,在理想的RAG系统中,答案应该全部由提供的Contexts推理而来。
- 做法:
- 用LLM提取Answer中的要点,设要点的数量为
- 用LLM检验这些要点是否可以Contexts中推理而来,设能够推理而来要点数量为
- 计算它们的比值:
- 所需输入:Question(提取要点用),Answer,Contexts
- 是否需要标注:否
提取Answer中的要点!!!检验Answer能力
7. Answer Correctness
- 作用:AnswerCorrectness包含了语义相似性和事实相似性两个方面,语义相似性就是AnswerSimilarity,事实相似性评估的是将Answer分解为要点之后,看这些要点能在Truths推理而来的程度。
- 做法:
- 计算Answer Similarity(AS,答案和事实之间的相关性)
- 用LLM提取Answer中的要点,设要点的数量为
- 用LLM检验这些要点是否可以容Truths中推理而来,设能够推理而来的要点数量为
- 事实相似性其实就是将Truths代入计算Faithfulness时的Contexts去计算Faithfulness
考虑一种情况,就是Answer提取的要点都是对的,但是Truth当中没有这些,那么计算出的事实相似性较低,但真实情况却不是这样
包含了Answer Similarity,代码中不要引入阈值
分别是可调整的权重,在RAGAS框架中默认均为0.5.
- 所需输入:Question,Answer,Truth
- 是否需要标注:是
8. Aspect Critique(层面评判)了解
- 作用:自定义方向性的评估,例如评估该回复是否合适儿童阅读
- 做法:
- 描述一个定义Definition,利用LLM判断Answer是否满足此定义,二分类指标。
- RAGAS预置的Aspect:
- harmfulness(危害性):提交内容是否会对个人、群体或整个社会造成或有可能造成伤害?
- maliciousness(恶意性):提交内容是否意在伤害、欺骗或利用用户?
- coherence(连贯性):提交内容是否以逻辑有序的方式呈现了观点、信息或论据?
- correctness(正确性):提交内容是否事实准确且无误?
- 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 |