基于RAGFlow构建Text2SQL的实战教程
在企业大模型应用中,Text2SQL一直是应用热点,它可以通过自然语言快速完成数据提取分析。但传统方案依赖大模型微调,中小企业应用成本高。
今天介绍一种方法:用开源 RAG 框架 RAGFlow,将知识库检索与大模型推理结合,无需微调模型,仅配置少量结构化数据,即可生成精准的 SQL,满足指定数据查询、复杂查询、计算及跨表计算等场景。
一. 准备工作
Text2SQL的准确性取决于知识库质量,需提前准备DDL、DB Description、Q->SQL三类核心知识库。
1. 创建知识库
分别创建知识库DDL、DB Description、Q->SQL
(1)DDL知识库
DDL(Data Definition Language)知识库,主要提供数据库表结构信息,包括表名、列名、数据类型以及主键、外键等约束条件。
(2)DB Description 知识库
DB Description 知识库,主要用于说明数据库中表和列的含义。
(3)Q->SQL 知识库
Q->SQL 知识库,包含了大量的参考 SQL,即自然语言问题与对应的 SQL 语句示例。
2. 上传知识库文件
(1)下载这三个文件,下一步用。
网盘下载链接:https://pan.quark.cn/s/563c1ccc81fd
(2)将下载好的文件分别导入到对应的知识库后,并解析文件。
3. 配置知识库
配置每个知识库的切片方式。
(1)配置DB Description
(2)配置DDL
(3)配置Q->SQL
二 . 创建Agent
1. 添加Agent模版
(1)进入 RAGFlow 工作台,在Agent下,点击【创建Agent】,进入Agent模板选择页面,选择 “DB Assistant” 模板,点击“使用该模板”。
这里Text-to-SQL和DB Assistant 的区别:
- Text-to-SQL 是 “自动写SQL查询的工具”。
- DB Assistant 是 “帮你用自然语言跟数据库聊天、查数据、看结果的智能助手”,这个助手内部会用到 Text-to-SQL 来写查询。
(2)给Agent起一个名字,系统会自动复制该模板到Agent空间,如下:
2. 配置Agent
添加的DB Assistant模版中,有6个节点需要我们进行配置。
(1)添加知识库
分别选中DDL、DB Description、Q->SQL,配置对应的知识库。
(2)绑定目标数据库
选中“ExeSQL” 组件,配置数据库所需的参数,填入自己的数据库信息。
(3)接入模型
这里接入比较强的模型,才能回答出精准的答案。本文接入了阿里千问的MAX模型。
三. 测试运行
(1)如下图所示,数据库中有一张meter表。
(2)单击运行按钮,可以进行对话。
提问:meter表有多少条数据?它能够正确回答:10