AI个人学习
和实操指南
讯飞绘镜

Vanna 本地部署实战:轻松实现 Text2SQL 的高效转换

Vanna 是一个备受关注的 Text2SQL 开源框架,能够将自然语言转化为 SQL 查询语句。本文将详细介绍如何在本地部署 Vanna,并结合 MySQL 数据库和 Deepseek 模型进行配置与测试,助你快速上手这一工具。所有操作均基于实际测试,确保步骤清晰可行。

 

Python 环境搭建

要运行 Vanna,首先需要一个稳定的 Python 环境。以下以 Miniconda3 为例,逐步完成配置。

安装 Miniconda3

  1. 下载安装包:
    wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
    
  2. 执行安装脚本:
    sh Miniconda3-latest-Linux-x86_64.sh
    
  3. 配置环境变量:
    vim /etc/profile
    

    在文件中添加:

    export PATH="/data/apps/miniconda3/bin:$PATH"
    

    保存后刷新配置:

    source /etc/profile
    
  4. 如需卸载,可直接删除安装目录:
    rm -rf /data/apps/miniconda3/
    

创建虚拟环境

  1. 创建 Python 3.10 环境:
    conda create -n test python=3.10
    
  2. 激活环境(需在新终端或重启后生效):
    conda activate test
    
  3. 其他常用命令:
    • 退出环境:
      conda deactivate
      
    • 查看环境信息:
      conda info --env
      

完成以上步骤后,你已拥有一个独立的 Python 虚拟环境,为 Vanna 的部署奠定了基础。


 

Vanna 部署与配置

在 Python 环境准备就绪后,接下来进入 Vanna 的核心配置环节。以下操作参考官方文档(https://vanna.ai/docs/),并以 MySQL 数据库为例。

数据库连接配置

首先,确保能通过 MySQL 的账号、密码和端口正常登录数据库。测试连接成功后,打开 Vanna 官方文档的 MySQL 配置页面(左侧菜单栏选择 MySQL)。页面会展示连接代码示例,如下图所示:

MySQL 配置界面

根据你的数据库信息,调整代码中的参数(如 host、user、password 等),以确保 Vanna 能顺利连接。

选择语言模型

Vanna 支持多种大语言模型(LLM)。官方页面会提示选择模型,例如 Ollama 或 API 调用。这里以硅基流动的 Deepseek 模型为例进行说明。

  • Ollama 经验:曾尝试部署量化后的 Deepseek-7b 模型,但效果不佳,建议跳过此方案。
  • Deepseek API:通过硅基流动调用 Deepseek 模型表现更优。但需注意,若使用非官方支持的模型,需自定义 LLM 类。可参考 Vanna 开源项目中的 Mistral 实现(mistral.py),依样创建一个适配 Deepseek 的类。

配置界面如下:

语言模型选择

向量数据库设置

Vanna 默认集成 ChromaDB 作为小型向量数据库,无需额外安装。官方文档会根据你的选择生成相应代码,如下图:

向量数据库选项

安装依赖与代码准备

  1. 在激活的虚拟环境中安装 Vanna 及其依赖:
    pip install vanna
    
  2. 创建一个 .py 文件,将官方生成的代码复制进去。以下是适配 MySQL 和 Deepseek 的示例代码片段(需根据实际情况调整参数):
    from vanna.remote import VannaDefault
    vn = VannaDefault(model='deepseek', api_key='your_api_key')
    vn.connect_to_mysql(host='localhost', dbname='test_db', user='root', password='your_password', port=3306)
    

数据训练

Vanna 支持三种训练数据:SQL 语句、产品文档和数据库表结构描述。这里推荐使用表结构描述,效果更直观。训练步骤如下:

  1. 准备表结构数据(如 DDL 文件)。
  2. 使用官方提供的训练代码:
    vn.train(ddl="CREATE TABLE employees (id INT, name VARCHAR(255), salary INT)")
    
  3. 训练过程如下图所示:

训练数据示例

更多训练结果展示:

训练效果1
训练效果2

运行 Web 界面

训练完成后,运行以下 Flask API 代码即可启动 Vanna 的 Web UI:

from vanna.flask import VannaFlaskApp
app = VannaFlaskApp(vn)
app.run()

访问本地地址(通常为 http://127.0.0.1:5000),即可通过界面进行 SQL 查询。

Web UI 启动

 

查询效果展示

部署完成后,Vanna 的问答功能表现令人满意。以下是几个实际测试结果:

  • 输入:“请查询2024年3季度季报提交报告情况。”
    查询结果1
  • 输入:“统计数量”
    查询结果2
  • 输入:“污染物统计”
    查询结果3

总结与建议

通过以上步骤,你可以在本地成功部署 Vanna,并结合 MySQL 和 Deepseek 模型实现高效的 Text2SQL 功能。相比其他工具,Vanna 在易用性和效果上均有明显优势。建议初学者优先使用表结构训练数据,并根据实际需求调整语言模型配置。

CDN1
未经允许不得转载:首席AI分享圈 » Vanna 本地部署实战:轻松实现 Text2SQL 的高效转换

首席AI分享圈

首席AI分享圈专注于人工智能学习,提供全面的AI学习内容、AI工具和实操指导。我们的目标是通过高质量的内容和实践经验分享,帮助用户掌握AI技术,一起挖掘AI的无限潜能。无论您是AI初学者还是资深专家,这里都是您获取知识、提升技能、实现创新的理想之地。

联系我们
zh_CN简体中文