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

南宁律师网站建设网站建设运营计划

南宁律师网站建设,网站建设运营计划,wordpress竖文,产品推广方案策划书自然语言转SQL之Vanna.ai#xff1a;AI集成数据库 一、Vanna.ai是什么二、落地步骤#xff1a;实现三层需求2.1 官方示例看效果2.2 对接自己的数据库2.3 完全本地化之路 三、构建自己的产品3.1 提问转SQL3.2 执行SQL查询实例2 要实现的功能就是#xff1a;用中文语言同数据库… 自然语言转SQL之Vanna.aiAI集成数据库 一、Vanna.ai是什么二、落地步骤实现三层需求2.1 官方示例看效果2.2 对接自己的数据库2.3 完全本地化之路 三、构建自己的产品3.1 提问转SQL3.2 执行SQL查询实例2 要实现的功能就是用中文语言同数据库交流而数据库给出的结果也是自然语言。 一、Vanna.ai是什么 同数据库对话的理论依据 我们知道自古以来数据库就是用来存储数据的。但是想要查数据得找个懂数据库语言的程序员进行操作。数据库语言也叫“SQL语句”。比如要查询“有没有一个叫张三的学生”那么SQL语句就是“SELECT * FROM students WHERE name ‘张三’;”。而且你得知道数据存在哪个库里的哪张表中。很显然这种数据库语言并不是每个人都能掌握的。 但是转折来啦大语言模型的出现让这件事变简单了。大语言模型即懂你也懂SQL因此它可以作为一个媒介。 毫无悬念这段SQL是可用的。 可以再次借助大语言模型将表格数据转化为我们看得懂的语言。 于是乎这个对话过程就走通了。整体流程大概是下面这个样子 上面只是理论知识那在项目实践上该如何写代码呢 在具体落地时会面临怎么管理大语言模型的问题。比如怎么告诉它我提问题了你该这么这么回答。怎么衔接大模型生成的SQL语句又怎么去连接数据库查询结果。拿到结果后又怎么让大模型给出通俗的结论。上面图中的智能系统那些个①号坑位、②号坑位都需要有流程来管理并通信。 这一切的一切你可以来写。但是有比你更聪明的人已经写完了而且还开源了。合适你就用不合适咱就改。这个项目就是Vanna框架。 二、落地步骤实现三层需求 vanna的官网是vanna.ai开源地址是github.com/vanna-ai/vanna。 一般情况下官网的示例会体现出两大特点使用简单、功能强大。其目的就是告诉你它能干啥以此吸引你使用。至于你想真正用上它那是先爱上它再付出一番努力的后续。 安装vanna pip install vanna2.1 官方示例看效果 5行代码就可以构建起来一个智能对话数据库系统。 # The import statement will vary depending on your LLM and vector database. This is an example for OpenAI ChromaDBfrom vanna.openai.openai_chat import OpenAI_Chat from vanna.chromadb.chromadb_vector import ChromaDB_VectorStoreclass MyVanna(ChromaDB_VectorStore, OpenAI_Chat):def __init__(self, configNone):ChromaDB_VectorStore.__init__(self, configconfig)OpenAI_Chat.__init__(self, configconfig)vn MyVanna(config{api_key: sk-..., model: gpt-4-...})# See the documentation for other options 注意api_key需要从vanna.ai官网申请免费点击一下就行。 官网提供个性化生成demo https://vanna.ai/docs/mysql-ollama-chromadb/ pip install vanna[chromadb,ollama,mysql]运行这5行代码会启动一个服务生成一个网站默认是 localhost:8084。访问这个地址就可以与数据库对话了 效果不错。 询问“最受欢迎的3位艺术家的销量”它生成了查询语句列出了查询结果还画出了柱形图。最后来了一个总结根据销量数据最受欢迎的3位艺术家分别是Iron Maiden销量140、U2销量107和Metallica销量91。 等会儿……哪儿跟哪儿怎么它就艺术家了那些销量哪来的数据库又在哪里 这是个官方的例子只求最简单宣传5行代码搞定。它害怕让你自己部署一套服务器因此默认了一个sqlite数据库。这个数据库可下载地址就是代码vn.connect_to_sqlite连接的那个vanna.ai/Chinook.sqlite。 我下载这个sqlite数据库执行它生成的语句确实如此。 那它这个demo就不是故弄玄虚其实是真的查询数据库了。只不过数据库是它提供的。 不是说它对接了大模型吗代码里怎么没有看到 在这个例子中它把大模型也封装好了。它默认采用的GPT 3.5模型。 2.2 对接自己的数据库 “我肯定要用自己的数据库”这是客户老孙在大山深处喊出来的。 上面我们说了vanna是管理流程的更换数据库对它来说只不过是将坑位换一个参展商。 它支持很多种数据库我们拿最常用的MySQL搞一搞。 我有这么一个数据库这里面存储的是我写的文章就相当于我的私人文库。 这个数据库很简单就仨表一个存文章信息一个存文章评论信息一个存文章的类型信息。 那我们就用自己的数据库替换一下。工具要为我所用才是真的有用。 关键点就是连接数据库的那一段代码 vn.connect_to_mysql(hostlocalhost, dbnamearticle_db, userroot, password123, port3306)这句代码做了指定数据库信息它的地址端口叫啥名用户名密码是多少。 连接上了你说话就好使了吗肯定不是数据库是你的大模型怎么懂你要告诉大模型这个表是干什么的里面有什么东西。当然它也足够智能可以自己去读取库里的信息。 下面这句话就可以让它自己读取然后自己理解并训练。 info_schema vn.run_sql(SELECT * FROM INFORMATION_SCHEMA.COLUMNS;) plan vn.get_training_plan_generic(info_schema) vn.train(planplan)但是你家数据库设计的规范吗你的字段名称起的标准吗各类外键设置的是否正确即便很规范名字不是“mz”是“name”。但是特殊行业也会有自己的特色比如“人情世故”就很难翻译成英文还是叫“renqin_shigu”更便于理解。 这时候我们就需要告诉大模型我们的人情世故要让它入乡随俗。 我们可以将ddl数据描述语言传给大模型让它了解各个字段的含义。 vn.train(ddlCREATE TABLE article_types (id int(11) NOT NULL AUTO_INCREMENT,type_name varchar(100) NOT NULL COMMENT 文章类型名称,PRIMARY KEY (id),UNIQUE KEY type_name (type_name)) ENGINEInnoDB COMMENT存储文章类型信息; )有了上面的训练当我们问有哪些文章类型时大模型就会知道从article_types表中去查询type_name字段。 除此之外我们还可以约定一些个性化的需求。 vn.train(documentation请注意我们公司一般将1作为否0作为是。)一般来说大众的认知数值0表示否定1表示肯定。但是我们可以通过documentation来重新改变通用模型的认知。告诉LLM在我这儿和外界是相反的以此来符合自己的场景。 如果上面还不行。那么还有绝招。 vn.train(question天涯何处是我家,sqlselect name from tianya)即便你用文言文的方式询问数据库只要你告诉大模型你的风格是这样的那么它也会成全你。反正最终就是生成SQL呗。用外语问都行更何况是文言文了。但是前提是你需要打个样。因为在此之前没人这么干过。 好了换完了数据库下面开始问答。 这就是你的私人数据助手到这里其实已经挺有意思了。没花钱仅凭自己有数据就搞了个带有AI属性的东西出来。 2.3 完全本地化之路 请注意上面的vanna已经本地化安装MySQL也是私有库但是大模型用的还是人家的GPT 3.5。它支持好多大模型。 官方推荐的是vanna内嵌的openAI。这样最方便实现也有利于它卖货。不过它也支持其他大厂的LLM比如谷歌的Gemini再比如所有符合OpenAI标准API的LLM以及其他LLM。 我们先搞一个在线版本的再搞一个本地版本的。 如果接入一个标准的OpenAI协议的LLM该怎么搞呢很简单 from vanna.openai import OpenAI_Chat from vanna.chromadb import ChromaDB_VectorStore from openai import OpenAI client OpenAI(api_key你得写你的,base_urlhttps://xx.cn/api/paas/v4/ ) class MyVanna(ChromaDB_VectorStore, OpenAI_Chat):def __init__(self,clientNone, configNone):ChromaDB_VectorStore.__init__(self, configconfig)OpenAI_Chat.__init__(self,clientclient, configconfig)vn MyVanna(clientclient, config{model: xx})区别看出来了吗原来是VannaDefault这里面人家都封装好了内置有LLM。 vn VannaDefault(modelx, api_keyx, config{language:chinese})但是现在你不想用它的那需要你新建一个类指定一下用哪个。具体指定谁家的大模型得看你手里的资源。通过MyVanna实例化出vn之后后面连接数据库啥的都一样一样的。这就是用框架管理的好处。 除了符合这种OpenAI标准的大模型之外其他LLM可以吗当然可以。比如智普出的GLM4也可以作为Vanna流程中的LLM使用。 from vanna.chromadb import ChromaDB_VectorStore from vanna.ZhipuAI import ZhipuAI_Chatclass MyVanna(ChromaDB_VectorStore, ZhipuAI_Chat):def __init__(self, configNone):ChromaDB_VectorStore.__init__(self, configconfig)ZhipuAI_Chat.__init__(self, configconfig)vn MyVanna(config{api_key:x,language:chinese})同样也是构建一个MyVanna将一个ZhipuAI_Chat初始化进去。从vanna.ZhipuAI中我们发现ZhipuAI已经内嵌到vanna中作为它的一部分了。 大模型的选型会对效果产生什么影响呢 我们看同样的问题“最近10篇文章的阅读量趋势”在不同大模型中的表现。 在GLM4中是这样的 在GPT 3.5中是这样的 他们生成的SQL查询语句都是一样的因此查询结果也是一样的。但是他们后续对结果的分析以及绘图和总结是不同的。 有细心的朋友发现了怎么你一直没提代码里面的那个ChromaDB_VectorStorechroma是个什么东西 它是一个词向量数据库。Chroma词向量数据库是一个用于自然语言处理和机器学习的工具它主要用于词嵌入可以将单词转换为向量表示能捕获单词之间的语义和语法关系使得计算机能够更好地理解和处理自然语言。 总而言之大语言模型离不开词向量的支持。vanna框架考虑到不让用户再去搭建复杂的词向量数据库因此提供了线上默认版本。但是咱们非要本地化部署那么只能再安装一套词向量的数据库在本地。chroma只是其中一个选择。这也导致我们训练完成之后根目录下会产生一些数据文件。这里面存储的就是词向量相关的信息。就像是“为何”、“因何”、“缘何”它们其实指的是同样的意思词向量相近。 你要是不想将词向量数据放在根目录有人嫌乱可以指定chroma的存储路径在构建自定义Vanna类时传入config的path路径即可。 vn MyVanna(config{path:model_path, ...})本地化大模型 我们选用清华大学的ChatGLM3做本地化部署。干完了这一票整个数据库问答系统就完全本地化。 假设你已经搭建好了一套ChatGLM3环境。因为搭建环境部署程序这类教程太多了我不多说了。下载项目 github.com/THUDM/ChatGLM3 然后最好去HuggingFace下载权重模型和bge-m3。这样会更快下载完了保存到本地。 找到ChatGLM3下的openai_api_demo文件下的api_server.py文件。这个文件是API服务启动了它就相当于具备了一个任意基于ChatGPT应用的后端。 运行之前注意配置好模型文件路径修改它的路径为你下载文件的真实路径。 调用python api_server.py就可以启动它。启动了它就相当于你本地127.0.0.1有了一个OpenAI大模型。 于是Vanna替换为本地LLM就像下面这么简单。 base_url http://127.0.0.1:8000/v1/ client OpenAI(api_keyEMPTY, base_urlbase_url) vn MyVanna(clientclient, config{model: chatglm3-6b})建立了vn之后随后的连接数据库、训练数据、启动服务代码都是一样的。这里只是一个坑位的变化。 至此这套可以对话数据库的智能系统就建立好了。你以为这样就结束了吗没有不可能 三、构建自己的产品 你觉得有自己的智能数据助手万事大吉了吗可以不用加班了呵呵被短暂的愉悦冲昏了头脑吧 你没有界面啊你甘心用Vanna提供的这套对话页面吗 虽然它提供了很多配置 auth要使用的身份验证方法。 debug控制是否显示调试控制台。 allow_llm_to_see_data指示是否允许LLM查看数据。 logo用户界面中显示的标志。默认为Vanna标志。 title设置要在UI中显示的标题。 subtitle设置要在UI中显示的副标题。 show_training_data控制是否在UI中显示训练数据。 sql控制是否在UI中显示SQL输入。 table控制是否在UI中显示表格输出。 csv_download指示是否允许将表格输出作为CSV文件下载。 chart控制是否在UI中显示图表输出。 ask_results_correct指示是否询问用户结果是否正确。 summarization控制是否显示摘要。 ……但是这些依然会很难符合你的需求。听我说我们可以调用它的接口自己来实现界面。 通过查询VannaFlaskApp的接口我们可以获得业务流程最多分为4步。 3.1 提问转SQL 第1步调用api/v0/generate_sql。 此步收到用户的提问文本调用大模型接口生成sql语句。这个接口中经过训练的大模型会将自然语言转为sql语句。转换成功后还会返回一个业务id。这个id一直绑定后续流程直至任务结束。 3.2 执行SQL查询 第2步调用api/v0/run_sql。 此步执行上一步生成的sql语句。执行过后会获得查询结果。在数据库查询结果中对于希望获得一些趋势或者走向的问题会返回是否需要绘制图表的字段 should_generate_chart 。 3.3 生成图表 第3步如果需要展示图表那么调用 api/v0/generate_plotly_figure 生成绘制数据绘制并保存为图片。 3.4 答案总结 第4步根据以上数据将结果交给大模型进行总结。如果觉得总结的不好你也可以加上一些prompt引导最终获得一条可阅读的结论。调用的接口是 api/v0/generate_summary 。 3.5 集成到UI 接口全都有了。从问题到数据再到趋势图表最后有总结答案。就看你想展示什么自己调用就可以了。 对于带图表的情况也可以正常展示。 实例2 docker pull marqoai/marqo:latest docker run --name marqo -it -p 8882:8882 marqoai/marqo:latest未完待续
http://www.w-s-a.com/news/911499/

