当前位置:   article > 正文

Vanna使用ollama分析本地MySQL数据库_vanna ollama

vanna ollama

        上一章节中已经实现了vanna的本地运行,但是大模型和数据库都还是远程的,因为也就没办法去训练,这节一起来实现vanna分析本地mysql数据库,因为要使用本地大模型,所以开始之前需要给本地安装好大模型,我这里用ollama下载了llama3,这节就用llama3作为大模型分析,如果本地没有ollama的可以参考我之前的章节安装一下,同时本地还需要安装mysql数据库,并创建一个表作为接下来用大模型分析的对象。

我这里的数据表如下:

        因为需要连接mysql数据库,因此需要安装mysql-connecter-python,同时我们将向量数据库换为ChromDB,在pycharm的命令提示符执行

  1. pip install vanna
  2. pip install ollama
  3. pip install ChromaDB
  4. pip install mysql-connector-python
  5. pip install 'vanna[chromadb,ollama,mysql]'

安装完成后,按照vanna的官方文档,实现MyVanna的方法

  1. class MyVanna(ChromaDB_VectorStore, Ollama):
  2. def __init__(self, config=None):
  3. ChromaDB_VectorStore.__init__(self, config=config)
  4. Ollama.__init__(self, config=config)

然后需要连接本地的ollama中的llama3,输入模型名称llama3:8b,并设置访问地址,然后替换连接的数据库,我的数据库在局域网,因此填写局域网的数据库IP,和账号密码

  1. vn = MyVanna(config={'model': 'llama3:8b','ollama_host':'http://127.0.0.1:11434'})
  2. def run_sql(sql: str) -> pd.DataFrame:
  3. cnx = mysql.connector.connect(user='root',password='123456',host='192.168.30.169',database='vanna')
  4. cursor = cnx.cursor()
  5. cursor.execute(sql)
  6. result = cursor.fetchall()
  7. columns = cursor.column_names
  8. # print('columns:',columns)
  9. df = pd.DataFrame(result, columns=columns)
  10. return df
  11. # 将函数设置到vn.run_sql中
  12. vn.run_sql = run_sql
  13. vn.run_sql_is_set = True

        此时已经可以连接到大模型,并访问数据库了,但是大模型并不知道数据结构,所以要对vanna进行简单的训练,官方的训练分为三种,DDL,Document,SQL,DDL就是建表语句,告诉大模型表结构,Document存放的是数据库中的一些专业术语,比如你要查询成年人的数量,那就要在document中记录,成年人是指大于18岁的人。SQL就是正常的sql语句了,另外每次的提问也会作为问答记录存到训练数据中,也可以提前手动添加问答训练数据。我们这里就只放一个建表语句,

  1. vn.train(ddl="""
  2. CREATE TABLE `book` (
  3. `id` int NOT NULL AUTO_INCREMENT COMMENT '表唯一ID',
  4. `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  5. `book_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '书的名字',
  6. `book_code` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '书的编号',
  7. `book_introduction` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '书的简介',
  8. `book_publisher` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '书的出版社',
  9. `book_image` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL COMMENT '书的图片',
  10. PRIMARY KEY (`id`) USING BTREE
  11. ) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = 'book表' ROW_FORMAT = Dynamic;
  12. """)

然后运行项目,运行成功后会在控制台打印访问地址:

打开访问地址

然后可以在提问框开始提问了,这里输入每种书各有多少本,然后回车,

最终返回结果如下,vanna不仅先返回了正确的sql,同时会把结果以表格的形式展示,提供导出功能,最终还会根据结果的数据结构,选择适合的图表做展示。

如果需要完整源码或者其他问题可以给我留言

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/812363
推荐阅读
相关标签
  

闽ICP备14008679号