当前位置: 首页 > news >正文

生成SQL的模型与工具

文章目录

    • Vanna概要
      • 工作原理
    • 技术介绍
      • 1.基于检索增强(RAG)
      • 2.大型语言模型(LLM)
      • 3.向量数据库
    • 如何使用Vanna
      • 1.安装环境依赖
      • 2.配置向量数据库与使用的LLM
      • 3.连接数据库
      • 4.训练 RAG
        • DDL 建表语句训练
        • 文档训练(告知模型特殊字段含义等)
        • 示例 SQL 查询训练
      • 其他
        • vanna核心功能:
        • vanna具备web应用功能
      • 总结

本文章讲解的是生成SQL模型与工具,能够通过文字转为SQL命令 简化SQL命令。
我是AIdenwei,一个"鳝鱼"分享干货的博主
大家也可以叫我鳝鱼干博主。
在此分享文章内容的同时还是需要大家多看多学多实践。更多知识可以关注博主进行了解。大家点赞评论关注三连,才有更强的更新动力。谢谢!

Vanna概要

Vanna是一个基于检索增强(RAG)的SQL生成框架,使用大型语言模型(LLM)来生成SQL查询。

工作原理

训练阶段:通过将建表语句(DDL)、相关SQL查询示例以及对表或字段的注释等文档信息转化为向量形式(Embedding),并存储在向量数据库中。
问题处理与SQL生成阶段:当用户提出问题时,系统会在向量库中搜索与问题最相关的信息,然后将这些信息传递给LLM,由LLM生成SQL查询。

技术介绍

1.基于检索增强(RAG)

定义:RAG 旨在通过在生成文本的过程中引入外部知识检索,来增强生成模型的性能和效果。它允许模型在生成内容时,能够动态地从大规模的知识数据库中检索相关信息,并将这些信息融合到生成的文本中。

原理:RAG 模型一般由检索器和生成器两部分组成。检索器负责根据输入的提示或问题,从预先构建的知识图谱、文档库等数据源中检索出最相关的信息片段。生成器则以检索到的信息以及输入提示为条件,利用**生成式模型(如 Transformer 架构)**来生成自然流畅的文本。

大白话:人工智能在 “说话” 或者 “创作” 的时候,能先去 “查资料”,然后把查到的有用信息揉到它说的话或者写的内容里

2.大型语言模型(LLM)

大型语言模型(Large Language Model,LLM)是一种基于深度学习技术的人工智能模型,具有强大的语言理解和生成能力,在自然语言处理领域取得了显著的成果

3.向量数据库

向量数据库是一种专门用于存储、索引、查询和检索高维向量数据的数据库系统,特别适合处理非结构化数据(如图像、音频、文本等),能够实现传统数据库难以完成的高级分析和相似性搜索
适用于非结构化数据 存储的是向量 类似关系型数据库
Milvus:开源的高性能向量数据库
ChromaDB: 开源的向量数据库

如何使用Vanna

1.安装环境依赖

安装 Vanna
安装向量数据库
安装 LLM 客户端

2.配置向量数据库与使用的LLM

初始化向量数据库
配置 LLM(openai)
结合向量数据库和 LLM (如chromadb向量数据库,openai)

3.连接数据库

连接数据库(如mysql)mysq可以通过容器启动使用

4.训练 RAG

DDL 建表语句训练
vn.train(ddl="""
CREATE TABLE `goods` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `name` varchar(150) NOT NULL,
    `cate_name` varchar(40) NOT NULL,
    `brand_name` varchar(40) NOT NULL,
    `price` decimal(10,3) NOT NULL DEFAULT '0.000',
    PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;
""")
文档训练(告知模型特殊字段含义等)
vn.train(documentation="""
goods表中的字段cate_name为电脑类型,包括:笔记本、游戏本、超极本、平板电脑、台式机、服务器/工作站、笔记本配件
""")
示例 SQL 查询训练
vn.train(
    question="华硕品牌的笔记本的平均价格是多少?",
    sql="SELECT AVG(price) AS avg_price FROM goods WHERE brand_name = '华硕' AND cate_name = '笔记本';"
)

详细的vanna实操演示

其他

vanna核心功能:
  • vanna.train 训练使用
  • vanna.ask 接收一个自然语言问题作为输入,输出生成的 SQL 查询语句。
  • vanna.run_sql 接执行查询并获取结果 可以结合vanna.ask一起使用
vanna具备web应用功能

能够在界面上进行操作使用,用户可以无需编写 SQL 代码,即可通过自然语言交互完成复杂的数据查询和分析。降低数据分析的技术门槛。

总结

Vanna目前使用较多以及较为熟知,遇到问题更容易上网找到答案解决。
目前还有其他SQL模型与框架(SQLCoder,SQLGPT等)可以自行尝试。

感谢您的阅读!如果您喜欢这篇文章,不妨打赏一杯咖啡,让我更有动力继续分享更多优质内容。

博主其他文章

相关文章:

  • netcore入门案例:netcore api连接mysql的完整记事本接口示例
  • 玄机-第二章 日志分析-mysql应急响应的测试报告
  • JWT+redis实现令牌刷新优化方案
  • STM32内存五区及堆栈空间大小设置(启动文件浅析)
  • yolov8乱改版(使用最新源码版本ultralytics-8.3.80——该项目库集成了yolov12)
  • Nuxt.js 3【详解】敏感信息处理 -- 环境变量配置
  • Spring Boot从入门到精通:一站式掌握企业级开发
  • linux里面的过滤符号 | 是如何实现的
  • Python语法糖教程第2天—Python装饰器深度解析与高阶应用指南
  • Element实现el-dialog弹框移动、全屏功能
  • 鸿蒙Next如何自定义标签页
  • Vue 表单优化:下拉框值改变前的确认提示与还原逻辑实现
  • C++ 的时间库之六:日历和时区
  • ArcGIS Pro技巧实战:高效矢量化天地图地表覆盖图
  • 使用python做http代理请求
  • Metal学习笔记八:纹理
  • Springboot基础篇(3):控制反转与Bean对象
  • 深度生成模型(二)——基本概念与数学建模
  • 4. 示例:创建带约束的随机地址生成器(范围0x1000-0xFFFF)
  • Vue+Element UI table表格,数据展示错位(已解决)
  • 网站建设在微信里打广告内容/免费推广网站排名
  • 帮网站做代理/合肥seo培训
  • 做网站一般什么问题/张雷明履新河南省委常委
  • 可以做兼职的网站有哪些/北京seo网络推广
  • 网站备案信息真实性核验单 下载/绍兴百度seo
  • 做业务不花钱的网站有哪些/网站设计模板