为数据集而生的 SQL 控制台

随着数据集的使用量急剧增加,Hugging Face 社区已经变成了众多数据集默认存放的仓库。每月,海量数据集被上传到社区,这些数据集亟需有效的查询、过滤和发现。

0ce82675e07f5661e8114adb867444bc.png
Dataset Monthly Creations

每个月在 Hugging Face Hub 创建的数据集

我们现在非常激动地宣布,您可以直接在 Hugging Face 社区中对您的数据集进行 SQL 查询!

数据集的 SQL 控制台介绍

在每个公共数据集中,您应该会看到一个新的 SQL 控制台标签。只需单击即可打开 SQL 控制台以查询该数据集。

查询 Magpie-Ultra 数据集来获取优秀的高质量推理指令。

所有的操作都在浏览器中完成,控制台还配备了一些实用的功能:

  • 完全的本地化支持: SQL 控制台由DuckDBWASM 驱动,因此您可以无需任何依赖即可查询您的数据集。https://duckdb.org/

  • 完整的 DuckDB 语法支持: DuckDB 支持全面的 SQL 语句,并包含许多内置函数,如正则表达式、列表、JSON、嵌入等。您会发现 DuckDB 的语法与 PostgreSQL 非常相似。

  • 结果导出: 您可以将查询的结果导出为 parquet 格式。

  • 分享: 您可以使用链接分享公共数据集的查询结果。

工作原理

Parquet 格式转换

大多数在 Hugging Face 上的数据集都存储为 Parquet 格式,这是一种优化了性能和存储效率的列式数据格式。Hugging Face 的  数据集视图 和 SQL 控制台会直接从数据集的 Parquet 文件中加载数据。如果数据集是以其他格式存储的,则前 5GB 自动转换为 Parquet 格式。您可以在Dataset Viewer Parquet API 文档中找到更多关于 Parquet 转换过程的信息。

Dataset Viewer Parquet API 文档https://hf.co/docs/dataset-viewer/en/parquet

使用这些 Parquet 文件,SQL 控制台会为您创建视图,基于数据集的划分和配置供您进行查询。

DuckDB WASM 🦆引擎

DuckDB WASM是驱动 SQL 控制台的引擎。它是一个在浏览器中运行于 Web Assembly 的进程内数据库引擎,无需服务器或后端。

DuckDB WASMhttps://duckdb.org/docs/api/wasm/overview.html

仅在浏览器中运行,它为用户提供最大程度的灵活性,可以自由查询数据而不需要任何依赖项。这也使得通过简单的链接分享可复现的结果变得非常简单。

你可能在想,“这是否适用于大数据集?”答案是“当然可以!

以下是对OpenCo7/UpVoteWeb数据集的查询,该数据集经过 Parquet 格式转换后有 12.6M 行。

OpenCo7/UpVoteWebhttps://hf.co/datasets/OpenCo7/UpVoteWeb

c70f893ba458cea9d198204c3fbdb680.png
Reddit Movie Suggestions

您可以看到,我们在不到 3 秒内的时间内收到了简单过滤查询的结果。

虽然基于数据集的大小和查询的复杂度查询可能会发生很长时间,您会感到吃惊您用 SQL 控制台做到的事情。

就像任何技术一样,也有其局限性:

  • SQL 控制台可以处理许多查询。然而内存限制约为 3GB,因此有可能超出内存并无法处理查询 (提示: 尝试使用过滤器来减少您正在查询的数据量,并结合使用 LIMIT )。

  • 尽管 DuckDB WASM 非常强大,但它并不完全与 DuckDB 功能一致。例如,DuckDB WASM 尚未支持hf:// 协议以查询数据集。https://github.com/duckdb/duckdb-wasm/discussions/1858

示例: 将数据集从 Alpaca 转换为对话格式

现在我们已经介绍了 SQL 控制台,让我们通过一个实际例子来实践一下。当微调大型语言模型时,我们经常需要处理不同的数据格式。其中特别流行的一种格式是对话式格式,在这种格式中,每一行代表用户与模型之间的多轮对话。SQL 控制台可以帮助我们高效地将数据转换为这种格式。让我们看看如何使用 SQL 将 Alpaca 数据集转换为对话式格式。

通常开发人员会通过 Python 预处理步骤来完成这项任务,但我们可以展示一下在不到 30 秒的时间内利用 SQL 控制台实现相同的功能。

0a837936cd63970b7b68495c5cbb53a0.png

在上方的数据集中,点击 SQL 控制台 标签以打开 SQL 控制台。您应该会看到下方的查询已自动填充。

SQL

-- Convert Alpaca format to Conversation format
WITH
source_view AS (
  SELECT * FROM train -- Change 'train' to your desired view name here
)
SELECT
  [
    struct_pack(
      "from" := 'user',
      "value" := CASE
                   WHEN input IS NOT NULL AND input != ''
                   THEN instruction || '\n\n' || input
                   ELSE instruction
                 END
    ),
    struct_pack(
      "from" := 'assistant',
      "value" := output
    )
  ] AS conversation
