开发者空间云开发环境使用Vanna配合ollama基于GaussDB的自然语言分析系统
一、概述
1.1 案例介绍
使用Vanna配合本地Ollama,并借助开发者空间云开发环境提供的免费GaussDB数据库开发环境进构建一个先进的AI自然语言分析系统。
GaussDB:华为自主创新研发的分布式关系型数据库。该产品支持分布式事务,同城跨AZ部署,数据0丢失,支持1000+的扩展能力,PB级海量存储。同时拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能为企业提供功能全面,稳定可靠,扩展性强,性能优越的企业级数据库服务。
Vanna:作为数据处理和自然语言处理(NLP)的关键组件,Vanna负责数据的预处理、清洗、转换以及NLP任务的执行,如文本分类、情感分析、实体识别等。
Ollama:作为AI模型和算法的核心,Ollama提供了丰富的机器学习模型和深度学习算法,用于训练和优化自然语言处理任务。它与Vanna紧密集成,共同实现高效的数据分析和知识提取。
华为开发者空间,是为全球开发者打造的专属开发者空间,致力于为每位开发者提供一台云开发环境、一套开发工具和云上存储空间,汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为各项根技术的开发工具资源,并提供配套案例指导开发者 从开发编码到应用调测,基于华为根技术生态高效便捷的知识学习、技术体验、应用创新。
1.2 适用对象
- 企业
- 个人开发者
- 高校学生
1.3 案例时间
本案例总时长预计40分钟。
1.4 案例流程

