1. 背景

RAGAS:实现检索增强生成的自动化评估_机器学习

检索增强生成(Retrieval Augmented Generation, RAG)作为当前解决大语言模型幻觉、知识更新、领域知识问题的有效方法,其热度不断攀升。RAG的本质是从语料库中提取相关文本,并与其原问题一并送入LLM进行处理。

虽然检索增强策略的优势显而易见,但实施过受到检索模型、所选语料库、大语言模型本身或提示词构建等众多因素的共同影响。因此,对检索增强系统的自动化评估显得尤为关键。

在实际操作中,RAG系统通常通过在某个参考语料库上测量困惑度(perplexity)来评估语言建模任务。然而,此类评估并不是能一直准确预测系统在实际应用中的表现。

因此,作者提出了RAGAS(Retrieval Augmented Generation Assessment),一个自动化评估检索增强生成系统的框架。

2. RAGAS评估策略

RAGAS:实现检索增强生成的自动化评估_机器学习_02

定义:

在标准的检索增强生成(RAG)场景中

系统面对一个问题q时

首先检索相关上下文c(q)

随后利用这些上下文生成答案as(q)

构建RAG系统过程中,往往无法获取标注数据集或标准答案。在RAGAS,作者特别强调三个核心的质量维度。

  • • 忠实度(Faithfulness):要求答案必须植根于所提供的上下文中,有助于预防幻觉现象,并确保所检索的上下文能为生成的答案提供合理依据。RAG系统在诸如法律等对文本事实一致性要求极高的领域中尤为常用,这些领域信息更新迅速。
  • • 答案相关性(Answer Relevance):意味着生成的答案必须切中提出的问题要害。
  • • 上下文相关性(Context Relevance):要求检索到的上下文应集中且精准,尽量减少无关信息的干扰。考虑到大型语言模型(LLMs)输入长上下文所涉及的成本,这一点尤为重要。而且,当上下文过长时,LLMs在利用这些信息上往往不够高效,特别是当信息位于上下文段落中间时会出现Loss in the middle的问题。

RAGAS:实现检索增强生成的自动化评估_人工智能_03

2.1 忠实度(Faithfulness)评估

当答案as(q)中的各项主张能够从上下文c(q)中推导出来时,认为这个答案是对上下文的忠实反映。

为了衡量这种忠实度,首先利用大型语言模型(LLM)将答案分解为一组更精炼的陈述集S(as(q))。这一步骤的目的是将复杂句子细化为简洁明了的断言。

采用如下提示来实现这一点:

Given a question and answer, create one or more statements from each sentence in the given answer.

question: [question]

answer: [answer]

接着,对于陈述集中的每项陈述si,LLM通过验证函数v(si, c(q))来判定si是否能够由上下文c(q)所支持。验证过程遵循以下提示:

Consider the given context and following statements, then determine whether they are supported by the information present in the context. Provide a brief explanation for each statement before arriving at the verdict (Yes/No). Provide a final verdict for each statement in order at the end in the given format. Do not deviate from the specified format.

statement: [statement 1]

...

statement: [statement n]

最终的忠实度得分F,通过公式F = |V| / |S|来计算,其中|V|表示LLM确认为得到支持的陈述数量,而|S|则是陈述的总数。

2.2 答案相关性(Answer relevance)评估

若答案as(q)能够恰当且直接地回应所提问题,则该答案便具有相关性。

在评估答案的相关性时,不以事实正确性为考量,而是对那些答案不全面或含有冗余信息的情形予以扣分。为了衡量这一相关性,对于既定答案as(q),引导大型语言模型(LLM)根据答案内容构思出n个可能的问题qi,其操作如下:

Generate a question for the given answer.

answer: [answer]

随后,利用OpenAI API所提供的text-embedding-ada-002模型为这些问题生成文本嵌入。对于每个问题qi,通过计算原始问题q与qi的嵌入向量间的余弦相似度sim(q, qi)来衡量它们的相似性。

针对问题q的答案相关性得分AR,按以下公式计算:

RAGAS:实现检索增强生成的自动化评估_语言模型_04

这一指标用以衡量生成的答案与原始问题或指令的契合度。

2.3 上下文相关性(Context relevance)评估

上下文c(q)的相关性在于其仅包含解答问题所必需的信息。该度量标准特别旨在避免包含不必要的冗余信息。

为了衡量上下文的相关性,针对问题q及其上下文c(q),大型语言模型(LLM)根据以下提示,从c(q)中提炼出对解答q至关重要的句子集合Sext:

Please extract relevant sentences from the provided context that can potentially help answer the following question. If no relevant sentences are found, or if you believe the question cannot be answered from the given context, return the phrase "Insufficient Information". While extracting candidate sentences you’re not allowed to make any changes to sentences from given context.

以下是上述提示词的翻译:

请从提供的上下文中筛选出可能有助于回答下列问题的相关句子。如果未发现相关句子,或者你认为根据给定的上下文无法回答问题,请回复短语‘信息不足’。在筛选候选句子时,不得对给定上下文中的句子做任何修改。

上下文相关性得分CR的计算方法为:

RAGAS:实现检索增强生成的自动化评估_自动化_05

此公式用以量化上下文对于回答问题的相关程度。

3. 其他

虽然论文里,作者只提了三个指标,但在RAGAS的官方文档中,其实是有更多维度的指标:

  • • Faithfulness(忠实度)
  • • Answer relevancy(答案相关性)
  • • Context recall(上下文召回率)
  • • Context precision(上下文精确度)
  • • Context utilization(上下文利用度)
  • • Context entity recall(上下文实体召回率)
  • • Summarization Score(摘要得分)

最近有一篇很火的文章,也是使用了RAGAS的度量指标,供大家参考:

金融巨头贝莱德新作:VectorRAG和GraphRAG到底哪个好?

更多内容可以参考:https://docs.ragas.io/en/stable/getstarted/index.html