FROM source_view
WHERE instruction IS NOT NULL
AND output IS NOT NULL;

我们在查询中使用 struct_pack 函数为每个对话创建一个新的 STRUCT 行

DuckDB 对结构化的数据类型和函数有很好的文档说明,你可以参考数据类型和函数。你会发现许多数据集包含带有 JSON 数据的列。DuckDB 提供了易于解析和查询这些列的功能。

  • 数据类型https://duckdb.org/docs/sql/data_types/struct.html

  • 函数https://duckdb.org/docs/sql/functions/struct.html

2e89aed2be3c3bd92c990b3ad0c14bcd.png
Alpaca to Conversation

一旦我们得到结果,就可以将其下载为一个 Parquet 文件。你可以在下面看到最终输出的样子。

3e49609a329460d7331a3b373aad1891.png

试一下!

作为另一个例子,你可以尝试对SkunkworksAI/reasoning-0.01运行一个 SQL 控制台查询,以查看包含超过 10 个推理步骤的指令。

SkunkworksAI/reasoning-0.01https://hf.co/datasets/SkunkworksAI/reasoning-0.01?sql_console=true&sql=--+Find+instructions+with+more+than+10+reasoning+steps%0Aselect+*+from+train%0Awhere+len%28reasoning_chains%29+%3E+10%0Alimit+100&sql_row=43

SQL 片段

DuckDB 有许多我们仍在探索的应用场景。我们创建了一个SQL 片段空间,以展示您可以在 SQL 控制台中完成的操作。

SQL 片段https://hf.co/spaces/cfahlgren1/sql-snippets

这里有一些非常有趣的用例:

  • 使用正则表达式过滤调用特定函数的数据集https://x.com/qlhoest/status/1835687940376207651

  • 从开放 LLM 排行榜中找到最受欢迎的基础模型https://x.com/polinaeterna/status/1834601082862842270

  • 将 alpaca 数据集转换为对话格式https://x.com/calebfahlgren/status/1834674871688704144

  • 使用嵌入进行相似性搜索https://x.com/andrejanysa/status/1834253758152269903

  • 从数据集中过滤超过 5 万行以获取最高质量的推理指令https://x.com/calebfahlgren/status/1835703284943749301

请记住,只需点击一下即可下载您的 SQL 结果作为 Parquet 文件并用于数据集!

我们非常希望听听您对 SQL 控制台的看法,如果您有任何反馈,请在以下帖子中留言!

欢迎在帖子中留言!https://hf.co/posts/cfahlgren1/845769119345136

资源

  • DuckDB WASMhttps://duckdb.org/docs/api/wasm/overview.html

  • DuckDB 语法https://duckdb.org/docs/sql/introduction.html

  • DuckDB WASM 论文https://www.vldb.org/pvldb/vol15/p3574-kohn.pdf

  • Parquet 格式简介https://hf.co/blog/cfahlgren1/intro-to-parquet-format

  • Hugging Face + DuckDBhttps://hf.co/docs/hub/en/datasets-duckdb

  • SQL 摘要空间https://hf.co/spaces/cfahlgren1/sql-snippets


英文原文:https://hf.co/blog/sql-console

原文作者: Caleb Fahlgren

译者: smartisan

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/908283.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

城市道路智慧照明服务认证介绍

城市道路智慧照明服务认证介绍 一 认证依据标准 城市道路智慧照明服务认证主要依据《城市道路智慧照明服务评价技术规范》标准,对城市道路照明服务提供商在智慧照明领域的服务质量、技术能力、管理水平等方面,进行综合评估和认证。 二 认证范围 城市道路…

云原生开源开发者沙龙丨AI 应用工程化专场杭州站邀您参会

云原生开源开发者沙龙 AI 原生应用架构专场,邀您一起交流,探索 AI 原生应用的工程化落地! 活动简介 AI 驱动的应用程序开发、部署和运维,给应用带来了新的生命力和想象空间。但大部分开发者对 AI 应用的编程框架、可观测体系、网…

Selenium的下载及chrome环境搭建

Selenium的下载及环境的搭建 1.安装python环境 conda 安装python环境《略》2.在CMD在使用pip下载Selenium pip install selenium #pip安装3.下载webdriver 进入Selenium的下载界面:https://www.selenium.dev/downloads/ 下拉找到Browsers 4、驱动与浏览器 ht…

VBA中类的解读及应用第十七讲:类,让文本框在激活时改变颜色(下)

《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。 类,是非常抽象的,更具研究的价值。随着我们学习、应用VBA的深入&#xff0…

JavaCV 图像边缘检测 之 Sobel算子 算法

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…

C++ unordered封装

C 哈希-CSDN博客 哈希表是unordered系列容器的底层逻辑,再实现了哈希的底层后,我们按照如下步骤封装unordered: 1. 改变数据类型,将HashTable中的所有的_kv都改成T 2. 因为map需要取key,写一个KeyOfT的仿函数并封装 3. iterator ,…

【Nginx】前端项目开启 Gzip 压缩大幅提高页面加载速度

