跳到主要内容

RAGAS

RAGAS (检索增强生成评估) 是一个专为 LLM 应用设计的评估框架。MLflow 的 RAGAS 集成允许您使用 RAGAS 指标作为 MLflow 评分器来评估检索质量、答案生成以及 LLM 应用的其他方面。

先决条件

RAGAS 评分器需要 ragas

bash
pip install ragas

快速入门

您可以直接调用 RAGAS 评分器

python
from mlflow.genai.scorers.ragas import Faithfulness

scorer = Faithfulness(model="openai:/gpt-4")
feedback = scorer(trace=trace)

print(feedback.value) # Score between 0.0 and 1.0
print(feedback.rationale) # Explanation of the score

或者在 mlflow.genai.evaluate 中使用它们

python
import mlflow
from mlflow.genai.scorers.ragas import Faithfulness, ContextPrecision

traces = mlflow.search_traces()
results = mlflow.genai.evaluate(
data=traces,
scorers=[
Faithfulness(model="openai:/gpt-4"),
ContextPrecision(model="openai:/gpt-4"),
],
)

可用的 RAGAS 评分器

RAGAS 评分器根据其评估重点进行分类

RAG (检索增强生成) 指标

评估 RAG 系统中的检索质量和答案生成

评分器它评估什么?RAGAS 文档
ContextPrecision相关检索到的文档是否比不相关的文档排名更高?链接
NonLLMContextPrecisionWithReference使用参考答案的上下文精度非 LLM 版本链接
ContextRecall检索上下文是否包含回答查询所需的所有信息?链接
NonLLMContextRecall使用参考答案的上下文召回率非 LLM 版本链接
ContextEntityRecall来自预期答案的实体是否出现在检索到的上下文中?链接
NoiseSensitivity模型对上下文中无关信息的敏感度如何?链接
Faithfulness输出是否与检索上下文在事实上一致?链接

自然语言比较

通过自然语言比较来评估答案质量

评分器它评估什么?RAGAS 文档
FactualCorrectness与预期答案相比,输出是否在事实上是正确的?链接
NonLLMStringSimilarity输出和预期答案之间的字符串相似度链接
BleuScore用于文本比较的 BLEU 分数链接
ChrfScore用于文本比较的 CHRF 分数链接
RougeScore用于文本比较的 ROUGE 分数链接
StringPresence输出中是否存在特定字符串?链接
ExactMatch输出是否与预期输出完全匹配?链接

通用

适用于各种用例的灵活评估指标

评分器它评估什么?RAGAS 文档
AspectCritic使用 LLM 评估输出的特定方面链接
RubricsScore根据预定义的评分标准为输出评分链接
InstanceRubrics根据特定于实例的评分标准为输出评分链接

其他任务

特定任务的专用指标

评分器它评估什么?RAGAS 文档
SummarizationScore文本摘要的质量链接

按名称创建评分器

您还可以使用 get_scorer 动态创建 RAGAS 评分器

python
from mlflow.genai.scorers.ragas import get_scorer

# Create scorer by name
scorer = get_scorer(
metric_name="Faithfulness",
model="openai:/gpt-4",
)

feedback = scorer(trace=trace)

配置

RAGAS 评分器接受特定于指标的参数。任何额外的关键字参数都将直接传递给 RAGAS 指标构造函数

python
from mlflow.genai.scorers.ragas import Faithfulness, ContextPrecision, ExactMatch

# LLM-based metric with model specification
scorer = Faithfulness(model="openai:/gpt-4")

# Non-LLM metric (no model required)
deterministic_scorer = ExactMatch()

有关特定于指标的参数和高级用法,请参阅 RAGAS 文档

后续步骤