跳到主要内容

创建和加载私有数据集

本文档介绍如何创建、上传和列出您的数据集,供其他Pinecone用户使用。本指南展示如何使用您自己的存储创建自己的数据集;您无法将自己的数据集上传到Pinecone数据集目录中。

要了解如何使用现有的Pinecone数据集,请参阅使用数据集

创建数据集

依赖关系

Pinecone数据集项目使用poetry来管理依赖项,支持Python版本3.8+。

要安装Poetry,请从项目根目录运行以下命令:

Shell

poetry install --with dev

数据集元数据

要创建公共数据集,您可能需要生成数据集元数据。

示例

以下示例创建一个包含用于数据集test_dataset的元数据的元数据对象meta

Python

from pinecone_datasets.catalog import DatasetMetadata

meta = DatasetMetadata(
name="test_dataset",
created_at="2023-02-17 14:17:01.481785",
documents=2,
queries=2,
source="manual",
bucket="LOCAL",
task="unittests",
dense_model={"name": "bert", "dimension": 3},
sparse_model={"name": "bm25"},
)

如果您打算列出您的数据集,您可以使用以下命令保存数据集元数据。需要写入位置的权限。

Python

dataset._save_metadata("non-listed-dataset", meta)

查看数据集模式

要查看完整的模式,请运行以下命令:

Python

meta.schema()

运行测试

要在本地运行测试,请运行以下命令:

Shell

poetry run pytest --cov pinecone_datasets

上传和列出数据集

Pinecone数据集可以从任何存储桶中加载数据集,只需使用s3、gcs或本地权限的默认访问控制即可。

Pinecone数据集希望数据上传的目录结构如下:

图1:Pinecone数据集的预期目录结构

├── base_path # 所有数据集的路径

│ ├── dataset_id # 数据集的名称

│ │ ├── metadata.json # 数据集元数据(可选,仅列出)

│ │ ├── documents # 数据集文档

│ │ │ ├── file1.parquet

│ │ │ └── file2.parquet

│ │ ├── queries # 数据集查询

│ │ │ ├── file1.parquet

│ │ │ └── file2.parquet

└── ...

Pinecone 数据集扫描存储并列出每个带有元数据文件的数据集。

示例

下面显示了示例 s3 存储桶地址的格式,用于数据集元数据文件:

s3://my-bucket/my-dataset/metadata.json

使用您自己的数据集

默认情况下,Pinecone客户端使用GCS上Pinecone的公共数据集存储桶。您可以通过设置PINECONE_DATASETS_ENDPOINT环境变量来使用自己的存储桶。

示例

以下export命令将默认的数据集存储终端点更改为gs://my-bucket。现在,调用list_datasetsload_dataset扫描该存储桶并列出所有数据集。

Python

export PINECONE_DATASETS_ENDPOINT="gs://my-bucket"

您还可以使用s3://作为前缀访问s3存储桶。

认证您自己的存储桶

Pinecone数据集支持GCS和S3存储桶,使用fsspec实现提供的默认身份验证: GCS的gcsfs和AWS的s3fs。

使用密钥/密钥方法认证到AWS s3存储桶,请按照以下步骤进行:

  1. 通过将环境变量PINECONE_DATASETS_ENDPOINT设置为您的存储桶的s3地址来设置新的端点。

示例

Shell

export PINECONE_DATASETS_ENDPOINT="s3://my-bucket"

  1. 使用keysecret参数将您的凭据传递给list_datasetsload_dataset函数。

示例

Python

st = list_datasets(
key=os.environ.get("S3_ACCESS_KEY"),
secret=os.environ.get("S3_SECRET"),
)

ds = load_dataset(
"test_dataset",
key=os.environ.get("S3_ACCESS_KEY"),
secret=os.environ.get("S3_SECRET"),
)

访问未列出的数据集

要访问未列出的数据集,请直接使用Dataset构造函数加载它。

示例

下面的代码加载了名为non-listed-dataset的数据集。

Python

from pinecone_datasets import Dataset

dataset = Dataset("non-listed-dataset")

下一步是什么