使用Ragas与Langfuse评估RAG系统性能的完整指南

使用Ragas与Langfuse评估RAG系统性能的完整指南

【免费下载链接】ragas Evaluation framework for your Retrieval Augmented Generation (RAG) pipelines 【免费下载链接】ragas 项目地址: https://gitcode.com/gh_mirrors/ra/ragas

引言

在构建检索增强生成(RAG)系统时,评估系统性能是一个关键但具有挑战性的任务。本文将详细介绍如何利用Ragas和Langfuse这两个强大工具的组合,对RAG系统进行全面评估和监控。

工具介绍

Ragas是什么?

Ragas是一个专门为RAG系统设计的开源评估框架。它提供了一系列参考无关(reference-free)的评估指标,这意味着你不需要预先准备标准答案(ground truth)就能评估系统性能。Ragas特别适合生产环境中的持续监控和评估。

Langfuse是什么?

Langfuse是一个开源的LLM应用监控平台,提供三大核心功能:

  1. 调用链追踪(Tracing):记录LLM应用的完整执行流程
  2. 提示词管理(Prompt Management):集中管理各种提示词模板
  3. 评估系统(Evaluation):支持自定义评分和模型评估

为什么选择Ragas+Langfuse组合?

这一组合为RAG系统评估提供了完整解决方案:

  1. 全面指标覆盖:Ragas提供专业评估指标,Langfuse提供可视化分析
  2. 生产友好:无需标准答案即可评估,适合真实生产环境
  3. 灵活部署:支持单次调用评估和批量采样评估两种模式

环境准备

安装必要依赖

%pip install datasets ragas llama_index python-dotenv --upgrade

配置API密钥

import os

# Langfuse项目密钥
os.environ["LANGFUSE_SECRET_KEY"] = "sk-..."
os.environ["LANGFUSE_PUBLIC_KEY"] = "pk-..."

# OpenAI API密钥
# os.environ["OPENAI_API_KEY"] = "sk-..."

评估数据集准备

我们使用一个预处理的QA数据集,包含以下字段:

  • question: 问题列表
  • answer: RAG系统生成的答案
  • contexts: 提供给LLM的上下文
  • ground_truth: 标准答案(可选)
from datasets import load_dataset
amnesty_qa = load_dataset("explodinggradients/amnesty_qa", "english_v2")["eval"]

评估指标详解

Ragas提供了多种专业评估指标,我们重点介绍四个核心指标:

  1. Faithfulness(忠实度)

    • 评估生成答案与提供上下文的事实一致性
    • 检测是否存在"幻觉"(hallucination)问题
  2. Answer Relevancy(答案相关性)

    • 评估答案与问题的直接相关程度
    • 检测答案是否切题、简洁
  3. Context Precision(上下文精确度)

    • 评估相关上下文是否被优先排序
    • 反映检索系统的排序质量
  4. Aspect Critique(方面评价)

    • 自定义评价维度(如有害性、正确性等)
    • 提供特定维度的细粒度评估
from ragas.metrics import faithfulness, answer_relevancy, context_precision
from ragas.metrics.critique import harmfulness

metrics = [faithfulness, answer_relevancy, context_precision, harmfulness]

评估流程实现

1. 初始化评估指标

from ragas.run_config import RunConfig
from ragas.metrics.base import MetricWithLLM, MetricWithEmbeddings
from langchain_openai.chat_models import ChatOpenAI
from langchain_openai.embeddings import OpenAIEmbeddings
from ragas.llms import LangchainLLMWrapper
from ragas.embeddings import LangchainEmbeddingsWrapper

def init_ragas_metrics(metrics, llm, embedding):
    for metric in metrics:
        if isinstance(metric, MetricWithLLM):
            metric.llm = llm
        if isinstance(metric, MetricWithEmbeddings):
            metric.embeddings = embedding
        run_config = RunConfig()
        metric.init(run_config)

llm = ChatOpenAI()
emb = OpenAIEmbeddings()
init_ragas_metrics(metrics, 
                  llm=LangchainLLMWrapper(llm),
                  embedding=LangchainEmbeddingsWrapper(emb))

2. 单次调用评估实现

from langfuse import Langfuse
langfuse = Langfuse()

async def score_with_ragas(query, chunks, answer):
    scores = {}
    for m in metrics:
        scores[m.name] = await m.ascore(
            row={"question": query, "contexts": chunks, "answer": answer}
        )
    return scores

3. 集成到RAG流程中

from langfuse.decorators import observe, langfuse_context
from asyncio import run
import hashlib

# 示例数据映射
q_to_c = {}  # 问题到上下文的映射
q_to_a = {}  # 问题到答案的映射
for row in amnesty_qa:
    q_hash = hash_string(row["question"])
    q_to_c[q_hash] = row["contexts"]
    q_to_a[q_hash] = row["answer"]

@observe()
def retriever(question: str):
    return q_to_c[question]

@observe()
def generator(question):
    return q_to_a[question]

@observe()
def rag_pipeline(question):
    q_hash = hash_string(question)
    contexts = retriever(q_hash)
    generated_answer = generator(q_hash)
    
    # 评估当前调用
    score = run(score_with_ragas(question, contexts, answer=generated_answer))
    for s in score:
        langfuse_context.score_current_trace(name=s, value=score[s])
    return generated_answer

评估结果分析

在Langfuse平台上,你可以:

  1. 查看每个调用的详细评分
  2. 分析不同时间段的性能趋势
  3. 识别低质量样本进行针对性优化
  4. 对比不同用户群体的体验差异

生产环境建议

  1. 评估策略选择

    • 全量评估:每个调用都评估,数据全面但成本高
    • 抽样评估:定期随机抽样评估,成本低但可能遗漏问题
  2. 性能优化

    • 将评分过程异步化,避免阻塞主流程
    • 对关键指标设置告警阈值
  3. 持续改进

    • 定期分析评估结果,识别系统弱点
    • 建立评估基准,跟踪优化效果

总结

Ragas与Langfuse的组合为RAG系统提供了从评估到监控的完整解决方案。通过本文介绍的方法,你可以:

  • 全面评估RAG系统的各项关键指标
  • 实时监控生产环境中的系统表现
  • 基于数据驱动持续优化系统性能

这种评估方法特别适合需要持续改进的复杂RAG系统,帮助团队在保证质量的同时快速迭代。

【免费下载链接】ragas Evaluation framework for your Retrieval Augmented Generation (RAG) pipelines 【免费下载链接】ragas 项目地址: https://gitcode.com/gh_mirrors/ra/ragas

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值