Vanna使用ollama分析本地MySQL數據庫

????????上一章節中已經實現了vanna的本地運行,但是大模型和數據庫都還是遠程的,因為也就沒辦法去訓練,這節一起來實現vanna分析本地mysql數據庫,因為要使用本地大模型,所以開始之前需要給本地安裝好大模型,我這里用ollama下載了llama3,這節就用llama3作為大模型分析,如果本地沒有ollama的可以參考我之前的章節安裝一下,同時本地還需要安裝mysql數據庫,并創建一個表作為接下來用大模型分析的對象。

我這里的數據表如下:

? ? ? ? 因為需要連接mysql數據庫,因此需要安裝mysql-connecter-python,同時我們將向量數據庫換為ChromDB,在pycharm的命令提示符執行

pip install vanna
pip install ollama
pip install ChromaDB
pip install mysql-connector-python
pip install 'vanna[chromadb,ollama,mysql]'

安裝完成后,按照vanna的官方文檔,實現MyVanna的方法

class MyVanna(ChromaDB_VectorStore, Ollama):def __init__(self, config=None):ChromaDB_VectorStore.__init__(self, config=config)Ollama.__init__(self, config=config)

然后需要連接本地的ollama中的llama3,輸入模型名稱llama3:8b,并設置訪問地址,然后替換連接的數據庫,我的數據庫在局域網,因此填寫局域網的數據庫IP,和賬號密碼

vn = MyVanna(config={'model': 'llama3:8b','ollama_host':'http://127.0.0.1:11434'})def run_sql(sql: str) -> pd.DataFrame:cnx = mysql.connector.connect(user='root',password='123456',host='192.168.30.169',database='vanna')cursor = cnx.cursor()cursor.execute(sql)result = cursor.fetchall()columns = cursor.column_names# print('columns:',columns)df = pd.DataFrame(result, columns=columns)return df# 將函數設置到vn.run_sql中
vn.run_sql = run_sql
vn.run_sql_is_set = True

????????此時已經可以連接到大模型,并訪問數據庫了,但是大模型并不知道數據結構,所以要對vanna進行簡單的訓練,官方的訓練分為三種,DDL,Document,SQL,DDL就是建表語句,告訴大模型表結構,Document存放的是數據庫中的一些專業術語,比如你要查詢成年人的數量,那就要在document中記錄,成年人是指大于18歲的人。SQL就是正常的sql語句了,另外每次的提問也會作為問答記錄存到訓練數據中,也可以提前手動添加問答訓練數據。我們這里就只放一個建表語句,

vn.train(ddl="""
CREATE TABLE `book`  (`id` int NOT NULL AUTO_INCREMENT COMMENT '表唯一ID',`create_time` datetime NULL DEFAULT NULL COMMENT '創建時間',`book_name` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '書的名字',`book_code` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '書的編號',`book_introduction` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '書的簡介',`book_publisher` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '書的出版社',`book_image` longtext CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL COMMENT '書的圖片',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = 'book表' ROW_FORMAT = Dynamic;
""")

然后運行項目,運行成功后會在控制臺打印訪問地址:

打開訪問地址

然后可以在提問框開始提問了,這里輸入每種書各有多少本,然后回車,

最終返回結果如下,vanna不僅先返回了正確的sql,同時會把結果以表格的形式展示,提供導出功能,最終還會根據結果的數據結構,選擇適合的圖表做展示。

如果需要完整源碼或者其他問題可以給我留言

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/18513.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/18513.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/18513.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

WPF/C#:理解與實現WPF中的MVVM模式

MVVM模式的介紹 MVVM(Model-View-ViewModel)是一種設計模式,特別適用于WPF(Windows Presentation Foundation)等XAML-based的應用程序開發。MVVM模式主要包含三個部分:Model(模型)、…

期權具體怎么交易詳細的操作流程?

期權就是股票,唯一區別標的物上證指數,會看大盤吧,交易兩個方向認購做多,認沽做空,雙向t0交易,期權具體交易流程可以理解選擇方向多和空,選開倉的合約,買入開倉和平倉沒了&#xff0…

【Spring Cloud】API網關

目錄 什么是API網關為什么需要API網關前言問題列表 API網關解決了什么問題常見的網關解決方案NginxLuaSpring Cloud Netflix ZuulSpringCloud Zuul的IO模型弊端 Spring Cloud Gateway 第二代網關——GatewayGateway的特征Spring Cloud Gateway的處理流程Spring Cloud Gateway的…

數據集要點和難點以及具體應用案例

數據集(Data set),又稱為資料集、數據集合或資料集合,是一種由數據所組成的集合。它通常以表格形式出現,其中每一列代表一個特定變量,每一行對應于某一成員的數據集的問題。數據集列出的價值觀為每一個變量,如身高和體重的一個物體或價值的隨機數,每個數值被稱為數據資…

我的又一個神奇的框架——Skins換膚框架

為什么會有換膚的需求 app的換膚,可以降低app用戶的審美疲勞。再好的UI設計,一直不變的話,也會對用戶體驗大打折扣,即使表面上不說,但心里或多或少會有些難受。所以app的界面要適當的改版啊,要不然可難受死…

Android Surface對應的Buffer怎么傳遞給HWC

