小工具知识网

当前位置: 首页 > 行业知识 > 利用ChatGLM3构建Prompt实现Text2SQL

行业知识

利用ChatGLM3构建Prompt实现Text2SQL

2026-11-06 22:37:26 来源:互联网转载

之前使���ChatGLM3的自定义工具实现了查询MySQL数据库,但感觉功能还是比较受限。
https://blog.csdn.net/weixin_44455388/article/details/135270879?spm=1001.2014.3001.5501

()

使用ChatGLM3实现Text2SQL

  • 前言
  • Text2SQL的构建
      • 第一阶段:SQL脚本构建
        • (1)构建数据信息表的 schema,利用 LLM 生成 embedding
        • (2)prompt 提示词构建
      • 第二阶段:查询数据库,提供数据分析
  • 优化
  • 参考

前言

将自然语言文本(Text)转换成结构化查询语言 SQL,帮助用户快速生成想要查询的 SQL 语句;或者是用户输入一段话,然后系统完成一系列自动化查询和报表展示的操作,过自然语言描述完成复杂数据库的查询工作,得到想要的结果。

Text2SQL的构建

我们在 Text2SQL 上面的应用主要包括两个阶段,第一阶段是利用 LLM 理解你的请求,通过请求去生成结构化的 SQL;下一个阶段是在生成的 SQL 上自动化的查询数据库,返回结果,然后利用 LLM 对结果生成总结,提供分析。

()

第一阶段:SQL脚本构建

利用 LLM大模型理解文本信息,生成 SQL。因为考虑到数据的安全性,我们考虑使用ChatGLM生成SQL语句,从测试结果看,ChatGLM和GPT 对比,还是有比较大的差距,所以无法直接使用。

(1)构建数据信息表的 schema,利用 LLM 生成 embedding

这里我们根据用户描述的 text,让预训练的 chatglm2-6b 生成 embedding,通过 embedding 检索的方式,选出 top1 数据表,这个过程属于先验过滤阶段。
数据表的 schema 设计非常重要,需要描述清楚这个表它的主体信息以及表中重要字段和字段含义。

以下是我们设计的schema:
–tableName表示表名
–info表示该表的描述信息
–fields表示表字段信息,包括英文字段名、中文字段名和字段类型

[{   "tableName":"prompt_history","info":"问答历史会话记录表,包括会话编号id、会用编号id、会话历史记录、会话时间。","fields":{   "session_id":"会话编号,String","user_id":"用户编号,String","history":"会话历史,String","create_time":"会话时间,datetime"}},{   "tableName":"common_prompt","info":"常用prompt提示词表,包括提示词id、提示词标题、提示词内容。","fields":{   "id":"提示词id,int","title":"提示词标题,String","content":"提示词内容,String"}}]

开发代码,将以上表信息进行向量化,存储到向量数据库:

public void addTable2Milvus(MultipartFile file) {       List sqls = new ArrayList();    StringBuilder sb=new StringBuilder();    try (InputStream inputStream = file.getInputStream()) {           byte[] buffer = new byte[1024];        int bytesRead;        while ((bytesRead = inputStream.read(buffer))

上一篇:轻松下载麻将游戏指南,一步步教你轻松搞定!

下一篇:宝塔面板域名访问全攻略,轻松掌握域名进入方法!