链载Ai

标题: SQL生成新思路:函数 RAG 和智能工具扩展 [打印本页]

作者: 链载Ai    时间: 5 小时前
标题: SQL生成新思路:函数 RAG 和智能工具扩展

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;margin: 1em 8px;letter-spacing: 0.1em;color: rgb(33, 37, 41);padding: 8px 12px;background: rgba(237, 242, 255, 0.8);border-radius: 8px;">本文在 RAG-to-SQL 的基础上,介绍了:

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 20px;font-weight: bold;display: table;margin: 2em auto 1.5em;padding-top: 6px;padding-bottom: 6px;padding-left: 16.7361px;background-image: linear-gradient(135deg, rgb(113, 23, 234), rgba(113, 23, 234, 0.667), rgba(234, 96, 96, 0.533), rgba(217, 57, 205, 0.267), rgba(217, 57, 205, 0));background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;color: rgb(255, 255, 255);border-radius: 8px;width: 318.247px;">函数RAG(Function RAG) 是什么

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;margin: 1em 8px;letter-spacing: 0.1em;color: rgb(33, 37, 41);padding: 8px 12px;background: rgba(237, 242, 255, 0.8);border-radius: 8px;">上一篇讲训练的文章提到,VannaAI 经典训练方法Question-SQL的方式,而Function RAG就是这种方式的升级, 讲训练转换为可调用的模板,这个可调用模板称之为函数

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;margin: 1em 8px;letter-spacing: 0.1em;color: rgb(33, 37, 41);padding: 8px 12px;background: rgba(237, 242, 255, 0.8);border-radius: 8px;">在使用函数RAG的时候,LLM仅决定使用哪个函数(模板)、以及函数(模板)的参数是什么,这样就保证了输出的一致性, 同时能显著加快SQL生成的过程。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;margin: 1em 8px;letter-spacing: 0.1em;color: rgb(33, 37, 41);padding: 8px 12px;background: rgba(237, 242, 255, 0.8);border-radius: 8px;">下面简单画了个架构图, 能清楚的看到函数RAG的执行过程:

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;margin: 1.5em 8px;color: rgb(63, 63, 63);">ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;border-radius: 8px;display: block;margin: 0.1em auto 0.5em;border-width: 0px;border-style: solid;border-color: initial;height: auto !important;" title="null" src="https://api.ibos.cn/v4/weapparticle/accesswximg?aid=86531&url=aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9hZzdaM2RDcTdMbkxvaGdrUmlhZmliaWNxbTh6Mlo3YjNFOU03OHZTT3QzbHVwQnhvOEhEMU40a05ScGNLS0NPaHlCSTJaVE1LdjlwRzh0dGtzVjRvYlg5dy82NDA/d3hfZm10PXBuZyZhbXA=;from=appmsg"/>

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 20px;font-weight: bold;display: table;margin: 2em auto 1.5em;padding-top: 6px;padding-bottom: 6px;padding-left: 16.7361px;background-image: linear-gradient(135deg, rgb(113, 23, 234), rgba(113, 23, 234, 0.667), rgba(234, 96, 96, 0.533), rgba(217, 57, 205, 0.267), rgba(217, 57, 205, 0));background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;color: rgb(255, 255, 255);border-radius: 8px;width: 318.247px;">函数RAG的特点

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 15px;margin: 1em 8px;letter-spacing: 0.1em;color: rgb(33, 37, 41);padding: 8px 12px;background: rgba(237, 242, 255, 0.8);border-radius: 8px;">函数RAG的特点和优点也是我们前面讲到他解决的问题:

智能体和工具集成

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

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

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

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

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

函数RAG使用过程

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

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

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

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

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

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

UI 的局限

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

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

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

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

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

vn.create_function(question=...,sql=...,plotly_code=...)

何时使用

类似问题查询

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

限制用户查询

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

限制用户查询数据范围

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

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

提高速度

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

总结

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

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


--- END ---







欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5