为数据集而生的 SQL 控制台
随着数据集的使用量急剧增加,Hugging Face 社区已经变成了众多数据集默认存放的仓库。每月,海量数据集被上传到社区,这些数据集亟需有效的查询、过滤和发现。
每个月在 Hugging Face Hub 创建的数据集
我们现在非常激动地宣布,您可以直接在 Hugging Face 社区中对您的数据集进行 SQL 查询!
数据集的 SQL 控制台介绍
在每个公共数据集中,您应该会看到一个新的 SQL 控制台标签。只需单击即可打开 SQL 控制台以查询该数据集。
查询 Magpie-Ultra 数据集来获取优秀的高质量推理指令。
所有的操作都在浏览器中完成,控制台还配备了一些实用的功能:
- 完全的本地化支持: SQL 控制台由 DuckDB WASM 驱动,因此您可以无需任何依赖即可查询您的数据集。
- 完整的 DuckDB 语法支持: DuckDB 支持全面的 SQL 语句,并包含许多内置函数,如正则表达式、列表、JSON、嵌入等。您会发现 DuckDB 的语法与 PostgreSQL 非常相似。
- 结果导出: 您可以将查询的结果导出为 parquet 格式 .
- 分享: 您可以使用链接分享公共数据集的查询结果 .
工作原理
Parquet 格式转换
大多数在 Hugging Face 上的数据集都存储为 Parquet 格式,这是一种优化了性能和存储效率的列式数据格式。Hugging Face 的 数据集视图 和 SQL 控制台会直接从数据集的 Parquet 文件中加载数据。如果数据集是以其他格式存储的,则前 5GB 自动转换为 Parquet 格式。您可以在 Dataset Viewer Parquet API 文档 中找到更多关于 Parquet 转换过程的信息。
使用这些 Parquet 文件,SQL 控制台会为您创建视图,基于数据集的划分和配置供您进行查询。
DuckDB WASM 引擎
DuckDB WASM 是驱动 SQL 控制台的引擎。它是一个在浏览器中运行于 Web Assembly 的进程内数据库引擎,无需服务器或后端。
仅在浏览器中运行,它为用户提供最大程度的灵活性,可以自由查询数据而不需要任何依赖项。这也使得通过简单的链接分享可复现的结果变得非常简单。
你可能在想,“这是否适用于大数据集?”答案是“当然可以!
以下是对 OpenCo7/UpVoteWeb 数据集的查询,该数据集经过 Parquet 格式转换后有 12.6M
行。
您可以看到,我们在不到 3 秒内的时间内收到了简单过滤查询的结果。
虽然基于数据集的大小和查询的复杂度查询可能会发生很长时间,您会感到吃惊您用 SQL 控制台做到的事情。
就像任何技术一样,也有其局限性:
- SQL 控制台可以处理许多查询。然而内存限制约为 3GB,因此有可能超出内存并无法处理查询 (提示: 尝试使用过滤器来减少您正在查询的数据量,并结合使用
LIMIT
)。 - 尽管 DuckDB WASM 非常强大,但它并不完全与 DuckDB 功能一致。例如,DuckDB WASM 尚未支持
hf://
协议以查询数据集。
示例: 将数据集从 Alpaca 转换为对话格式
现在我们已经介绍了 SQL 控制台,让我们通过一个实际例子来实践一下。当微调大型语言模型时,我们经常需要处理不同的数据格式。其中特别流行的一种格式是对话式格式,在这种格式中,每一行代表用户与模型之间的多轮对话。SQL 控制台可以帮助我们高效地将数据转换为这种格式。让我们看看如何使用 SQL 将 Alpaca 数据集转换为对话式格式。
通常开发人员会通过 Python 预处理步骤来完成这项任务,但我们可以展示一下在不到 30 秒的时间内利用 SQL 控制台实现相同的功能。
在上方的数据集中,点击 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 提供了易于解析和查询这些列的功能。
一旦我们得到结果,就可以将其下载为一个 Parquet 文件。你可以在下面看到最终输出的样子。
试一下!
作为另一个例子,你可以尝试对 SkunkworksAI/reasoning-0.01 运行一个 SQL 控制台查询,以查看包含超过 10 个推理步骤的指令。
SQL 片段
DuckDB 有许多我们仍在探索的应用场景。我们创建了一个 SQL 片段 空间,以展示您可以在 SQL 控制台中完成的操作。
这里有一些非常有趣的用例:
- 使用正则表达式过滤调用特定函数的数据集
- 从开放 LLM 排行榜中找到最受欢迎的基础模型
- 将 alpaca 数据集转换为对话格式
- 使用嵌入进行相似性搜索
- 从数据集中过滤超过 5 万行以获取最高质量的推理指令
请记住,只需点击一下即可下载您的 SQL 结果作为 Parquet 文件并用于数据集!
我们非常希望听听您对 SQL 控制台的看法,如果您有任何反馈,请在以下 帖子中留言!
资源
英文原文: https://hf.co/blog/sql-console
原文作者: Caleb Fahlgren
译者: smartisan
为数据集而生的 SQL 控制台的更多相关文章
- My Sql控制台命令
1.连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root ...
- mysql----------原生的sql里面如何根据case then排序
1.按照三个字段都符合条件来排序 ORDER BY ( CASE WHEN is_top = 1 AND top_end_time>UNIX_TIMESTAMP() AN ...
- SAS数据集推送到sql server 数据库 实现代码段
libname fdsas ODBC datasrc=fdsas user=fdsas password=fdsas123 preserve_tab_names=yes connection=shar ...
- sql monitor生成不了报告& FFS hint不生效两个问题思考
事情的发生就是这么偶然,一步步的深入才能汲取到更深入的知识~~ -------------------START------------------------------------------- ...
- Excel 数据导入SQL XML 自动生成表头
去出差的时候应客户要求要要将Excel 文件内的数据批量导入到数据库中,而且有各种不同种类的表格,如果每一个表格多对应一个数据表的话, 按照正常的方法应该是创建数据表,创建数据库中映射的数据模型,然后 ...
- LINQ to SQL Count/Sum/Min/Max/Avg Join
public class Linq { MXSICEDataContext Db = new MXSICEDataContext(); // LINQ to SQL // Count/Sum/Min/ ...
- sql游标的使用入门
游标的理解: 游标其实可以理解成一个定义在特定数据集上的指针,我们可以控制这个指针遍历数据集,或者仅仅是指向特定的行,所以游标是定义在以Select开始的数据集上的 普通的sql语句是面向集合的,游标 ...
- Linq to Sql语法及实例大全
LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的 ,而判断条件就是它后面所接的 ...
- SQL Server Join方式
原文:SQL Server Join方式 0.参考文献 Microsoft SQL Server企业级平台管理实践 看懂SqlServer查询计划 1.测试数据准备 参考:Sql Server中的表访 ...
- Spark sql ---JSON
介绍Spark SQL的JSON支持,这是我们在Databricks中开发的一个功能,可以在Spark中更容易查询和创建JSON数据.随着网络和移动应用程序的普及,JSON已经成为Web服务API以及 ...
随机推荐
- ArgoWorkflow 教程(一)--DevOps 另一选择?云原生 CICD 初体验
本文主要记录了如何使用 ArgoWorkflow 构建流水线,以及 ArgoWorkflow 中 的 Workflow.Template 等概念模型. 本文主要分析以下问题: 1)如何创建流水线 2) ...
- List按需转换Map
需求 : Mybatis的<select>返回一个List,想按照实体类其中的属性转换成Map<String, String>实现过程: 其实有很多方式,可以使用普通for循环 ...
- vue-表单与v-model
使用 v-model 后,表羊控件显示的值只依赖所绑定的数据,不再关心初始化时的 value 属性,对于 textarea></textarea> 之间插入的值,也不会生效. 使用 ...
- 这是DDD建模最难的部分(其实很简单)
本文书接上回<为了落地DDD,我是这样"PUA"大家的> ,欢迎关注我的同名公众号. https://mp.weixin.qq.com/s/DjC0FSWY1bgJ ...
- 高级工程师面试大全- spring篇
1.spring是什么 Spring是一个轻量级的IoC和AOP容器框架.是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求.主要包括以下七 ...
- WM_ERASEBKGND
WM_ERASEBKGND是在当窗口背景必须被擦除时 (例如,窗口的移动,窗口的大小的改变)才发送. 当窗口的一部分无效需要重绘时发送此消息. #define WM_ERASEBKGND 0x0014 ...
- 廉价平替esphome水浸 雨水传感器diy
2024年7月27日 改进了手头的所有8266 都加了红外和dht11 干了一件非常抽象的事情 调试的时候给dht11 插到5v了 单薄的它好像要融化了 binary_sensor: # 水浸 雨水 ...
- Drools决策表实践运用
Drools 决策表的使用与说明 Drools决策表的使用 官方文档决策表说明 决策表使用方式 执行drl代码及结果 Drools决策表的使用 官方文档决策表说明 Drools 决策表的使用 16.7 ...
- MVCC能否解决幻读?
一.什么是MVCC 多版本控制: 指的是一种提高并发的技术.最早的数据库系统,只有读读之间可以并发,读写,写读,写写都要阻塞.引入多版本之后,只有写写之间相互阻塞,其他三种操作都可以并行,这样大幅度提 ...
- CSS & JS Effect – Breadcrumb Navigation 面包屑
介绍 Breadcrumb 长这样 主要就是让用户清楚自己在哪个 page, 然后可以轻松返回上一页. Step by Step HTML <div class="container& ...