背景 Gzip 是一种文件压缩算法,减少文件大小,节省带宽从而提减少网络传输时间,网站会更快更丝滑。 // nginx roothcss-ecs-1d22:/etc/nginx# nginx -v nginx version: nginx/1.24.0// node ndde v18.20.1// dependencies "vue": …

在线教育辅助:SpringBoot试题库系统精讲

2 相关技术 2.1 Spring Boot框架简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Sprin…

【前端基础】CSS基础

目标:掌握 CSS 属性基本写法,能够使用文字相关属性美化文章页。 01-CSS初体验 层叠样式表 (Cascading Style Sheets,缩写为 CSS),是一种 样式表 语言,用来描述 HTML 文档的呈现(美化内容&#…

操作系统进程的描述与控制知识点

前趋图和程序执行 前趋图 定义: 前趋图是指一个有向无循环图,可记为 DAG,它用于描述进程之间执行的先后顺序图形表示: 程序的执行 程序顺序执行时,系统资源的利用率很低 程序顺序执行时的特征 顺序性封闭性可再现性 …

【观成科技】APT组织常用开源和商业工具加密流量特征分析

概述 在当前的网络安全环境中,APT组织的活动愈发频繁,利用其高级技术和社会工程手段,针对全球范围内的政府、军事和企业目标发起了一系列复杂的网络攻击。在不断升级的攻击中,开源和商业工具凭借其灵活性、易用性和全球化攻击能力…

自杀一句话木马(访问后自动删除)

在做安全测试时&#xff0c;例如文件上传时就要上传可以解析的脚本文件解析证明存在漏洞&#xff0c;这个时候就需要(访问后自动删除文件的一句话木马) PHP <?php echo md5(1);unlink(__FILE__); ?> 访问后自动删除

在Microsoft Outlook日历中添加多个时区

在Microsoft Outlook日历中添加多个时区 1.单击Outlook中的文件选项卡&#xff0c;单击选项 2.左侧菜单中选择日历 3.向下滚动到时区部分&#xff0c;并标记当前时区&#xff0c;比如China 4.选中“显示第二个时区”框 5.选择第二个时区并给它一个标签&#xff0c;比如Germa…

python常用的第三方库下载方法

方法一&#xff1a;打开pycharm-打开项目-点击左侧图标查看已下载的第三方库-没有下载搜索后点击install即可直接安装--安装成功后会显示在installed列表 方法二&#xff1a;打开dos窗口输入命令“pip install requests“后按回车键&#xff0c;看到successfully既安装成功&…

Rust 力扣 - 238. 除自身以外数组的乘积

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 这题主要有个关键点&#xff0c;就是元素能取0&#xff0c;然后我们分类讨论元素为0的数量 如果数组中存在至少两个元素为0&#xff0c;则每个元素的除自身以外的乘积为0如果数组中仅存在一个0&#xff0c;则为…

二、应用层,《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》

文章目录 零、前言一、应用层协议原理1.1 网络应用的体系结构1.1.1 客户-服务器(C/S)体系结构1.1.2 对等体&#xff08;P2P&#xff09;体系结构1.1.3 C/S 和 P2P体系结构的混合体 1.2 进程通信1.2.1 问题1&#xff1a;对进程进行编址&#xff08;addressing&#xff09;&#…

【计算机网络篇】数据链路层(14)虚拟局域网VLAN(概述,实现机制)

文章目录 &#x1f6f8;虚拟局域网VLAN&#x1f354;虚拟局域网VLAN的实现机制&#x1f95a;IEEE 802.1Q帧&#x1f95a;以太网交换机的接口类型&#x1f5d2;️例一&#xff1a;在一个交换机上不进行人为的VLAN划分&#xff0c;交换机各接口默认属于VLAN1且类型为Access的情况…

【无人机设计与控制】红嘴蓝鹊优化器RBMO求解无人机路径规划MATLAB

摘要 无人机在复杂环境中的路径规划是一个非线性、非凸优化问题&#xff0c;具有高维度和多约束性。本文提出了基于红嘴蓝鹊优化器&#xff08;RBMO&#xff09;的方法&#xff0c;用于求解无人机路径规划问题。RBMO算法借鉴了红嘴蓝鹊的觅食和群体行为&#xff0c;以全局搜索…

跨平台OFD、PDF文档预览UTS插件

〇、介绍 Seal-OfdReader是跨平台OFD文档预览原生插件&#xff0c;具有以下特点&#xff1a; 支持UniApp项目集成&#xff0c;也支持原生Android项目集成 非腾讯X5&#xff0c;无内核加载&#xff0c;高效率、稳定高可用 支持在线文档&#xff0c;也支持离线设备本地文档 支…

电机学习-SPWM原理及其MATLAB模型

SPWM原理及其MATLAB模型 一、SPWM原理二、基于零序分量注入的SPWM三、MATLAB模型 一、SPWM原理 SPWM其实是相电压的控制方式&#xff0c;定义三相正弦相电压的表达式&#xff1a; { V a m V m sin ⁡ ω t V b m V m sin ⁡ ( ω t − 2 3 π ) V c m V m sin ⁡ ( ω t 2…