语义转sql 3.0 实现大模型对大量数据表中查询数据
目的
让大模型实现通过语义理解,在大量的数据表中查询数据,以解决本系列2.0中提示词过长的问题。
说明
本文档中的所有下载的所需资源都可以在网盘下载或在右上角的群内容获取。
1.总体流程
可选表:提前给定的需要查询的表,在提示词中实现。
表结构:包括表名、字段名、字段类型、字段注释、外键等
CREATE TABLE `data_table_structure` ( `id` VARCHAR(50) NULL DEFAULT NULL COMMENT 'ID', `table_name` VARCHAR(50) NULL DEFAULT NULL COMMENT '数据表名', `table_structure` VARCHAR(50) NULL DEFAULT NULL COMMENT '数据表结构', `foreign_key` VARCHAR(50) NULL DEFAULT NULL COMMENT '外键' ) COMMENT='数据表结构' COLLATE='utf8_unicode_ci';
可查字段:表结构中包含的字段名,在提示词中的【表结构】中提现实现。
本地api服务:连接数据库、接受数据库名、sql语句、返回查询结果,本例通过php实现。
2.分步实施
2.1 准备提示词
## 角色你是一名数据库管理员## 工作内容你需要先判定我提问的内容的主体是什么,并根据我给出的下面的数据表结构内容生成检索对应table_name的table_structure中的内容的mysql查询语句## 被查询的数据表的结构CREATE TABLE `data_table_structure` ( `id` VARCHAR(50) NULL DEFAULT NULL COMMENT 'ID', `table_name` VARCHAR(50) NULL DEFAULT NULL COMMENT '数据表名', `table_structure` VARCHAR(50) NULL DEFAULT NULL COMMENT '数据表结构', `foreign_key` VARCHAR(50) NULL DEFAULT NULL COMMENT '外键' ) COMMENT='数据表结构' COLLATE='utf8_unicode_ci';## 你可选的数据表| id | table_name || --- | --- || 1 | users || 2 | orders || 3 | goods|## 主要目的你生成的sql语句不是直接用于查询数据而是获取完整的数据表名、数据表结构、外键字段名的信息例如:我输入:张三几岁了你输出:SELECT table_structure FROM data_table_structure WHERE table_name = 'users';## 要求1.如果用户输入的内容无法生成为sql语句,请直接说“抱歉,该命令无法形成数据库查询操作”。2.当可以生成sql语句时,请确保输出的内容为完整正确的sql语句,不要输出此外的其他任何字符,确保你生成的内容用户可以直接执行查询操作。
2.2 准备测试数据库
打开HeidiSQL
工具,在右上角文件-加载sql脚本,将网盘中的提示词工程/语义转SQL3.0/tosql.sql
脚本导入到数据库中。
你也可以参照语义转SQL,实现大模型对接查询数据库内数据第4部分去实现。
实现本地api服务
具体内容你可以参照通过dify实现大模型对接查询数据库内数据,语义转SQL2.0第2部分去实现。
你也可以直接在网盘中的提示词工程/语义转SQL3.0/index.php
中获取源文件。
搭建dify工作流
具体内容你可以参照通过dify实现大模型对接查询数据库内数据,语义转SQL2.0第1部分去实现。
你也可以直接在网盘中的提示词工程/语义转SQL3.0/eogee_text2sql.yml
中获取dify源文件。
与前者不同的是,我们需要构建获取具体查询语句的前置流程:获取数据表结构
3.效果测试
打开dify,将工作流设置为可运行状态:
发布->更新->运行:
在新跳转打开的页面中,输入”张三几岁了”并点击”提交”按钮:
4.问题说明
多表关联能力需要强化
对大模型能力要求较高,低参数模型在第一个重要环节识别效果不佳,如”张三几岁了”,大模型可能无法断定主体为人,并去users表中查询,QWQ-32B-Q4的准确度较高。
目前仅支持mysql数据库,其他数据库需要适配。
语义转sql 3.0 实现大模型对大量数据表中查询数据
http://localhost:8090/archives/yu-yi-zhuan-sql-3.0-shi-xian-da-mo-xing-dui-da-liang-shu-ju-biao-zhong-cha-xun-shu-ju