Ragas Ragas
stable · 中文译文
中文译文 · 原文:https://docs.ragas.io/en/stable/getstarted/evals/ · 许可证 Apache-2.0

评测一个简单的 LLM 应用

本指南旨在说明用 ragas 测试并评测 LLM 应用的简单工作流。假定你对 AI 应用构建与评测仅有最少了解。安装 ragas 请参阅我们的安装说明

获取可运行示例

要最快看到这些概念实际运作,可用 quickstart 命令创建一个项目:

uvx ragas quickstart rag_eval
cd rag_eval
uv sync
pip install ragas
ragas quickstart rag_eval
cd rag_eval
uv sync

这会生成一个带有示例代码的完整项目。跟着本指南走,就能理解生成代码里发生了什么。开始吧!

项目结构

下面是为你创建的内容:

rag_eval/
├── README.md             # Project documentation and setup instructions
├── pyproject.toml        # Project configuration for uv and pip
├── evals.py              # Your evaluation workflow
├── rag.py                # Your RAG/LLM application
├── __init__.py           # Makes this a Python package
└── evals/                # Evaluation artifacts
    ├── datasets/         # Test data files (optional)
    ├── experiments/      # Results from running evaluations (CSV files saved here)
    └── logs/             # Evaluation execution logs

重点关注的文件:

  • evals.py - 你的评测工作流,包含数据集加载与评测逻辑
  • rag.py - 你的 RAG/LLM 应用代码(查询引擎、检索等)

理解代码

在生成项目的 evals.py 文件中,你会看到主要工作流模式:

  1. 加载数据集 - 用 SingleTurnSample 定义测试用例
  2. 查询 RAG 系统 - 从你的应用获取响应
  3. 评测响应 - 对照标准答案验证响应
  4. 展示结果 - 在控制台显示评测摘要
  5. 保存结果 - 自动保存为 evals/experiments/ 目录下的 CSV

模板提供了可自定义的模块化函数:

from ragas.dataset_schema import SingleTurnSample
from ragas import EvaluationDataset

def load_dataset():
    """Load test dataset for evaluation."""
    data_samples = [
        SingleTurnSample(
            user_input="What is Ragas?",
            response="",  # Will be filled by querying RAG
            reference="Ragas is an evaluation framework for LLM applications",
            retrieved_contexts=[],
        ),
        # Add more test cases...
    ]
    return EvaluationDataset(samples=data_samples)

你可以用指标和更复杂的评测逻辑扩展它。了解更多关于 Ragas 中的评测。

选择 LLM 提供商

你的 quickstart 项目默认在 _init_clients() 函数中初始化 OpenAI LLM。你可以通过 llm_factory 轻松换成任意提供商:

设置你的 OpenAI API key:

export OPENAI_API_KEY="your-openai-key"

在你的 evals.py 的 _init_clients() 函数中:

from ragas.llms import llm_factory

llm = llm_factory("gpt-4o")

这已经在你的 quickstart 项目中设置好了!

设置你的 Anthropic API key:

export ANTHROPIC_API_KEY="your-anthropic-key"

在你的 evals.py 的 _init_clients() 函数中:

from ragas.llms import llm_factory

llm = llm_factory("claude-3-5-sonnet-20241022", provider="anthropic")

设置你的 Google 凭证:

export GOOGLE_API_KEY="your-google-api-key"

在你的 evals.py 的 _init_clients() 函数中:

from ragas.llms import llm_factory

llm = llm_factory("gemini-1.5-pro", provider="google")

在本地安装并运行 Ollama,然后在你的 evals.py 的 _init_clients() 函数中:

from ragas.llms import llm_factory

llm = llm_factory(
    "mistral",
    provider="ollama",
    base_url="http://localhost:11434"  # Default Ollama URL
)

对于任何具备 OpenAI 兼容 API 的 LLM:

from ragas.llms import llm_factory

llm = llm_factory(
    "model-name",
    api_key="your-api-key",
    base_url="https://your-api-endpoint"
)

更多细节,请了解 LLM 集成。

使用预置指标

ragas 提供了面向常见评测任务的预置指标。例如,Aspect Critique(方面批判) 使用 DiscreteMetric 评测输出的任意方面:

from ragas.metrics import DiscreteMetric
from ragas.llms import llm_factory

# Setup your evaluator LLM
evaluator_llm = llm_factory("gpt-4o")

# Create a custom aspect evaluator
metric = DiscreteMetric(
    name="summary_accuracy",
    allowed_values=["accurate", "inaccurate"],
    prompt="""Evaluate if the summary is accurate and captures key information.

Response: {response}

Answer with only 'accurate' or 'inaccurate'.""",
    llm=evaluator_llm
)

# Score your application's output
score = await metric.ascore(
    response="The summary of the text is..."
)
print(f"Score: {score.value}")  # 'accurate' or 'inaccurate'
print(f"Reason: {score.reason}")

像这样的预置指标让你不必从零定义评测逻辑。浏览全部可用指标。

信息

ragas 中还有许多其他类型的指标(带或不带 reference),如果都不适合你的场景,你也可以创建自己的指标。要进一步了解,请查看更多关于指标的内容。

在数据集上评测

在你的 quickstart 项目中,你会在 load_dataset() 函数里看到如何用多个样本创建测试数据:

from ragas import Dataset

# Create a dataset with multiple test samples
dataset = Dataset(
    name="test_dataset",
    backend="local/csv",  # Can also use JSONL, Google Drive, or in-memory
    root_dir=".",
)

# Add samples to the dataset
data_samples = [
    {
        "user_input": "What is ragas?",
        "response": "Ragas is an evaluation framework...",
        "expected": "Ragas provides objective metrics..."
    },
    {
        "user_input": "How do metrics work?",
        "response": "Metrics score your application...",
        "expected": "Metrics evaluate performance..."
    },
]

for sample in data_samples:
    dataset.append(sample)

# Save to disk
dataset.save()

这样你就有了多个测试用例,而不是一次只评测一个示例。了解更多关于数据集与实验。

生成的项目在 evals/datasets/ 文件夹中包含示例数据——你可以编辑这些文件以添加更多测试用例。

想借助评测改进你的 AI 应用?

过去 2 年里,我们见过并用评测帮助改进了许多 AI 应用。

我们正在把这些知识压缩进一个产品,用评测循环取代凭感觉检查,让你能专注于打造出色的 AI 应用。

如果你想借助评测改进并规模化你的 AI 应用。

🔗 预约一个时段,或写信给我们:founders@vibrantlabs.com。

接下来