Vanna 是一个备受关注的 Text2SQL 开源框架,能够将自然语言转化为 SQL 查询语句。本文将详细介绍如何在本地部署 Vanna,并结合 MySQL 数据库和 Deepseek 模型进行配置与测试,助你快速上手这一工具。所有操作均基于实际测试,确保步骤清晰可行。
Python 环境搭建
要运行 Vanna,首先需要一个稳定的 Python 环境。以下以 Miniconda3 为例,逐步完成配置。
安装 Miniconda3
- 下载安装包:
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
- 执行安装脚本:
sh Miniconda3-latest-Linux-x86_64.sh
- 配置环境变量:
vim /etc/profile
在文件中添加:
export PATH="/data/apps/miniconda3/bin:$PATH"
保存后刷新配置:
source /etc/profile
- 如需卸载,可直接删除安装目录:
rm -rf /data/apps/miniconda3/
创建虚拟环境
- 创建 Python 3.10 环境:
conda create -n test python=3.10
- 激活环境(需在新终端或重启后生效):
conda activate test
- 其他常用命令:
- 退出环境:
conda deactivate
- 查看环境信息:
conda info --env
- 退出环境:
完成以上步骤后,你已拥有一个独立的 Python 虚拟环境,为 Vanna 的部署奠定了基础。
Vanna 部署与配置
在 Python 环境准备就绪后,接下来进入 Vanna 的核心配置环节。以下操作参考官方文档(https://vanna.ai/docs/),并以 MySQL 数据库为例。
数据库连接配置
首先,确保能通过 MySQL 的账号、密码和端口正常登录数据库。测试连接成功后,打开 Vanna 官方文档的 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 作为小型向量数据库,无需额外安装。官方文档会根据你的选择生成相应代码,如下图:
安装依赖与代码准备
- 在激活的虚拟环境中安装 Vanna 及其依赖:
pip install vanna
- 创建一个
.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 语句、产品文档和数据库表结构描述。这里推荐使用表结构描述,效果更直观。训练步骤如下:
- 准备表结构数据(如 DDL 文件)。
- 使用官方提供的训练代码:
vn.train(ddl="CREATE TABLE employees (id INT, name VARCHAR(255), salary INT)")
- 训练过程如下图所示:
更多训练结果展示:
运行 Web 界面
训练完成后,运行以下 Flask API 代码即可启动 Vanna 的 Web UI:
from vanna.flask import VannaFlaskApp
app = VannaFlaskApp(vn)
app.run()
访问本地地址(通常为 http://127.0.0.1:5000
),即可通过界面进行 SQL 查询。
查询效果展示
部署完成后,Vanna 的问答功能表现令人满意。以下是几个实际测试结果:
- 输入:“请查询2024年3季度季报提交报告情况。”
- 输入:“统计数量”
- 输入:“污染物统计”
总结与建议
通过以上步骤,你可以在本地成功部署 Vanna,并结合 MySQL 和 Deepseek 模型实现高效的 Text2SQL 功能。相比其他工具,Vanna 在易用性和效果上均有明显优势。建议初学者优先使用表结构训练数据,并根据实际需求调整语言模型配置。