使用LLM作为评委评估RAG

使用 Mistral 模型作为LLM评委(含结构化输出)

解决方案
2025年4月9日Mistral AI 团队

大型语言模型 (LLM) 正迅速成为创建广泛应用的必备工具。但确保这些模型按预期运行说起来容易做起来难。评估 LLM 系统不仅要验证输出是否连贯,还要确保答案相关并满足必要的要求。

RAG 系统的兴起

检索增强生成 (RAG) 系统已成为增强 LLM 能力的流行方式。通过将 LLM 与数据检索系统配对,LLM 可以生成不仅连贯而且基于相关和当前信息的响应。这有助于减少模型听起来自信但实际上可能产生幻觉的情况。

然而,评估这些 RAG 系统的性能并非易事。这不仅关乎 LLM 生成的输出听起来是否正确,还在于从源头验证检索到的信息是否相关和准确。传统方法往往会错过这些细微之处,因此全面的评估框架至关重要。

回顾来看,许多领域都面临同样的问题,即可能缺乏明确的量化指标或评估数据来衡量性能,而衡量成功的标准可能更具定性和细微性。

LLM 作为评委:使用 LLM 评估其他 LLM

在必须大规模运行评估且缺乏人类评估者的情况下,“LLM 作为评委”已成为评估 LLM 系统答案的流行解决方案。

“LLM 作为评委”的典型工作方式是创建一个“评委 LLM”,该评委 LLM 根据“生成器 LLM”的答案,按照给定的量表对该答案进行评分。该量表可以是数值的(例如 1-10 或 0-3 的量表)、二元的(例如 True 或 False)或定性的(例如“优秀”、“好”、“一般”、“差”)。然后,可以对评估数据集的所有问题中的此分数进行平均,以获得整体加权分数。

对于“LLM 作为评委”的指令提示,您可以创建自定义标准供 LLM 评估答案。例如,您可以创建特定的评分标准来检查响应是否准确、相关且有依据。Mistral 的模型可以有效地用作 LLM 系统的生成器和评委组件。

Blog   Evaluating Rag Judge LLM

RAG 三要素:一个更全面的评估框架

RAG 三要素是一个流行的评估框架,用于评估 RAG 系统,旨在从数据源检查 LLM 响应的可靠性和上下文完整性。它由 TruLens 引入,并创建了几个类似的框架,如 RAGAS,以便更定性地评估 RAG 系统。 

RAG 三要素侧重于三个关键领域

1. 上下文相关性:此指标检查检索到的文档是否与用户查询高度一致。它确保用于生成响应的信息相关且适当,为连贯且有用的答案奠定基础。

2. 有依据性:此指标验证生成的响应是否准确地基于检索到的上下文。它确保 LLM 的输出是事实且可靠的,从而降低产生烦人幻觉的风险。

3. 答案相关性:此指标评估最终响应对用户原始查询的处理程度。它确保生成的答案有用且切中要点,与用户意图一致并提供有价值的见解。

通过使用 RAG 三要素,评估者可以全面了解 LLM 的性能,发现潜在问题,并确保响应准确、可靠且上下文合理。此框架有助于在人类、AI 和知识库之间建立可信赖的交互。

Blog   Evaluating Rag Groundedness

这对于端到端评估 RAG LLM 系统特别有用,因为它包括评估检索和生成步骤。这不仅有助于评估 LLM 的答案,还有助于评估其相对于检索到的源数据的正确性。

结构化输出:一种实用的解决方案

自定义结构化输出是我们在 API 中最近推出的一个功能,它允许您控制 LLM 的输出格式,并以结构化的机器可读方式提供值,从而提高可靠性。

Mistral 的模型与结构化输出相结合,提供了一种实现 RAG 三要素并应对常见评估挑战的实用方法。通过为值设置清晰的标准和模式,结构化输出有助于您构建一个更可靠的“LLM 作为评委”,可用于评估 LLM 系统。

结构化输出为定义新的可重用标准并强制执行一种格式提供了一个完美的框架,该格式易于机器读取进行评估。

 

# Define separate classes for each criterion with detailed descriptions  
        class ContextRelevance(BaseModel): 
           explanation: str = Field(..., description=("Step-by-step reasoning explaining how the retrieved context aligns with the user's query. "
                           "Consider the relevance of the information to the query's intent and the appropriateness of the context "
                           "in providing a coherent and useful response."))
           score: Score = Field(..., description=SCORE_DESCRIPTION)
        
        
        class AnswerRelevance(BaseModel):
           explanation: str = Field(..., description=("Step-by-step reasoning explaining how well the generated answer addresses the user's original query. "
                           "Consider the helpfulness and on-point nature of the answer, aligning with the user's intent and providing valuable insights."))
           score: Score = Field(..., description=SCORE_DESCRIPTION)
        
        
        class Groundedness(BaseModel):
           explanation: str = Field(..., description=("Step-by-step reasoning explaining how faithful the generated answer is to the retrieved context. "
                           "Consider the factual accuracy and reliability of the answer, ensuring it is grounded in the retrieved information."))
           score: Score = Field(..., description=SCORE_DESCRIPTION)
        
        
        class RAGEvaluation(BaseModel):
           context_relevance: ContextRelevance = Field(..., description="Evaluation of the context relevance to the query, considering how well the retrieved context aligns with the user's intent." )
           answer_relevance: AnswerRelevance = Field(..., description="Evaluation of the answer relevance to the query, assessing how well the generated answer addresses the user's original query." )
           groundedness: Groundedness = Field(..., description="Evaluation of the groundedness of the generated answer, ensuring it is faithful to the retrieved context." )

 

结论

评估 LLM 系统对于开发可靠的 AI 应用至关重要。RAG 三要素以及 Mistral 的结构化输出提供了一个强大的框架,可以使用 LLM 作为评委来评估 LLM 性能。通过关注上下文相关性、有依据性和答案相关性,我们可以确保 LLM 的响应更准确、更有意义。这种方法增强了用户体验和 AI 驱动应用的可靠性,创造了与 AI 系统之间更可信赖的交互。

完整代码

你可以在此处找到 RAG 的 LLM 作为评委的完整代码: 
https://github.com/mistralai/cookbook/blob/main/mistral/evaluation/RAG_evaluation.ipynb

联系我们

对与 Mistral AI 团队进行更多定制工作感兴趣?联系我们以获取解决方案支持