如何使用 DuckDB 直接访问 15 万+ Hugging Face 数据集并使用 GPT-4o 查询

今天,DuckDB 和 Hugging Face 共同宣布了一项新版本,即在 DuckDB 中使用 hf:// 前缀访问数据集…

Howard Chi
Wren AI 联合创始人
更新于
2024 年 8 月 20 日
2024 年 11 月 25 日
7
分钟阅读
发布于
2024 年 5 月 29 日

今天,DuckDB 和 Hugging Face 共同宣布了一项新版本,即在 DuckDB 中使用 hf:// 前缀访问 Hugging Face 仓库中的数据集。这为使 AI 和 ML 领域的数据更加易于访问和轻量化带来了新的机会浪潮。

您可以在此处查看完整公告 “使用 DuckDB 访问来自 Hugging Face 的 15 万+ 数据集”

DuckDB 与 Hugging Face 合作的公告。

过去,数据仓库中的大多数数据来自组织内部,例如事务系统、企业资源规划 (ERP) 应用程序、客户关系管理 (CRM) 应用程序以及类似来源。

这些数据的结构、体量和速率相当可预测且已知。然而,随着云技术的兴起,越来越多的数据现在来自外部来源,这些来源的可控性较低,例如应用程序日志、Web 应用程序、移动设备、社交媒体以及物联网的传感器数据。这些数据通常以无模式的半结构化格式到达。传统的数据仓库解决方案正努力处理这种新型数据,因为它们依赖于深度的 ETL(提取、转换、加载)管道和物理调优,这假设数据是可预测的、变化缓慢的、易于分类的,且主要来自内部来源。

使用 DuckDB 访问来自 Hugging Face 的 15 万+ 数据集,并使用 GPT-4o 查询数据

在今天的教程中,我们将使用 DuckDB 直接从 Hugging Face 加载数据,而无需将其下载到您的计算机,并使用 Wren AI 作为连接到 GPT-4o 的接口,用户可以向数据集提出业务问题并获得答案;通过这种方式,您可以使用 hf:// 路径访问 Hugging Face 数据集,通过语义建模定义语义含义,并询问有关数据集的任何问题,LLM GPT-4o 将理解您的查询并进行查询以检索和回答。

什么是 DuckDB

DuckDB 是一个快速的进程内分析型数据库,它在数据和 AI 社区获得了广泛的应用,例如 Hugging Face 提供了 Hugging Face 数据集的 DuckDB 集成。

如今,DuckDB 是 GitHub 上最受欢迎的数据库之一,并且在 DB-Engine 排名中也保持着良好的势头。

DuckDB 在 2024 年 1 月的 GitHub 星标数量超过了 PostgreSQL。
DuckDB 的 DB Engine 排名

借助 DuckDB,您可以轻松指向远程位置的文件,例如 CSV、Excel、JSON、parquet 等,而无需从远程位置(例如 Amazon S3、Azure blob storage、Google Cloud Storage 等)移动文件,即可对其进行分析。

Hugging Face 数据集

Hugging Face 数据集提供了来自不同来源的广泛数据集,包括学术研究、流行基准任务和真实世界应用程序,拥有超过 15 万个人工智能数据集。这些数据集经过精心策划、处理和标准化,以确保一致性和易用性,从而实现对用于训练和评估 AI 模型的数据集的访问、操作和探索的民主化。

Hugging Face 数据集

在本教程中,我们从 CORGIS 项目上传了一个有趣的“亿万富翁 CSV 文件”。CORGIS 项目收集了一些有趣的数据集,例如 COVID-19、亿万富翁、航空公司等

在 Hugging Face 上查看我们在本教程中使用的数据集——亿万富翁数据集

让我们开始吧!🚀

使用 GPT-4o 通过 DuckDB 查询 Hugging Face 数据集

从 Hugging Face 获取数据集 URL

首先,在此处查看 Hugging Face 亿万富翁数据集

Hugging Face 数据集页面

使用 hf:// 路径读取

处理数据时,您经常需要读取各种格式(例如 CSV、JSONL 和 Parquet)的文件。

现在,可以使用如下所示的 hf:// 路径进行查询

hf://datasets/⟨my_username⟩/⟨my_dataset⟩/⟨path_to_file⟩

在本例中,您可以使用以下 URL 获取数据集

hf://datasets/chilijung/Billionaires/billionaires.csv

安装 Wren AI

