校园网站建设和管理工作制度,yw12777域名查询,建设网上银行官方网站,手工制作帽子 小学生在众多的 AI 大模型的应用场景中#xff0c;Text-to-SQL#xff0c;也就是文本转 SQL#xff0c;是其中实用性很高的一个。Text-to-SQL 充分利用了大模型的优势#xff0c;把用户提供的自然语言描述转换成 SQL 语句#xff0c;还可以执行生成的 SQL 语句#xff0c;再把查… 在众多的 AI 大模型的应用场景中Text-to-SQL也就是文本转 SQL是其中实用性很高的一个。Text-to-SQL 充分利用了大模型的优势把用户提供的自然语言描述转换成 SQL 语句还可以执行生成的 SQL 语句再把查询结果返回给用户。 在实际的业务系统中绝大部分数据都保存在数据库中其中以关系数据库为主流。这使得 SQL 成为了很多人的必备技能除了程序员之外还包括大量非技术的分析人员。这些人没有技术背景 学习 SQL 对他们来说有一定的难度。但是他们懂得自己的数据需求知道如何用自然语言来描述自己的需求但是 SQL 严格的语法会成为他们的障碍。大模型可以成为他们的助手。只需要把查询需求输入大模型大模型可以根据描述生成 SQL 语句。通过大模型的方法调用还可以直接运行生成的 SQL 语句得到结果之后返回给用户。 文本转 SQL 的实现所涉及的方面比较多可以很简单也可以很复杂。实现的复杂度和几个因素有关。 第一个因素是数据库中表的数量。在给大模型的提示中需要包含数据库中表的元数据包括表的名称、描述、表中列的名称、类型和描述等。大模型根据这些信息来生成 SQL。如果数据库中的表的数量较少全部这些表的元数据可以直接内嵌在提示中。如果数据库中的表很多超过了大模型的上下文窗口的长度限制那就需要用到检索增强生成RAG技术。把全部数据库和表的元数据保存在向量数据库中。根据用户的查询从向量数据库中检索到可以满足用户查询需求的表的元数据仅把这些表的元数据包含在提示中就足够了。 第二个因素是生成 SQL 语句的验证。大模型生成的 SQL 语句不一定总是正确的可能有语法错误也可能有逻辑错误。具体的问题只有真正执行了 SQL 语句之后才能知道。可以把执行时的错误信息和 SQL 语句一起再次发送给大模型由大模型对错误的 SQL 语句进行修改。这样重复迭代多次从而得到最终正确的结果。 这里给出了一个简单的代码示例不考虑使用检索增强生成以及 SQL 的验证。对于较小规模的数据库以及相对简单的查询需求一次生成的 SQL 语句的准确性已经比较高了。 这个例子使用 Spring AI 开发使用 JDBC 提取出数据库的元数据以 JSON 格式嵌入在发送给大模型的提示中另外创建了一个大模型使用的工具可以执行 SQL 语句。完整的代码在 GitHub https://github.com/JavaAIDev/simple-text-to-sql 上。 这里通过一个 Netflix 上的节目的数据库来作为演示这个数据库里面只有一张表。表的结构和包含的数据如下所示。 使用 JDBC 提取出来数据库的元数据所生成的 JSON 格式的内容如下所示。 输入的查询是 how many movies are produced in United States?意思是“在美国制作的电影的数量”。大模型的输出如下所示数量是 2058。 所生成的 SQL 语句如下所示。在生成的 SQL 语句中根据 type 和 country 进行了过滤。在 SQL 客户端中执行所生成的语句可以得到同样的结果。 以上就是使用大模型进行文本转 SQL 的基本实现方式。