DuckDB发明MTL,这个岗位可能消失!
把ETL的E换成M,会发生什么?ETL工程师岌岌可危
从ETL到MTL, DuckDB FlockMTL插件把大模型玩得很溜
虹吸效应很可怕, 不管是在物理世界还是虚拟世界.
省会城市虹吸周边城市人才.
大公司虹吸小公司人才.
热门的赛道、开源项目吸引更多优质人才的参与, 助力其更快的发展.
你可以闭门造车, 你也可以多看看热门赛道里的热门项目, 向优秀学习.
前段时间发了一篇文章, 观察到DuckDB在支持rust/go的扩展接口, 意味着未来rust/go工程师就可以写DuckDB扩展插件, 相当于为DuckDB提供更多周边功能开了一个管道, 输送代码的是c/c++/go/rust的开发者.
有段时间没关注DuckDB的插件社区了, 今天简单看了一下, 天翻地覆的变化啊, 多了好多有趣的插件. 等rust/go支持后, 估计发展会更快. 这就是虹吸效应的体现.
https://duckdb.org/community_extensions/list_of_extensions
来看几个有趣的插件
这些插件大概率是用户贡献的. 例如读取网络抓包软件pcap文件、定时任务、读取clickhouse数据源、分析财经数据等.
我仅截取了一些比较有趣的插件, 按功能做了一些分类如下.
1、读取其他数据源
2、兼容其他数据库
3、整合大模型
4、多模态支持
5、其他功能
flockmtl : ETL -> MTL
之前DuckDB可以使用http插件调用模型. 用法见: DuckDB接入DeepSeek
现在更简单了.
flockmtl 这个插件有点意思, 我们都知道ETL 的E(Extract)、T(Transform)、L(Load)
MTL 显然是把E换成了M, 也就是让模型来主导数据抽取.
T和L呢, 都交给DuckDB. 结合起来就是MTL.
也许未来TL都让模型干了.
下面简单体验一下flockmtl插件.
FlockMTL 是什么?
FlockMTL 是 DuckDB 的一个扩展,旨在将语义分析功能直接引入到 SQL 查询中。它通过一组 map 和 reduce 函数深度集成了语言模型和检索增强生成功能。
谁可以从使用 FlockMTL 中受益?
FlockMTL 专为需要结合传统 SQL 操作来利用语义分析的开发者、数据科学家和企业而设计。它对于文档排名、内容生成和语义搜索等用例尤其有用。
FlockMTL 的主要功能是什么?
模型管理:配置系统定义和用户定义的模型。 提示管理:创建和管理可重复使用的文本提示。 LLM 密钥管理:为支持的提供商(例如微软、openai)安全地存储和管理 API 密钥。 与 DuckDB 集成:利用 DuckDB 强大的 SQL 引擎以及语义功能。 支持多家提供商:访问 OpenAI、Azure 和 Ollama 模型以执行各种任务。 使用 Ollama 进行本地推理:使用 LLaMA 模型在本地执行推理。 标量函数:使用llm_complete、llm_complete_json和等函数llm_filter执行高级任务。 聚合函数llm_reduce:使用和等函数执行汇总、排名和重新排序llm_rerank。
如何安装 FlockMTL?
您可以通过运行以下命令轻松安装 FlockMTL:
INSTALL flockmtl FROM community;
LOAD flockmtl;
如何在 FlockMTL 中管理模型?
您可以使用 SQL 命令管理模型,例如:
CREATE MODEL
UPDATE MODEL
DELETE MODEL有关详细示例, 请参阅模型管理部分。( https://dais-polymtl.github.io/flockmtl/docs/resource-management/models )
我可以为我的任务创建自定义提示词吗?
是的,您可以使用CREATE PROMPT和UPDATE PROMPT命令创建和管理自定义提示。有关更多详细信息,请参阅“提示词管理”部分。( https://dais-polymtl.github.io/flockmtl/docs/resource-management/prompts )
例子
以本地模型为例, 启动ollama
$ OLLAMA_HOST=0.0.0.0:11434 OLLAMA_KEEP_ALIVE=-1 nohup ollama serve > /dev/null 2>&1 &
$ ollama list
NAME ID SIZE MODIFIED
qwen3:4b 2bfd38a7daaf 2.6 GB About a minute ago
qwen3:14b 7d7da67570e2 9.3 GB 7 weeks ago
linux6200/bge-reranker-v2-m3:latest abf5c6d8bc56 1.2 GB 2 months ago
qwen2.5-coder:3b e7149271c296 1.9 GB 2 months ago
ds-qwen2.5-1.5b-digoal:latest 2c6aaa8a497c 3.6 GB 3 months ago
qwen2.5:1.5b 65ec06548149 986 MB 4 months ago
deepseek-r1:7b 0a8c26691023 4.7 GB 4 months ago
qwen_1.5b_test1:latest 682ad25636bd 1.1 GB 4 months ago
deepseek-r1:1.5b a42b25d8c10a 1.1 GB 4 months ago
deepseek-r1:14b ea35dfe18182 9.0 GB 5 months ago
mxbai-embed-large:latest 468836162de7 669 MB 7 months ago
启动duckdb
$ duckdb
DuckDB v1.3.1 (Ossivalis) 2063dda3e6
Enter ".help"for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
安装flockmtl插件
D INSTALL flockmtl FROM community;
100% ▕████████████████████████████████████████████████████████████▏
D LOAD flockmtl;
创建llm密钥
CREATE SECRET (
TYPE OLLAMA,
API_URL '127.0.0.1:11434'
);
创建模型
CREATE MODEL(
'QuackingModel',
'qwen2.5:1.5b',
'ollama',
{"context_window": 128000, "max_output_tokens": 2048}
);
使用模型
D SELECT llm_complete(
{'model_name': 'QuackingModel'},
{'prompt': 'Talk like a duck 🦆 and write a poem about a database 📚'}
);
┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ llm_complete(main.struct_pack(model_name := 'QuackingModel'), main.struct_pack(prompt := 'Talk like a duck 🦆 and write a poem about a database 📚')) │
│ varchar │
├────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Quack quack! In the marshy meadow,\nWhere the water's deep and the reeds sway.\nI am a database, my home is wide,\nA place where data doth reside.\n\nRows of tables, columns they align,\nEach one … │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
更多用法请参考flockMTL文档.
模型管理 提示词管理 混合搜索 标量查询 聚合查询等