Android Surface對應的Buffer怎么傳遞給HWC 引言 因為要預研Android Video overlay,需要將SurfaceView對應的GraphicBuffer從drm_hwcomposer中剝離出來,這就需要們了解SurfaceView對應的GraphicBuffer的前世今生,以及它的數據流向以及在各個…

輕兔推薦 —— vfox

簡介 vfox 是一個跨平臺且可擴展的版本管理工具,終于有一個可以管理所有運行環境的工具了 - 支持一鍵安裝 Java、Node.js、Flutter、.Net、Golang、PHP、Python等多種環境 - 支持一鍵切換不同版本 特點 支持Windows(非WSL)、Linux、macOS! 支持不同項目不同版本、…

(四)事件系統

視頻鏈接:尚硅谷2024最新版微信小程序 文章目錄 事件綁定和事件對象事件分類以及阻止事件冒泡事件傳參-data-*自定義數據事件傳參-mark 自定義數據事件綁定和事件對象 小程序中綁定事件與在網頁開發中綁定事件幾乎一致,只不過在小程序不能通過 on 的方式綁定事件,也沒有 cli…

C# 9.0的init訪問器

不控制可變性 下面是我們最常見的屬性聲明方式,允許屬性在類的內部和外部都可以讀取和修改 public int Id { get; set; }namespace Demo {public class Company{public int Id { get; set; }public Company(){}public Company(int id){Id id; // 可以在構造函數中…

22.Volatile原理

文章目錄 Volatile原理1.Volatile語義中的內存屏障1.1.volatile寫操作的內存屏障1.1.1.StoreStore 屏障1.1.2.StoreLoad 屏障 1.2.volatile讀操作的內存屏障1.2.1.LoadStore屏障1.2.2.LoadLoad屏障 2.volatile不具備原子性2.1.原理 Volatile原理 1.Volatile語義中的內存屏障 在…

用于生成 Avatar 的文本引導式情感和運動控制-InstructAvatar

網址 https://wangyuchi369.github.io/InstructAvatar/ 用于生成 Avatar 的文本引導式情感和運動控制 官網翻譯 最近的會說話的頭像生成模型在實現與音頻的真實和準確的嘴唇同步方面取得了長足的進步,但在控制和傳達頭像的詳細表情和情感方面往往存在不足&#…

APM2.8如何做加速度校準

加速度的校準建議準備一個六面平整,邊角整齊的方形硬紙盒或者塑料盒,如下圖所示,我們將以它作為APM校準時的水平垂直姿態參考,另外當然還需要一塊水平的桌面或者地面 首先用雙面泡沫膠或者螺絲將APM主板正面向上固定于方形盒子上&…

JavaScrip原型對象

參考 JavaScrip原型對象 | LogDicthttps://www.logdict.com/archives/javascripyuan-xing-mo-shi

每天寫兩道(二)LRU緩存、

146.LRU 緩存 . - 力扣(LeetCode) 請你設計并實現一個滿足 LRU (最近最少使用) 緩存 約束的數據結構。 實現 LRUCache 類: LRUCache(int capacity) 以 正整數 作為容量 capacity 初始化 LRU 緩存int get(int key) 如果關鍵字 key 存在于緩存…

如何使用Python和大模型進行數據分析和文本生成

如何使用Python和大模型進行數據分析和文本生成 Python語言以其簡潔和強大的特性,成為了數據科學、機器學習和人工智能開發的首選語言之一。隨著大模型(Large Language Models, LLMs)如GPT-4的崛起,我們能夠利用這些模型實現諸多…

Revit——(2)模型的編輯、軸網和標高

目錄 一、關閉縮小的隱藏窗口 二、標高(可創建平面,其他標高線復制即可) 三、軸網 周圍的四個圈和三角表示四個里面,可以移動,不要刪除 一、關閉縮小的隱藏窗口 二、標高(可創建平面,其他標…

計算機體系結構期末快速復習

文章目錄 前言CPI,MIPS(大題1)加速比(大題2)流水線(大題3)CRAY-1向量機(大題4)Tomasulo算法(大題5)概念簡答題計算機系統結構的經典定義什么是透明…

深入分析 Android Activity (二)

文章目錄 深入分析 Android Activity (二)1. Activity 的啟動模式(Launch Modes)1.1 標準模式(standard)1.2 單頂模式(singleTop)1.3 單任務模式(singleTask)1.4 單實例模式&#xf…

利用邊緣計算網關的工業設備數據采集方案探討-天拓四方

隨著工業4.0時代的到來,工業設備數據采集成為了實現智能制造、提升生產效率的關鍵環節。傳統的數據采集方案往往依賴于中心化的數據處理方式,但這種方式在面對海量數據、實時性要求高的工業場景時,往往顯得力不從心。因此,利用邊緣…

CSS實現一個雨滴滑落效果

使用純CSS來實現一個真實的雨滴滑落效果可能會有些挑戰,因為CSS主要關注于靜態樣式和簡單的動畫效果。然而,你可以使用CSS動畫和keyframes來模擬一個雨滴滑落的簡化效果。 以下是一個基本的示例,展示如何使用CSS來模擬雨滴從頂部滑落到底部的…