开源模型实现自然语言到SQL的转换,可用于数据分析和数据驱动应用开发。
真正的新技术出现后,会让未来变得难以预测。你唯一能确定的是,你可能不会继续沿着之前的直线前进。真正具有影响力的目标往往隐藏在你还看不到山顶的另一侧。这也是为什么技术如此令人恐惧:当雾散去时,你可能会发现自己处于一个完全陌生的地方,而没有地图。
在 MotherDuck,我们对 AI 如何帮助人们获得理解数据的超能力充满期待。几十年前,拥有现代谷歌搜索的人会被视为魔术师;现在我们理所当然地认为可以瞬间解决任何关于摩根·弗里曼年纪或西雅图水手队上次赢得世界大赛是什么时候的争议。类似地,AI 有潜力将世界分为"AI 出现前做的事"和"AI 出现后做的事"。
当我们的早期用户之一提到他们花费很多时间在 ChatGPT 和 MotherDuck 查询界面之间复制粘贴时,就很清楚 AI 已经在改变人们与数据的交互方式了。这似乎效率极低,从那时起我们一直在思考如何缩短反馈循环,让数据从业者把工作做得更好。任何时候,只要你必须离开正在编写的查询去查看文档,就会分散你对头脑中保持的所有细节的注意力。
两周前,为了帮助分析师专注于 SQL,我们推出了"FixIt"功能,可以指出查询中哪一行有错误并建议修复。虽然"FixIt"相当简单,但它出奇地有帮助。与其不得不查阅窗函数带尾部平均值或时间戳差分之类的语法,不如直接写出我认为应该工作的 SQL;如果我把参数顺序搞错、拼错某个东西或使用错误的引号类型,"FixIt"会自动修正。
本周我们迈出了下一步;与 Numbers Station 合作,我们正在开源一个 DuckDB 专用的文本转 SQL LLM。我们的目标是回馈 DuckDB 社区并帮助启动有趣的 DuckDB 应用。目前,为了实现更快、更便宜的推理,我们选择了在一定程度上权衡表达能力并使用相对较小的模型。如果这被证明是一个有趣的领域,我们会进一步跟进。
我们希望你能与我们同行,继续探索 AI 如何让数据问题更容易解决。
我们目前在 MotherDuck 内提供使用 OpenAI 最强大模型的文本转 SQL 功能,这些模型在文本转 SQL 基准测试中表现出色,并已在实践中证明有用。然而,我们看到需要更轻量级的模型,以便在较低延迟下启用 DuckDB SQL 辅助功能。在审查现有的开源文本转 SQL 模型后,我们意识到现有模型和基准主要关注分析查询 / SELECT 语句。
除了使用常规 SQL 进行快速分析查询外,DuckDB 吸引力的重要部分在于其友好的 SQL 语法、嵌套类型支持、多样的数据导入选项及其多元化的扩展生态系统。其中包括用于查询 Postgres、SQLite 和 Iceberg 表的扩展,以及对 JSON 和地理空间类型的支持。
我们相信,在 DuckDB 的背景下,文本转 SQL 特别有用,如果模型能帮助用户充分利用 DuckDB 的全部力量,而无需在 DuckDB 文档和 SQL shell 之间反复切换。我们都经历过这种情况!
借助 DuckDB-NSQL,我们现在发布了一个文本转 SQL 模型,它了解 DuckDB 0.9.2 中所有已记录的功能,包括官方扩展!把它想象成一个总能给你想要的确切 DuckDB SQL 查询的文档预言机。
该模型使用约 200k 个综合生成和验证的 DuckDB SQL 查询进行训练,由 DuckDB 文档指导,以及来自 Numbers Station 的 250k 多个通用文本转 SQL 问题。这使得该模型不仅能够生成方便的 DuckDB 代码片段,还能生成用于回答分析问题的 SQL 查询。
我们完整发布了 Hugging Face 上的模型权重,也以量化的 GGUF 格式发布了模型,用于 llama.cpp。
请阅读更多关于我们如何在 Numbers Station 博客文章中创建和评估 DuckDB-NSQL-7B 的信息
最好的是——你现在就可以在我们的 Hugging Face 空间上尝试!
要获取 SQL 代码片段,只需用描述你想要的查询类型的自然语言指令提示模型。指令越具体越好!
例子 1:从 test.csv 创建名为 tmp 的新表
CREATE TABLE tmp AS FROM read_csv_auto('test.csv');
例子 2:从 taxi 表获取所有以 _amount 结尾的列
SELECT COLUMNS('.*_amount') FROM taxi;
例子 3:从 taxi 表获取乘客数、行程距离和票价金额,并按所有列排序
SELECT passenger_count, trip_distance, fare_amount FROM taxi ORDER BY ALL;
例子 4:获取 2022 年 12 月最长的行程
SELECT MAX(trip_miles) FROM rideshare WHERE request_datetime BETWEEN '2022-12-01' AND '2022-12-31';
感谢 OctoAI 为我们提供快速且可扩展的演示端点。
如果你想获得完全本地的体验,可以使用 llama.cpp,请访问 GitHub 仓库或 GGUF 说明,你会找到需要的所有信息!
2024/01/18 - Jordan Tigani
数据库基准测试是否仍然相关?让我们理解为什么它是选择数据库的一个不好的方式。
2024/01/24 - Mehdi Ouazza
使用 Estuary 将流数据导入 MotherDuck
使用 CDC 管道将数据流导入 MotherDuck