RAGAS 评估

AI摘要
这是一篇关于如何将RAGAS评估框架集成到AI项目中的技术教程。文章详细介绍了五个步骤:安装与准备、准备评估数据集、配置评估模型、编写完整评估脚本以及解读评估结果。内容属于知识分享,旨在指导开发者通过数据驱动的方式优化RAG系统的忠实性、答案相关性和上下文精确度等指标。

将 RAGAS 评估框架集成到你的 my_ai_platform 项目中,主要可以分为四个步骤。

📦 第一步:安装与准备

首先,在项目环境中安装 RAGAS。

pip install ragas

然后,在你的项目根目录下,创建一个独立的评估目录来存放所有相关文件。

mkdir -p evals/datasets evals/experiments

创建一个名为 evals.py 的 Python 文件,这是评估流程的核心。

⚙️ 第二步:准备评估数据集

评估数据集是测试的基础。你需要准备一个包含以下内容的测试集:

  • question:要测试的问题列表。
  • ground_truth:对应问题的标准答案。
  • contexts:为回答该问题而检索到的上下文文本列表。

你可以在 evals/datasets/ 目录下创建一个 test_data.csv 文件来存储这些数据。建议准备至少 15-20 个样本,以确保评估结果具有统计意义。

🧠 第三步:配置评估模型(LLM)

RAGAS 在评估时本身需要调用一个 LLM。你需要选择一个 LLM 作为“评估者”。你可以在 evals.py 中配置:

  • 使用 OpenAI(最直接)

    import os
    from ragas.llms import llm_factory
    os.environ["OPENAI_API_KEY"] = "你的OpenAI API密钥" # 
    llm = llm_factory("gpt-4o") # 
  • 使用兼容 OpenAI 接口的服务(如阿里云百炼)

    from openai import OpenAI
    from ragas.llms import llm_factory
    
    client = OpenAI(
        api_key="你的API密钥",
        base_url="你的API基础URL" # 例如:阿里云百炼的兼容模式地址
    )
    llm = llm_factory("你的模型名称", provider="openai", client=client) # 

📝 第四步:编写完整的评估脚本

将以下代码整合到你的 evals.py 文件中,完成一个完整的评估流程。

1. 导入必要的库

import os
import pandas as pd
from ragas import EvaluationDataset, evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_precision
from ragas.llms import llm_factory
from ragas.embeddings import embedding_factory
# 导入你自己的 RAG 系统
from src.application.services.rag_service import RAGService
from src.infrastructure.llm.alibaba_llm import create_alibaba_llm
# ... 其他必要的导入 ...

2. 加载并初始化你的 RAG 系统

你需要实例化你的 RAGService,以便对测试集中的每个问题进行查询。这部分代码需要根据你的项目结构来写,但核心是获得一个可以调用的 ask 方法。

# 初始化你的 RAG 系统(示例)
# llm = create_alibaba_llm(...)
# retriever = ...
# rag_engine = RAGService(llm_client=llm, retriever=retriever)

3. 加载和准备数据集

这一步从 CSV 文件加载测试数据,并转换为 RAGAS 需要的 EvaluationDataset 格式。

def load_test_dataset():
    # 从 CSV 文件加载数据
    df = pd.read_csv("evals/datasets/test_data.csv")
    samples = []
    for _, row in df.iterrows():
        # 假设 CSV 有 question, ground_truth, contexts 三列
        # contexts 可以是字符串,RAGAS 会处理
        samples.append({
            "user_input": row["question"],
            "reference": row["ground_truth"],
            "retrieved_contexts": [row["contexts"]]  # 注意:这里需要是列表
        })
    # 转换为 RAGAS 的 EvaluationDataset
    return EvaluationDataset.from_list(samples)

4. 执行评估

这是评估流程的核心。它会遍历数据集,查询你的 RAG 系统,然后使用选定的指标进行计算。

# 设置评估用的 LLM 和 Embeddings(配置你的阿里云百炼或 OpenAI)
# llm = llm_factory(...)
# embeddings = embedding_factory(...)

def run_evaluation():
    # 1. 加载数据集
    dataset = load_test_dataset()

    # 2. 初始化评估指标
    metrics = [
        faithfulness,          # 忠实性
        answer_relevancy,      # 答案相关性
        context_precision,     # 上下文精确度
        # context_recall,      # 上下文召回率,需要 ground_truth
    ]

    # 3. 运行评估
    # 注意:这里需要传入你的 RAG 系统的查询函数
    # 以及配置好的 llm 和 embeddings
    result = evaluate(
        dataset=dataset,
        metrics=metrics,
        # llm=llm,  # 如果使用自定义 LLM
        # embeddings=embeddings,  # 如果使用自定义 Embeddings
    )

    # 4. 保存和展示结果
    df_result = result.to_pandas()
    df_result.to_csv("evals/experiments/latest_results.csv", index=False) # 
    print(df_result)

📊 第五步:如何解读评估结果

评估完成后,你会得到一组分数。以下是这些分数的含义:

  • faithfulness (忠实性):衡量答案是否基于提供的上下文,得分越高,幻觉越少。
  • answer_relevancy (答案相关性):衡量答案与问题的相关程度,得分越高,回答越切题。
  • context_precision (上下文精确度):衡量检索到的上下文中,有多少是真正相关的。
  • context_recall (上下文召回率):衡量检索到的上下文是否覆盖了回答问题所需的全部信息。

🚀 运行与迭代优化

要运行评估,只需在终端执行:

python evals.py

通过观察这些指标的变化,你可以系统地改进你的 RAG 系统:

  1. faithfulness:说明答案存在幻觉,应优化 Prompt 或加强检索。
  2. answer_relevancy:说明答案不相关,需优化 Prompt 或改进生成逻辑。
  3. context_precision / recall:说明检索环节有问题,需优化检索器或分块策略。

通过这种方式,你就可以用数据驱动的方式,持续迭代和优化你的 RAG 机器人了。

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!