ToB企服应用市场:ToB评测及商务社交产业平台

标题: 在RAGFlow中实践Text2SQL [打印本页]

作者: 东湖之滨    时间: 2025-2-16 14:32
标题: 在RAGFlow中实践Text2SQL
RAGFlow 0.10 正式发布,应广大社区用户要求,引入了Text2SQL特性。传统上Text2SQL依赖于对模子微调,而在企业场景中,经常谋面临RAG/Agent搭配Text2SQL的场景,这时假如再部署一个微调的大模子,势必会影响部署和维护本钱。因此RAGFlow基于RAG也推出了Text2SQL功能,这样可以仅依赖现有的大模子即可提供Text2SQL本领,方便让Text2SQL搭配其他RAG/Agent算子共同工作。

那么如何基于RAG来提供Text2SQL本领呢?工作流程可以参见下图:

我们需要预备一个专门用于生成Text2SQL提示词的知识库,该知识库包含各类自然语言到SQL的样例数据。当用户向RAGFlow发起一个Text2SQL提问时,先到该知识库中进行搜索,找到相似结果后拼接成生成SQL的提示词,再把该提示词发给大模子,让大模子生成终极的SQL。该SQL可以直接用来查询数据库,假如返回结果出现错误,证明产生的SQL不对,那么需要继续调用大模子让它产生一个正确的SQL直到错误次数超过上限。
因此,Text2SQL依赖于Agent框架来实现多次交互任务的编排,在0.10.0 版本的RAGFlow中,Text2SQL被固化为内置的Agent算子,方便到场到整个用户侧的工作流中。在后续版本中,当返回结果堕掉队,以上的工作流程会做进一步调解,就是让人工介入输入正确的SQL,该SQL会被更新到知识库当中,方便将来的提问生成正确的SQL,如上图的虚线箭头所表示。
下边是在RAGFlow中使用Text2SQL的使用指南:
Text2SQL 结果展示


如何在RAGFlow中使用Text2SQL





2. 设置Text2SQL 知识库

在RAGFlow中需要提供三种知识库来确保Text2SQL结果的质量,分别是DL知识库 ,Q->SQL知识库,DB Description知识库。

DDL知识库:大语言模子生成SQL语句需要准确的数据库DDL数据,包含但不限于表结构,表字段信息等等,因此在DDL知识库中需要提供准确的所查询数据库的DDL数据,DDL知识库解析设置建议设置为如下:

DDL知识库数据参考:https://huggingface.co/datasets/InfiniFlow/text2sql/tree/main。

Q->SQL知识库:在Text2SQL生成过程中,对大语言模子提供samples往往能提高生成的SQL语句的质量,因此在Q->SQL知识库中需要提供自然语言->对应的SQL语句的samples,假如能够提供所查询的数据库Q->SQL的samples,则Text2SQL结果质量更高。Q->SQL知识库解析设置建议设置如下:

Q->SQL知识库数据参考:https://huggingface.co/datasets/InfiniFlow/text2sql/tree/main

DB Description知识库:该知识库包含准确的所查询数据库的干系信息,包罗但不限于数据库表的寄义,数据库表中差别字段所代表的寄义,依据具体的数据库各项形貌信息,大语言模子能够更加精准的将用户的问题转换为SQL语句。DB Description知识库解析设置建议设置如下:

DB Description知识库数据参考:
https://huggingface.co/datasets/InfiniFlow/text2sql/tree/main

3. 设置数据库

将所需查询的数据库各项参数在Execute SQL中进行设置,包罗:
1)数据库的类型(现在支持Mysql,PostgresDB和MariaDB)
2)数据库名称
3)数据库用户名
4)数据库IP地点
5)数据库端标语
6)数据库密码
设置完成后可以点击Test按钮来测试是否毗连成功
Loop参数:RAGFlow中Text2SQL具备自动反思迭代的本领。针对用户的问题,假如大语言模子生成的SQL查询成功则会直接将结果进行返回。 假如大语言模子生成的SQL查询失败,则RAGFlow Text2SQL则会针对数据库查询返回的错误信息和SQL语句进行自动更正进行再次查询,该过程(查询失败->更正SQL语句->再次查询)最大迭代次数则为Loop参数的值,假如迭代次数超过Loop值,查询结果仍然失败,则步调自动结束Text2SQL过程,请优化用户问题或知识库数据再次实验。
TopN参数:数据库查询中往往包含大量的记录,该参数用于限定所返回的记录数目。

4. Go

接下来点击Run就可以执行了。
常见问题

1. Database Connection Failed!

数据库毗连失败,需要查抄Execute SQL组件中数据库各项参数是否正确,确保部署RAGFlow的机器按照所填的信息是能够毗连到数据库的,点击test进行测试数据库是否能够毗连成功。
2. SQL statement not found!

这意味着Text2SQL不能将用户问题转化为SQL语句,对于LLM来说可能所需要的咨询太少或不完整,可丰富上面提到的三个知识库。
3. No record in the database!

表示该SQL查询从数据库表中查询到的记录数为0,有可能过滤条件过为严苛,或数据库该表为空表。
4. Maximum loop time exceeds. Can't query the correct data via SQL statement.

该问题表示Text2SQL对用户问题转化之后对应的SQL语句不能正确的从数据库中进行查询,请查抄数据库中是否包含该查询对应的内容,用户问题是否符合,Generate SQL Statement LLM 组件和Fix SQL Statement LLM组件生成的SQL语句是否正确。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4