赞
踩
一、Vanna-AI概述
Vanna-AI是一款能够将自然语言查询转换为SQL语句的智能助手。它通过深度学习和自然语言处理技术,理解用户的查询意图,并自动生成相应的SQL语句。这一功能极大地简化了数据库查询的过程,提高了工作效率。
SQL作为数据库管理的核心语言,在数据检索、更新、删除等方面发挥着至关重要的作用。在日常工作中,无论是数据分析师、数据库管理员还是普通用户,都需要频繁地使用SQL来操作数据库。然而,手动编写SQL语句不仅耗时耗力,而且容易出错。这时,Vanna-AI的Text-to-SQL功能便显得尤为重要。
Vanna-AI在SQL生成领域的优势与价值主要体现在以下几个方面。首先,它能够快速准确地理解用户的查询意图,并生成符合要求的SQL语句,大大提高了工作效率。其次,Vanna-AI的智能化特性使得生成的SQL语句更加准确可靠,减少了因人为错误导致的数据问题。最后,Vanna-AI的易用性和可扩展性使得它能够满足不同用户的需求,为数据库管理带来了更加便捷和高效的解决方案。
二、Vanna安装
》此处默认已经安装了conda环境,创建虚拟环境:
conda create -n vanna -y python=3.9
》激活环境
conda activate vanna
》准备测试数据(找个mysql数据库执行以下脚本)
- CREATE TABLE IF NOT EXISTS vuser (
- `id` INT PRIMARY KEY COMMENT '用户ID',
- username VARCHAR(50) COMMENT '用户名',
- email VARCHAR(100) COMMENT '电子邮件',
- age INT COMMENT '年龄',
- gender VARCHAR(10) COMMENT '性别(男/女)',
- city VARCHAR(50) COMMENT '城市',
- dt datetime COMMENT '创建日期'
- ) COMMENT='用户信息表' CHARACTER SET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-
-
- INSERT INTO vuser (`id`, username, email, age, gender, city,dt) VALUES
- (1, '张三', 'zhangsan@example.com', 30, '男', '北京','2024-06-09'),
- (2, '李四', 'lisi@example.com', 25, '女', '上海','2024-06-09'),
- (3, '王五', 'wangwu@example.com', 40, '男', '广州','2024-07-09'),
- (4, '赵六', 'zhaoliu@example.com', 35, '女', '深圳','2024-03-09'),
- (5, '小明', 'xiaoming@example.com', 28, '男', '成都','2024-07-16'),
- (6, '小红', 'xiaohong@example.com', 45, '女', '重庆','2024-06-09'),
- (7, '小华', 'xiaohua@example.com', 32, '男', '天津','2024-06-09'),
- (8, '小丽', 'xiaoli@example.com', 27, '女', '南京','2024-06-16'),
- (9, '小李', 'xiaoli2@example.com', 38, '男', '武汉','2024-06-23'),
- (10, '小美', 'xiaomei@example.com', 33, '女', '西安','2024-06-12');
》安装vanna
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 'vanna[chromadb,ollama,mysql]'
》安装ollama并且运行qwen2:7b模型
此步骤可以参考之前的博文:
CSDNhttps://mp.csdn.net/mp_blog/creation/editor/140666695
》准备python测试脚本test.py
- from vanna.ollama import Ollama
- from vanna.chromadb import ChromaDB_VectorStore
-
- class MyVanna(ChromaDB_VectorStore, Ollama):
- def __init__(self, config=None):
- ChromaDB_VectorStore.__init__(self, config=config)
- Ollama.__init__(self, config=config)
-
- vn = MyVanna(config={'model': 'qwen2:7b','ollama_host':'http://10.33.19.16:11434'})
- vn.connect_to_mysql(host='ip', dbname='langchat', user='xxx', password='xxx', port=3306)
- # The information schema query may need some tweaking depending on your database. This is a good starting point.
- df_information_schema = vn.run_sql("SELECT * FROM INFORMATION_SCHEMA.COLUMNS")
- # This will break up the information schema into bite-sized chunks that can be referenced by the LLM
- plan = vn.get_training_plan_generic(df_information_schema)
- vn.train(ddl="""CREATE TABLE IF NOT EXISTS vuser (
- `id` INT PRIMARY KEY COMMENT '用户ID',
- username VARCHAR(50) COMMENT '用户名',
- email VARCHAR(100) COMMENT '电子邮件',
- age INT COMMENT '年龄',
- gender VARCHAR(10) COMMENT '性别(男/女)',
- city VARCHAR(50) COMMENT '城市',
- dt datetime COMMENT '创建日期'
- ) COMMENT='用户信息表' CHARACTER SET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
- """)
- from vanna.flask import VannaFlaskApp
- app = VannaFlaskApp(vn)
- app.run()
》测试效果
启动成功后浏览器打开应用,输入文字,看看能不能查到你想要的数据。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。