当前位置: 首页 > news >正文

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 一些可下载的示例模型,详细可以参考官网:

ModelParametersSizeDownload
Llama 38B4.7GBollama run llama3
Llama 370B40GBollama run llama3:70b
Mistral7B4.1GBollama run mistral
Dolphin Phi2.7B1.6GBollama run dolphin-phi
Phi-22.7B1.7GBollama run phi
Neural Chat7B4.1GBollama run neural-chat
Starling7B4.1GBollama run starling-lm
Code Llama7B3.8GBollama run codellama
Llama 2 Uncensored7B3.8GBollama run llama2-uncensored
Llama 2 13B13B7.3GBollama run llama2:13b
Llama 2 70B70B39GBollama run llama2:70b
Orca Mini3B1.9GBollama run orca-mini
LLaVA7B4.5GBollama run llava
Gemma2B1.4GBollama run gemma:2b
Gemma7B4.8GBollama run gemma:7b
Solar10.7B6.1GBollama 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快速发展的当下,各行各业都面临着前所未有的变革,逆水行舟,不进则退


http://www.mrgr.cn/news/34870.html

相关文章:

  • Mybatis基础操作
  • 奇迹再现!帕金森患者6年后停药,竟能自如行走:背后的故事与启示
  • 【Python】多个dataframe存入excel的不同的sheet表里,而不会被覆盖的方法
  • 全面解析 Apache Pulsar
  • 数据结构(顺序表)
  • lamda表达式例子全集详解
  • JAVA智能匹配真情传递红娘婚恋交友系统小程序源码
  • PyCharm远程连接AutoDL服务器实现程序调试
  • vue2实现提取字符串数字并修改数字样式(正则表达式)
  • 【linux内核】eBPF基础及应用调研
  • DeiT(ICML2021):Data-efficient image Transformer,基于新型蒸馏且数据高效的ViT!
  • 分布式锁实现与原理探究:介绍总结
  • jQuery——jQuery的基本使用
  • Vue ElemetUI table的行实现按住上下键高亮上下移动效果
  • 剑侠情缘c++源码全套(增加缺失的头文件和相关的库,其它网上流传的都是不全的)剑网三源码
  • springboot中药材进存销管理系统
  • 一例H-worm变种的分析
  • 拼团活动开发秘籍:PHP+Redis实现暂存成团信息,提升效率!
  • JDBC 与 Mybatis 对比
  • 软件架构设计原则