给BI插上AI的翅膀

前言


Superset目前还不擅长关联查询的工作,需要我们在SQL Lab里自己手写各种复杂SQL,本次尝试就2是利用AI技术帮我们写出复杂的SQL。这次尝试比较跨界,使用到了以下技术,

  • • Apache Superset

  • • DuckDB

  • • LLM,主要是Text2SQL应用,当然也可以把之前写的大模型助力情感分析也整合进来。

准备知识

要实现这个功能,我们需要利用到DuckDB的用户自定义函数UDF,把基于大模型的Text2SQL 封装为一个函数,让AI自动帮你写出复杂的SQL。

Text2SQL

为简化工作,这里使用了前几天介绍的vanna.ai,有兴趣的可以看看这几篇文章,

DuckDB UDF

如果还不太熟悉DuckDB UDF的,可以看看这几篇文章,

duckdb_engine

当然 duckdb_engine 默认还不能加载UDF,需要做些修改,这些代码我放到了我的 repo[1] 里了,

演示用代码

为了简化工作,这里使用vanna.ai, 如果愿意可以结合我之前的文章,使用本地LLM(私有化部署)

udf.py内容如下,

import pyarrow.compute as pc
import duckdb
import pyarrow as pa

from vanna.remote import VannaDefault

api_key = os.getenv('VANNA_API_KEY') # Your API key from https://vanna.ai/account/profile 
vanna_model_name = 'tpc-duck' # Your model name from https://vanna.ai/account/profile
                    
vn = VannaDefault(model=vanna_model_name, api_key=api_key)

def connect_to_duckdb1(conn):
    conn = conn

    def run_sql_duckdb(sql: str):
        return conn.query(sql).to_df()

    # global run_sql
    vn.run_sql = run_sql_duckdb
vn.connect_to_duckdb=connect_to_duckdb1

def exist_function(conn,name):
    function_check = f"""SELECT DISTINCT  function_name
                        FROM duckdb_functions()
                        WHERE lower(function_type) = 'scalar'
                        AND lower(function_name) in ('{name.lower()}')
                        ORDER BY function_name;"""

    function_check_output = conn.query(function_check)
    return function_check_output

def ai(x):
    sql = vn.ask(x,False,False,False)
    return sql[0]

def create_functions(conn):
    if not exist_function(conn,'ai'):
        conn.create_function('ai', ai, ['VARCHAR'], 'VARCHAR', type='native')

结论

当前这个为简化版本,对Superset本身没有做什么修改。从AI辅助对角度可以做的工作还有很多。另外基于这样的方法实现,我们不仅仅可以把AI整合进Superset,还可以把各种机器学习模型也整合进来,甚至ETL工作等。

引用链接

[1] repo: http://github.com/alitrack/duckdb_engine


原文始发于微信公众号(alitrack):给BI插上AI的翅膀

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/221891.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!