ITPub博客

首页 > 数据库 > 数据库开发技术 > AI好物推荐:与 SQL 数据库聊天

AI好物推荐:与 SQL 数据库聊天

原创 数据库开发技术 作者:HelloTech技术派 时间:2024-01-17 08:00:00 0 删除 编辑

Vanna基于开源Python框架,可以使用多种方式(DDL Statements/文档/SQL 语句)训练你的数据库,然后就可以直接使用自然语言方式问问题,输出非常准确的 SQL 语句。使用检索增强生成(RAG)技术进行SQL生成和相关功能。其主要特点是通过与SQL数据库的交互,准确地通过大型语言模型(LLM)生成SQL查询。

  • Vanna 能够将用户用平时说话的方式提出的问题自动转换成SQL语句,以便查询数据库。
  • Vanna 可以连接到多种类型使用SQL的数据库。
  • 用户可以使用自己的数据和需求对Vanna进行训练,从而使其在将问题转换为SQL语句时更加准确。
  • Vanna 提供了多种界面选择,如Jupyter Notebook、Web应用、Slack机器人等,以满足不同需求的用户,并支持自定义前端开发。
  • 在处理查询时,Vanna 保证数据库内容不会被发送到LLM或向量数据库,SQL执行在用户的本地环境中进行,以确保数据的安全和隐私保护。
  • Vanna 能够根据用户的历史查询和反馈进行自我学习和优化,以提高未来查询的准确性。
  • Vanna 适用于非技术用户,提供了一种简单直观的方式与数据库进行交互,即使对SQL不熟悉的用户也能轻松使用。

GitHub:https://github.com/vanna-ai/vanna

快速入门

安装

pip install vanna

引入依赖包

import vanna as vn

使用 DDL 语句进行训练

DDL 语句包含有关数据库中表名、列、数据类型和关系的信息。

vn.train(ddl="""
    CREATE TABLE IF NOT EXISTS my-table (
        id INT PRIMARY KEY,
        name VARCHAR(100),
        age INT
    )
"""
)

使用文档进行培训

添加有关业务术语或定义的文档。

vn.train(documentation="Our business defines XYZ as ...")

使用 SQL 进行训练

可以将 SQL 查询添加到训练数据中。

vn.train(sql="SELECT name, age FROM my-table WHERE name = 'John Doe'")

提问

vn.ask("What are the top 10 customers by sales?")

得到如下 SQL

SELECT c.c_name as customer_name,
        sum(l.l_extendedprice * (1 - l.l_discount)) as total_sales
FROM   snowflake_sample_data.tpch_sf1.lineitem l join snowflake_sample_data.tpch_sf1.orders o
        ON l.l_orderkey = o.o_orderkey join snowflake_sample_data.tpch_sf1.customer c
        ON o.o_custkey = c.c_custkey
GROUP BY customer_name
ORDER BY total_sales desc limit 10;


原文作者:HelloTech技术派;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2017-12-05

  • 博文量
    181
  • 访问量
    73722