Wren AI 是一个开源的 Text-to-SQL 解决方案,数据团队无需编写 SQL,即可通过提问业务问题更快地获得结果和见解。

接下来,让我们开始安装 Wren AI;在开始之前,您需要安装 Docker。

1. 在您的本地计算机上安装 Docker Desktop

请确保 Docker Desktop 的版本至少 >= 4.17。

2. 准备一个 OpenAI API 密钥

请确保您的 Open API 密钥具有 完全权限(全部)

访问 OpenAI 开发者平台

进入 OpenAI API 密钥页面

为 Wren AI 生成一个新的具有完全权限的 API 密钥。

生成您的具有完全权限的 OpenAI API 密钥

3. 安装 Wren AI Launcher

如果您使用的是 Mac(使用 Windows 或 Linux 请查看此处),输入以下命令安装最新的 Wren AI Launcher。

curl -L https://github.com/Canner/WrenAI/releases/latest/download/wren-launcher-darwin.tar.gz | tar -xz && ./wren-launcher-darwin

然后启动器将询问您的 OpenAI API 密钥,如下所示,将您的密钥粘贴到命令中并按 Enter。

选择 gpt-4o

现在您可以选择 OpenAI 生成模型的 gpt-4ogpt-4-turbogpt-3.5-turbo

使用 CLI 安装 Wren AI

现在您将看到我们正在您的计算机上运行 docker-compose;安装完成后,工具将自动打开您的浏览器以访问 Wren AI。

在您的计算机上运行 Docker Compose

设置 DuckDB 连接

当终端成功安装后,它将启动浏览器

首次启动 Wren AI

在 UI 中,选择 DuckDB,它将询问您连接详情。

使用 hf:// 路径连接到 DuckDB

在这里,您可以输入数据集的显示名称,例如 Billionaire,然后在 Initial SQL statements 中输入以下脚本。

该 URL 是我们之前展示的 hf:// 路径

CREATE TABLE billionaires AS 
	SELECT * FROM 'hf://datasets/chilijung/Billionaires/billionaires.csv';

然后点击 Next。在下一步中,选择您要在 Wren AI 中使用的表。

选择“Billionaires”表

选择表并点击 Next!

定义关系

在本例中,我们只有一个表,因此您可以跳过或直接点击 Finish;但如果您有多个表,您可以在此处定义语义关系,以帮助 LLM 理解并生成更准确的 SQL JOIN。

现在一切就绪了!

主页:提问页面

Wren AI UI 上的语义建模

在此示例中,我们只有一个模型(表),因此当您点击顶部的 Modeling 页面时,您将看到以下屏幕

建模页面

现在点击 billionaires 模型,右侧会弹出一个抽屉。

CORGIS 数据集详细描述了每一列,我们可以将其添加到语义模型中。

每一列的描述

向模型添加语义上下文

将描述添加到建模页面

具有复杂模式的数据建模

如果您有多个模型,可以通过以下界面进行建模。

通过 Wren AI UI 进行语义建模

借助 Wren AI UI,您可以在语义上下文中对数据进行建模。这包括添加描述、定义关系、包含计算等。通过提供此上下文,您可以帮助 LLM 理解您的业务术语和 KPI 定义,减少合并多个表时的错误。LLM 可以通过学习关系(例如表之间是 多对一一对多 还是 多对多 关系)来理解数据结构层次。

您可以在 Wren AI 中通过计算定义您的业务 KPI 和公式。

在数据模型中添加计算

添加表之间的语义关系。

在数据模型中添加关系。

开始提问

现在让我们切换到 Home 页面,您可以在其中启动新线程并开始向 Wren AI 提问。

然后它会根据您的问题生成最佳的三个选项,如下所示

您可以开始向 Wren AI 提出任何问题

选择其中一个选项,它将生成如下结果,并带有逐步细分和解释。

根据结果提出后续问题

后续问题

差不多就是这样了!

现在,使用 hf:// 路径,您可以通过 Wren AI 直接连接到 Hugging Face 上的多达 150,000 多个数据集,无需费心处理文件!是不是很棒?

如果您喜欢我们的工作,请在 GitHub 上支持并为我们加星!

🚀 GitHub:https://github.com/canner/wrenai

如果您喜欢这篇文章,别忘了给 ⭐ Wren AI 在 Github 上点赞 ⭐,一如既往,感谢您的阅读。

立即使用 AI 提升您的数据能力?!

谢谢!您的提交已收到!
哎呀!提交表单时出错了。