说明:
- 在开发者空间中安装Ollama与Vanna
- 申请华为云开发者空间的GaussDB数据库;
- 启动vanna链接GaussDB数据库进行自然语言数据库分析。
1.5 资源总览
本案例预计花费0.8元。
资源名称 | 规格 | 单价(元) | 时长(分钟) |
---|---|---|---|
华为开发者空间 - 云开发环境 | 鲲鹏通用计算增强型 kc1 | 2vCPUs | 4G | HCE2.0 | 免费 | 60 |
华为开发者空间 - 生态版GaussDB | 单副本集中式版 | 4 vCPUs | 16G | HCE OS 64bit (200GB) | 免费 | 60 |
弹性公网IP | 按流量计费 5Mbit/s | 0.8元/GB | 60 |
二、案例准备工作
2.1 配置云开发环境
根据案例《开发者空间 - 云开发环境使用指导》,请查看下面链接,配置云开发环境,并通过xshell、crt等链接工具登录云开发环境。
参考如上案例链接进行配置并连接:
创建本地PC和远程云开发环境的隧道链接
通过xshell、crt等链接工具登录云开发环境,进行测试
2.2 领取GaussDB数据库
2.2.1 免费领取GaussDB在线试用版(2025年 06月 21日 - 2025年 12月 31日)。
注:部署的Django项目需要对接GaussDB,因此GaussDB需要绑定EIP,参考上述指导中领取部分第(5)步
因为默认vanna的postgrs驱动连接gaussdb认证方式有问题,实例创建完成后修改password_encryption_type参数为0,然后在基本信息里修改一下root密码
2.2.2 进行数据初始化
领取Gaussdb实例后连接数据库点击登录
输入用户名密码进行登录
点击新建数据库,创建数据库school,兼容选择mysql点击确定
点击去school数据库,创建schema名字school,点击确认
初始化表和数据
点击sql窗口,数据库选择school,schema也选择上面创建的school,拷贝表和数据脚本到窗口栏,点击执行sql
样例数据:
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);
2.3 验证云开发环境与GaussDB互通
通过xshell或windows命令终端登录云开发环境,测试GaussDB能否连接,如下是通的
三、 安装Ollama
首先我们要先配置pycharm远程开发环境可参考如下用例
基于华为开发者空间-云开发环境,PyCharm SSH远程开发环境搭建:https://devstation.connect.huaweicloud.com/space/devportal/casecenter/4ea8a2c6e7ac4f1cbe56853876e2e84d/1
后续所有操作都基于pycharm的远程命令行进行操作
3.1 安装Ollama
Ollama 是一个强大的开源工具,旨在帮助用户轻松地在本地运行、部署和管理大型语言模型(LLMs)。它提供了一个简单的命令行界面,使用户能够快速下载、运行和与各种预训练的语言模型进行交互
执行安装命令如下:
方式一(推荐,安装速度快):
curl -fsSL https://dtse-mirrors.obs.cn-north-4.myhuaweicloud.com/case/0035/install.sh | sudo bash
3.2 模型部署
接下来可以借助 Ollama 工具来部署 Deepseek 大模型,部署 deepseek-r1:1.5b 版本,因为资源有限我们部署一个小一点的模型,执行命令:
ollama pull deepseek-r1:1.5b
部署的时间长短依赖于网络的情况,部署完成后,我们就可以与 Deepseek 大模型进行对话了:
ollama run deepseek-r1:1.5b
四、 安装配置Vanna
4.1 python下安装Vanna
python 安装建议3.10以上
安装前更新下pip,然后执行安装
python3 -m pip install --upgrade pip
pip install 'vanna[chromadb,ollama,postgres]' -i https://repo.huaweicloud.com/repository/pypi/simple/
4.2 Vanna官网生成示例代码
Vanna是一款基于开源Python框架的SQL生成工具,可以用日常用语提问,Vanna自动将其转换为SQL语句,简化数据库查询过程。
生成实例代码
官网:https://vanna.ai/
文档:https://vanna.ai/docs/
Vanna的例子,链接如下,按照如下图选择生成示例代码:
https://vanna.ai/docs/postgres-ollama-chromadb/
依次选择Ollama-ChromaDB-postgres 会生成示例代码
样例代码:
from vanna.ollama import Ollama
from vanna.chromadb import ChromaDB_VectorStore
class MyVanna(ChromaDB_VectorStore, Ollama):
def __init__(self, config=None):
ChromaDB_VectorStore.__init__(self, config=config)
Ollama.__init__(self, config=config)
vn = MyVanna(config={'model': 'deepseek-r1:1.5b', 'ollama_host': 'http://localhost:11434'})
vn.connect_to_postgres(host='xxxxxxx', dbname='school', user='xxxx', password='xxxx', port='8000')
vn.train(ddl="""
CREATE TABLE school.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 school.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 school.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()
五、 启动应用并使用
4.1 代码配置
打开pycham把样例代码粘贴进main.py,并修改模型和数据库配置
vn = MyVanna(config={'model': 'deepseek-r1:1.5b', 'ollama_host': 'http://localhost:11434'})
vn.connect_to_postgres(host='xxxx', dbname='school', user='xxxx', password='xxxx', port='8000')
上传代码到远程开发环境
5.2 启动应用
进入自己配置的ssh远程目录启动应用
nohup python main.py &
查看输出日志,日志最后有系统的登录地址
tail nohup.out
创建应用启动的对应端口(8084)的隧道协议,可参考开发者空间 - 云开发环境使用指导-第4章2小节
hdspace devenv start-tunnel --instance-id=0edfc31f922c4b54b74ba8819 --remote-port=8084 --local-port=8084
5.3 使用应用分析数据库
在浏览器输入http://127.0.0.1:8084,进行登录,第一次比较慢等待一下
然后我们可以用自然语言操作数据库了,因为已开发环境内存有限,deepseek-r1:1.5b回答的不太好,如果资源充足可以换别的模型,生成的sql问题可以点击修复
sql结果会自动生成表格和图表
至此本案例关于在开发者空间–远程开发环境中使用Vanna配合ollama基于GaussDB的自然语言分析系统实践操作完毕。
我正在参加【案例共创】第6期 开发者空间-基于云开发环境和GaussDB构建应用 https://bbs.huaweicloud.com/forum/thread-0229189398343651003-1-1.html
- 点赞
- 收藏
- 关注作者
评论(0)