当前位置:   article > 正文

Vanna-AI实现自然语言转SQL

vanna-ai

一、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数据库执行以下脚本)

  1. CREATE TABLE IF NOT EXISTS vuser (
  2. `id` INT PRIMARY KEY COMMENT '用户ID',
  3. username VARCHAR(50) COMMENT '用户名',
  4. email VARCHAR(100) COMMENT '电子邮件',
  5. age INT COMMENT '年龄',
  6. gender VARCHAR(10) COMMENT '性别(男/女)',
  7. city VARCHAR(50) COMMENT '城市',
  8. dt datetime COMMENT '创建日期'
  9. ) COMMENT='用户信息表' CHARACTER SET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  10. INSERT INTO vuser (`id`, username, email, age, gender, city,dt) VALUES
  11. (1, '张三', 'zhangsan@example.com', 30, '男', '北京','2024-06-09'),
  12. (2, '李四', 'lisi@example.com', 25, '女', '上海','2024-06-09'),
  13. (3, '王五', 'wangwu@example.com', 40, '男', '广州','2024-07-09'),
  14. (4, '赵六', 'zhaoliu@example.com', 35, '女', '深圳','2024-03-09'),
  15. (5, '小明', 'xiaoming@example.com', 28, '男', '成都','2024-07-16'),
  16. (6, '小红', 'xiaohong@example.com', 45, '女', '重庆','2024-06-09'),
  17. (7, '小华', 'xiaohua@example.com', 32, '男', '天津','2024-06-09'),
  18. (8, '小丽', 'xiaoli@example.com', 27, '女', '南京','2024-06-16'),
  19. (9, '小李', 'xiaoli2@example.com', 38, '男', '武汉','2024-06-23'),
  20. (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模型

此步骤可以参考之前的博文:

CSDNicon-default.png?t=N7T8https://mp.csdn.net/mp_blog/creation/editor/140666695

》准备python测试脚本test.py

  1. from vanna.ollama import Ollama
  2. from vanna.chromadb import ChromaDB_VectorStore
  3. class MyVanna(ChromaDB_VectorStore, Ollama):
  4. def __init__(self, config=None):
  5. ChromaDB_VectorStore.__init__(self, config=config)
  6. Ollama.__init__(self, config=config)
  7. vn = MyVanna(config={'model': 'qwen2:7b','ollama_host':'http://10.33.19.16:11434'})
  8. vn.connect_to_mysql(host='ip', dbname='langchat', user='xxx', password='xxx', port=3306)
  9. # The information schema query may need some tweaking depending on your database. This is a good starting point.
  10. df_information_schema = vn.run_sql("SELECT * FROM INFORMATION_SCHEMA.COLUMNS")
  11. # This will break up the information schema into bite-sized chunks that can be referenced by the LLM
  12. plan = vn.get_training_plan_generic(df_information_schema)
  13. vn.train(ddl="""CREATE TABLE IF NOT EXISTS vuser (
  14. `id` INT PRIMARY KEY COMMENT '用户ID',
  15. username VARCHAR(50) COMMENT '用户名',
  16. email VARCHAR(100) COMMENT '电子邮件',
  17. age INT COMMENT '年龄',
  18. gender VARCHAR(10) COMMENT '性别(男/女)',
  19. city VARCHAR(50) COMMENT '城市',
  20. dt datetime COMMENT '创建日期'
  21. ) COMMENT='用户信息表' CHARACTER SET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
  22. """)
  23. from vanna.flask import VannaFlaskApp
  24. app = VannaFlaskApp(vn)
  25. app.run()

》测试效果

启动成功后浏览器打开应用,输入文字,看看能不能查到你想要的数据。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/985970
推荐阅读
相关标签
  

闽ICP备14008679号