相关文章:

  • wordpress销售主题手机网站关键词优化
  • 怎么查一个网站是什么程序做的三亚城乡建设局网站
  • 深圳分销网站设计公司做网站一般需要多久
  • 企业网站设计代码丹东seo排名公司
  • 企业网站建设定制开发服务网站建设说课ppt
  • 大连市城乡建设局网站网站免费网站入口
  • 做暧网站网站备案ps
  • 知名网站建设公司电话长子网站建设
  • 网站建设的意义与目的建立什么船籍港
  • 广州注册公司营业执照网站建设代码优化
  • 百度网站官网马克互联网主题 wordpress
  • 网站制作 客户刁难深圳自助建站
  • 怎么去推广一个网站广东餐饮品牌设计
  • 网站代码加密了怎么做兰州最新大事
  • 现在ui做的比较好的网站去年做啥网站致富
  • 广东网站建设咨询电话好牌子网
  • 公司怎样制作网站南阳网站关键词
  • 营销型网站建设与网盟完整php网站开发
  • 网站做微信链接怎么做的石桥铺网站建设公司
  • 济南mip网站建设公司做图书馆网站模板
  • app 门户网站网站项目框架
  • 做网站视频网站备案 新闻审批号
  • 织梦网站怎么居中视频网站开发与制作
  • 网站上海备案佛山网站seo哪家好
  • 品牌形象网站有哪些珠海市区工商年报在哪个网站做
  • 注册域名不建设网站seo外包服务方案
  • 如何进行外贸网站建设wordpress文章输入密码可见
  • 政务网站建设索引常州做网站信息
  • 南宁做网站找哪家好wordpress 更改首页
  • 一个人在家做网站建设品牌策划流程