首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL生成新思路:函数 RAG 和智能工具扩展

本文在 RAG-to-SQL 的基础上,介绍了:

• 什么是函数RAG

• 函数RAG的特点

工具和智能体的结合

如何使用函数RAG

• 函数RAG的使用场景分析和启发

阅读更多

函数RAG(Function RAG) 是什么

上一篇讲训练的文章提到,VannaAI 经典训练方法Question-SQL的方式,而Function RAG就是这种方式的升级, 讲训练转换为可调用的模板,这个可调用模板称之为函数

在使用函数RAG的时候,LLM仅决定使用哪个函数(模板)、以及函数(模板)的参数是什么,这样就保证了输出的一致性, 同时能显著加快SQL生成的过程。

下面简单画了个架构图, 能清楚的看到函数RAG的执行过程:

Vanna函数RAG架构函数RAG的特点

函数RAG的特点和优点也是我们前面讲到他解决的问题:

• 基于模板生成SQL:大模型保证SQL和用户查询相关,模板保证SQL的准确性,和执行的速度

增强安全性:函数RAG不仅能防止提示注入等安全问题,还可以预设模板嵌入权限等逻辑保障数据安全

用户特定的查询:可以在查询中嵌入用户信息,而不必担心数据泄露,执行个性化问题:比如查询:

• 我最近的订单有哪些?

• 我这个月的考勤?

• 我部门的业绩?

• 集成图表代码的生成:前面提到 Vanna.AI 生成的图表太单一,使用 函数RAG 嵌入SQL对应的可视化代码,能够达到可定制的图表展示

• 多语言支持:函数RAG 的架构设计为被各种语言(JS,Java等)集成提供了可能性

智能体和工具集成

我看了下源码,Vanna.AI 正在很好的抽取和模块化核心逻辑,配合 函数RAG的功能,我们能很方便的吧 VannaAI 集成响应的工具调用,实现数据应用的智能体。

为什么基于 Function在没有推出 Function RAG 的时候,其实也可以改造 Vanna 来实现工具调用,但是基于对话式的框架,缺少核心元数据的支持, 实现该功能对 Vanna 的架构改变较大,做的工作稍多。而在 Function RAG 的框架内,我们很容易做扩展来实现该能力。

详细解释一点,就比如我们去年文章展示的 BI 增加工具调用一样:

《万物皆可LLM》

基于《AIGC时代的用户体验和接口设计》的交互规范,我们可以稍微改造一下就让其初步具备 Agent 的能力:

Vanna.AI扩展工具示例

这个的优点就是基于 「函数」 来定制不同的可能的行为动作。因为除了单纯的看数据,大部分的查询我们都是有使用数据的意图的。

比如:当你查询你本周的工作日报时,可能的动作就是**「发送工作周报」**。

这个章节介绍的想法功能 Vanna.AI 还没有实现,不过如果其团队的激情不减,一两个月内大家应该就能见到相关功能的体验版。

函数RAG使用过程

下面展示下 「函数RAG」的使用过程。

VannaAI 界面山点击Functions菜单,可以看到当前已经创建的 Functions,如果没有的话可以点击New来新建:

VannaAI Functions

新建的过程也很简单,直接输入你的问题,等待 Vanna.AI 的执行,比如我们「有多少个艺术家」:

点击 「Yes, create function」,就可以创建一个函数。下图展示函数创建的结果,包含:

• 唯一的函数名称

• 函数的问题模板

• 函数的参数(这个例子没有)

下面我们创建另外一个函数,提问:销量最高的五个国家,可以看到创建的函数里面多了一个limit的参数:

再次提问:销量最高的10个国家,可以看到 Vanna 执行了刚刚创建的函数,并且把参数设置为10,直接执行了 SQL, 而且我们可以明显感到执行的速比BI之前快了很多。

UI 的局限

当我提问最近20年开票最多的三个客户来创建函数时,

创建的函数只有一个years参数,并没有limit这个参数。

重新执行查询最近10年开票最多的五个客户,发现匹配到了函数,参数也修改了,但是只修改了一个。

查看 SQL 也发现并没有把五个客户的条件给放进去。

遇到这种情况,我们的解决方案也很简单,使用代码创建函数即可,你可以不依赖LLM,更灵活和准确的控制函数的构成:

何时使用

类似问题查询

最终用户经常会询问类似问题,那么函数 RAG 可以很好提升效率和准确率。

限制用户查询

如果产品期望限制用户的查询,只允许用户查询经过批准和确认的特定查询及分析。此时 Function RAG 是能够确保运行特定查询的好方法。

限制用户查询数据范围

传统 Text 2 SQL 无法应用到企业生产最重要的问题就是「大模型的不确定性」和**「无法限制数据范围」**。

而 FunctionRAG 就能很好的解决这两个问题,他可以保证用户最终能看到正确的数据

提高速度

如果你的场景查询范围有限,复核上述特点,那么强烈建议你使用 FunctionRAG,因为他可以极大提升运行速度。

总结

RAG-to-SQL 为基于大模型的 SQL 生成(或者说是 Text-to-SQL)开辟了新的领域,那 Function RAG 就像是 是这个新领域的一条新道路。

而且LLM -> RAG -> Function的产品功能路线和设计思路也给了我们极大的启发, 让普通的东西经过优雅的设计绽放不一样的色彩。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/Ozv_gXVbKA1O7OieIur6-_2Q0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券