AI驱动TDSQL-C Serverless 数据库技术实战营-Vanna配合ollama分析TDSQL-C Serverless 数据库
经过这么长时间的迭代,大模型种类繁多,使用也越来越简单了,今天我们使用Vanna配合ollama本地大模型,基于TDSQL-C MYSQL Serverless构建智能数据库分析系统
目录
概述
一、Ollama本地大模型安装
1、安装依赖包
2、安装Ollama大模型
3、下载模型
4、修改配置
5、运行模型
二、vanna安装配置
1、生成实例代码
2、python下安装vanna
三、申请TDSQL-C mysql severless实例准备数据库
1、选购数据库
2、导入表数据
四、python启动vanna,验证ai分析数据库
1、修改第二步生成的示例脚本
2、运行环境
3、ai分析数据库
五、遇到的报错及处理
1、安装Ollama遇到报错
2、安装vanna遇到报错
3、环境运行时报错
4、python环境报错
概述
AI技术正深刻影响着数据库领域,其中大语言模型(LLMs)的出现,如Ollama本地大型语言模型部署和管理的工具、腾讯云的高性能应用服务HAI,为数据库分析带来了新的可能性。Vanna作为一款先进的基于开源Python框架的SQL生成工具,其与Ollama大模型的配合,为数据库的分析提供了强大的支持。
向量数据库与关系型数据库融合:在AI时代,向量数据库逐渐崭露头角,而关系型数据库如TDSQL-C也在不断发展。Vanna与Ollama的配合,展示了这两种数据库技术如何协同工作,以提供更高效、更智能的数据分析。
Serverless技术的应用:TDSQL-C作为一种Serverless数据库,具有高度的灵活性和可扩展性。Vanna与Ollama的结合,进一步增强了其在数据处理和分析方面的能力,使得开发者能够更轻松地应对大数据和复杂查询的挑战。
一、Ollama本地大模型安装
Ollama支持win,linux,mac,本次在linux虚拟机安装,操作系统centos 7.9,内存8G
1、安装依赖包
yum install pciutils
yum install lshw
否则安装会遇到WARNING: Unable to detect NVIDIA/AMD GPU. Install lspci or lshw to automatically detect and install GPU dependencies.
2、安装Ollama大模型
Download Ollama on LinuxOllama大模型下载地址:Download Ollama on Linux
官方文档上的安装方式是如下:
curl -fsSL https://ollama.com/install.sh | sh
不过一般国内下载比较慢,安装过程一直卡在"»> Downloading ollama…"
可以使用如下方法:
详细可参考:Ollama安装指南:解决国内下载慢和安装卡住问题 | AGI方法 (defagi.com)
# 下载安装脚本
curl -fsSL https://ollama.com/install.sh -o o_install.sh
# 打开o_install.sh,找到以下两个下载地址:https://ollama.com/download/ollama-linux-${ARCH}${VER_PARAM}
https://ollama.com/download/ollama-linux-amd64-rocm.tgz${VER_PARAM}# 替换为https://github.moeyy.xyz/https://github.com/ollama/ollama/releases/download/v0.3.2/ollama-linux-amd64
https://github.moeyy.xyz/https://github.com/ollama/ollama/releases/download/v0.3.2/ollama-linux-amd64-rocm.tgz
然后执行安装
sh o_install.sh
3、下载模型
下面有一些可下载的示例模型本次我们下载llama3.18b
ollama pull llama3.1:8b
Ollama 一些可下载的示例模型,详细可以参考官网:
Model | Parameters | Size | Download |
---|---|---|---|
Llama 3 | 8B | 4.7GB | ollama run llama3 |
Llama 3 | 70B | 40GB | ollama run llama3:70b |
Mistral | 7B | 4.1GB | ollama run mistral |
Dolphin Phi | 2.7B | 1.6GB | ollama run dolphin-phi |
Phi-2 | 2.7B | 1.7GB | ollama run phi |
Neural Chat | 7B | 4.1GB | ollama run neural-chat |
Starling | 7B | 4.1GB | ollama run starling-lm |
Code Llama | 7B | 3.8GB | ollama run codellama |
Llama 2 Uncensored | 7B | 3.8GB | ollama run llama2-uncensored |
Llama 2 13B | 13B | 7.3GB | ollama run llama2:13b |
Llama 2 70B | 70B | 39GB | ollama run llama2:70b |
Orca Mini | 3B | 1.9GB | ollama run orca-mini |
LLaVA | 7B | 4.5GB | ollama run llava |
Gemma | 2B | 1.4GB | ollama run gemma:2b |
Gemma | 7B | 4.8GB | ollama run gemma:7b |
Solar | 10.7B | 6.1GB | ollama run solar |
注意:运行 7B 模型至少需要 8 GB 的 RAM,运行 13B 模型需要 16 GB,运行 33B 模型需要 32 GB。
4、修改配置
检查服务
systemctl status ollama
修改监听地址
#默认只能本地访问
netstat -tunlp|grep ollama
tcp 0 0 127.0.0.1:11434 0.0.0.0:* LISTEN 23094/ollama vim /etc/systemd/system/ollama.service
##添加如下[Service]
Environment="OLLAMA_HOST=0.0.0.0"
更改模型存放位置(选做)
vim /etc/systemd/system/ollama.service
#添加如下
[Service]
Environment="OLLAMA_MODELS=/data/ollama/models"
重启 ollama
systemctl daemon-reload
systemctl restart ollama
在浏览器测试一下
5、运行模型
运行模型就可以基于模型交互,及训练模型了
ollama run llama3.1:8b
二、vanna安装配置
Vanna是一款基于开源Python框架的SQL生成工具,可以用日常用语提问,Vanna自动将其转换为SQL语句,简化数据库查询过程。
1、生成实例代码
官网:https://vanna.ai/
文档:https://vanna.ai/docs/
Vanna的例子,链接如下,按照如下图选择生成示例代码:
https://vanna.ai/docs/mysql-oll
选择Ollama-ChromaDB-mysql 会生成示例代码
2、python下安装vanna
python 安装建议3.10以上
pip install vanna[chromadb,ollama,mysql]
三、申请TDSQL-C mysql severless实例准备数据库
TDSQL-C MySQL Serverless实例是腾讯云针对中小型企业或个人开发者推出的一款数据库产品,具有资源用量低、简单易用、弹性灵活和价格低廉等优点。
访问腾讯云官网申请 TDSQL-C Mysql 服务器
点击链接:https://cloud.tencent.com/product/tdsqlc
详细可参考腾讯的手册
1、选购数据库
立即购买后选择severless,大小写选择不敏感,并打开公网地址
2、导入表数据
申请完成后登录数据库创建数据库school,并导入脚本
CREATE TABLE students (student_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '学生ID',name VARCHAR(50) NOT NULL COMMENT '学生姓名',age INT COMMENT '年龄',major VARCHAR(100) COMMENT '专业',email VARCHAR(100) UNIQUE COMMENT '电子邮件'
);INSERT INTO students (name, age, major, email) VALUES
('张三', 20, '计算机科学', 'zhangsan@example.com'),
('李四', 21, '电子工程', 'lisi@example.com'),
('王五', 19, '数学', 'wangwu@example.com'),
('赵六', 22, '物理', 'zhaoliu@example.com'),
('钱七', 20, '化学', 'qianqi@example.com'),
('孙八', 21, '生物', 'sunba@example.com'),
('周九', 19, '历史', 'zhoujiu@example.com'),
('吴十', 22, '哲学', 'wushi@example.com'),
('郑十一', 20, '艺术', 'zhengshiyi@example.com'),
('王十二', 21, '音乐', 'wangshier@example.com'),
('陈十三', 19, '体育', 'chenshisan@example.com'),
('冯十四', 22, '英语', 'fengshisi@example.com'),
('董十五', 20, '法语', 'dongshiwu@example.com'),
('萧十六', 21, '德语', 'xiaoshiliu@example.com'),
('曹十七', 19, '日语', 'caoshiqi@example.com'),
('许十八', 22, '韩语', 'xushiba@example.com'),
('蒋十九', 20, '西班牙语', 'jiangshijiu@example.com'),
('沈二十', 21, '意大利语', 'shenshier@example.com'),
('韩二十一', 19, '心理学', 'hanershiyi@example.com'),
('杨二十二', 22, '社会学', 'yangershi@example.com');CREATE TABLE courses (course_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '课程ID',course_name VARCHAR(100) NOT NULL COMMENT '课程名称',credits INT COMMENT '学分',teacher_id INT COMMENT '教师ID'
);INSERT INTO courses (course_name, credits, teacher_id) VALUES
('数据结构', 4, 1),
('微积分', 3, 2),
('编程基础', 3, 3),
('物理实验', 2, 4),
('化学原理', 3, 5),
('生物技术', 4, 6),
('历史概论', 2, 7),
('哲学思考', 3, 8);CREATE TABLE enrollments (enrollment_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '选课记录ID',student_id INT NOT NULL COMMENT '学生ID',course_id INT NOT NULL COMMENT '课程ID',grade FLOAT COMMENT '成绩'
);INSERT INTO enrollments (student_id, course_id, grade) VALUES
(1, 1, 85.5),
(2, 2, 90.0),
(3, 3, 78.5),
(4, 4, 82.0),
(5, 5, 88.5),
(6, 6, 75.0),
(7, 7, 80.5),
(8, 8, 87.0),
(9, 1, 81.0),
(10, 2, 85.5),
(11, 3, 79.0),
(12, 4, 83.0),
(13, 5, 86.5),
(14, 6, 77.0),
(15, 7, 82.5),
(16, 8, 88.0),
(17, 1, 84.0),
(18, 2, 87.5),
(19, 3, 80.0),
(20, 4, 85.0),
(21, 5, 83.5),
(22, 6, 78.0),
(23, 7, 81.5),
(24, 8, 86.0),
(25, 1, 82.0),
(26, 2, 84.5),
(27, 3, 79.5),
(28, 4, 83.0),
(29, 5, 86.5),
(30, 6, 77.5);
四、python启动vanna,验证ai分析数据库
1、修改第二步生成的示例脚本
修改数据库地址、端口、用户名、密码为新建tdsql-c mysql serverless信息
vn.connect_to_mysql(host='bj-cynosdbmysql-grp-80oh0z5q.sql.tencentcdb.com', dbname='school', user='root', password='oracle123!', port=25930)
修改Ollama大模型的地址,和model,这里也可以使用腾讯云的高性能应用服务HAI,直接简单创建就可以使用
vn = MyVanna(config={'model': 'llama3.1:8b','ollama_host':'http://192.168.150.115:11434'})
完整代码
from vanna.ollama import Ollama
from vanna.chromadb import ChromaDB_VectorStore
import pandas as pdclass MyVanna(ChromaDB_VectorStore, Ollama):def __init__(self, config=None):ChromaDB_VectorStore.__init__(self, config=config)Ollama.__init__(self, config=config)vn = MyVanna(config={'model': 'llama3.1:8b','ollama_host':'http://192.168.150.115:11434'})
vn.connect_to_mysql(host='bj-cynosdbmysql-grp-80oh0z5q.sql.tencentcdb.com', dbname='school', user='root', password='oracle123!', port=25930)vn.train(ddl="""CREATE TABLE students (student_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '学生ID',name VARCHAR(50) NOT NULL COMMENT '学生姓名',age INT COMMENT '年龄',major VARCHAR(100) COMMENT '专业',email VARCHAR(100) UNIQUE COMMENT '电子邮件'
);CREATE TABLE courses (course_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '课程ID',course_name VARCHAR(100) NOT NULL COMMENT '课程名称',credits INT COMMENT '学分',teacher_id INT COMMENT '教师ID'
);CREATE TABLE enrollments (enrollment_id INT AUTO_INCREMENT PRIMARY KEY COMMENT '选课记录ID',student_id INT NOT NULL COMMENT '学生ID',course_id INT NOT NULL COMMENT '课程ID',grade FLOAT COMMENT '成绩'
);""")from vanna.flask import VannaFlaskApp
VannaFlaskApp(vn,allow_llm_to_see_data=True).run()
2、运行环境
运行后会打印vanna登录地址
在浏览器打开地址(第一次比较慢等待一下)
3、ai分析数据库
可以愉快的ai来分析数据了,输入查询:每门课程名称最高分,vanna会先返回了正确的sql,同时会把结果以表格的形式展示,提供导出功能,最终还会根据结果的数据结构,选择适合的图表做展示。
五、遇到的报错及处理
1、安装Ollama遇到报错
WARNING: Unable to detect NVIDIA/AMD GPU. Install lspci or lshw to automatically detect and install GPU dependencies.
解决:
安装如下两个包
yum install pciutils
yum install lshw
2、安装vanna遇到报错
执行pip install vanna[chromadb,ollama,mysql]安装vanna是
WARNING: vanna 0.0.33 does not provide the extra 'ollama'
解决:
python版本太低,开始安装时python 3.8,升级到3.12解决
3、环境运行时报错
环境运行时使用了chromadb,运行时出现错误:
Your system has an unsupported version of sqlite3. Chroma requires sqlite3 &
解决:
升级sqlite3
根据自己的操作系统在 SQLite Download Page 下载最新的sqlite包,解压后是"sqlite3.def"和"sqlite3.dll"两个文件。将这两个文件覆盖到 "python安装目录/DLLs"下即可。
4、python环境报错
raise ResponseError(e.response.text, e.response.status_code) from None
ollama._types.ResponseError
解决:
装Ollama时,开了代理,虽然没有起到作用忘记关掉了,关掉代理,重新运行解决
在AI快速发展的当下,各行各业都面临着前所未有的变革,逆水行舟,不进则退