免费POC, 零成本试错
AI知识库

AI知识库

学习大模型的前沿技术与行业落地应用


收藏

关于可落地的LLM+BI项目真正的一些梳理

发布日期:2024-07-01 22:57:54 浏览次数: 5729
作者:Data2Product

微信搜一搜,关注“Data2Product”

背景
   在工作中接触/使用大模型已经超过1年了,大部分是做分析/BI相关的场景。过去半年做指标平台+大模型应用项目,最终也有客户实际落地,梳理下自己的一些总结。
    首先要说明的是,项目的结果是以产品形式交付给企业客户,那么往往就会遇到诸如私有化/本地化/国产化的限制,就要求我们的方案需要足够的健壮,且在较小的模型下也有稳定的表现。
    其次,我们需要明确这类产品的目标用户是谁,如果将其视为一个NL2SQL的项目,那么只能面向分析师交付,最终实际上是起到code copilot类似的效果,其在商业化上的空间也比较有限。结合指标平台本身的定位(统一口径+分析能力的输出),真正面向的应该是管理者/业务人员等终端的用数角色。因此这在查询/推理速度、结果可见性、交互表达上就比NL2SQL多了很多要求。
    接下去,我们将通过具体流程的说明看下跟一般NL2SQL项目的差异。

相关参考

    指标+LLM的结合的路径已有比较多的讨论,尤其围绕dbt的生态,认为通过dbt中metric的语义说明可以减少歧义,有一些相关的参考及项目比如:

1. https://www.getdbt.com/blog/semantic-layer-as-the-data-interface-for-llms
2. https://github.com/dbt-labs/dbot

    此外,常见的提升生成查询准确性的方法就是通过RAG召回标注问答,给大模型提供fewshot“仿写”的补充。类似的项目比如:

1. https://vanna.ai/docs/

    不过以上这些方案,都只将数据模型和指标语义部分当做知识输入,最终还是输出sql查询,跟接下去描述的运用指标层的方式有一点差异。

具体说明

    整体来说我们自然语言分析的过程如下,接下去将对有差异的一些点展开说明

意图识别

    对于用户输入的问题,第一步是让大模型进行意图区分是分析问题还是普通的对话。由于指标回答即使出错,也可以通过兜底SQL编写,因此分析类查询问题可以尽量优先进入指标分支。

指标匹配

    区分于常规的NL2SQL的查询,在查询prompt之前,我们需要明确用户问题与哪个/哪些指标有关,这里有以下手段可以参考:1.通过问题内容从指标元数据中进行召回(包括指标名称、指标业务描述、维度采样;2.通过传统NLP手段利用关键词召回指标;3.基于1,2召回的部分指标,再由大模型进行最终判断该问题与哪个/哪些指标相关。

    在企业级客户的指标量级之下,直接通过大模型在全量指标中进行识别会导致响应慢、占用过多token的问题,因此这里加了1,2两步前置操作。

查询prompt

    比如最简单的NL2SQL的prompt可能是这样的

##示意  你是一个分析师blahblah现有schema如下:{table_name}|column|type|sampling_data|
现有指标以及其sql表达式如下:xxx
有如下例子可供参考:#1{history question}{history answer sql}#2...
请通过编写sql回答用户的问题:{user’s question}

    其中元数据、字段采样数据和历史问答的召回部分是可以通用的,而采用指标查询的方式其模版如下:

##示意你是一个分析师blahblah
系统中对指标有三种查询策略(以下表达式仅做示意区分于sql编写)
1.多维分析对指标进行多维分析,支持添加过滤条件等metric.analyis('metric_name').filter_by('expressions').group_by('dimensions')
2.指标归因对指标在指定时间段内的波动进行多维下钻归因metric.rootcause('metric_name').duration('time1','time2').filter_by('expressions').drill_by('dimesnions')
3.指标预测对指标未来时间段内的趋势进行预测metric.predict('metric_name').duration('time1','time2').filter_by('expressions').drilldown('dimesnions')
现有指标如下:{metric name}{metric describe}|dimension|type|sampling_data|...
有如下例子可供参考:#1{history question}{history answer query}#2...
清通过编写查询表达式回答用户的问题:{user’s question}

‍    对比常规2SQL的方案,通过指标编写的优势如下:

1. 指标作为一个对象,在代码执行时会根据其定义进行查询,不需要大模型翻译其过滤条件、表达式,这样可以减少出错的机会(尤其是指标定义或过滤条件很复杂,或者涉及复合指标的定义时)。

2. 对采样数据来说,具体到某个指标会更准确。在sql方案中,只能对表的字段进行采样;而在指标方案中,每个指标的每个维度上都有采样结果。例如:“化妆品销量”的skuid列表和“服装销量”的skuid列表肯定不同,当用户直接提问“sku12345的销售额是多少”时,该ID出现在“化妆品销量”的skuid采样中,而可能不在全表的skuid列表采样中(一般会对采样数量限制),因此这种直接指定维值/字段值的问题通过指标采样被召回的可能性会更高。

3. 可以将业务常用的指标归因、指标预测等分析模型标准化,这样可以直接调用,这是通过sql查询不大容易做到或特别不稳定的点。

4. 对比sql,在结果展示时,更容易翻译为用户可读、可操作的条件要素

    但同样通过指标方案有一些劣势如下:

1. 依赖指标语义的表达能力,不如sql开放,比如一些嵌套查询、多指标交叉查询、非指标的灵活查询等不一定支持

2. 编写指标查询表达式语法,是大模型需要学习的新知识,容易写错。这里可以通过finetune或者提供足够多的fewshot提升其准确度

回答解读

    不论上一步是sql查询还是指标表达式的查询,在解读中,都可以从企业自身的业务数据库中召回相关的内容,对回答进行一定的描述性分析。

结果展示

    为了形成数据闭环,在生成查询结果后,应支持用户对条件进行检查并提供反馈。例如:


来自thoughtspot

    可以看出其展示了指标分析的时间范围、过滤条件和维度,同时提供对、错的反馈。理想的情况下,在用户点“对”后,应记录为历史问答作为fewshot的来源;而用户点“错”后,应引导用户进一步修改上述的条件,或提供条件正确与否的反馈,这种反馈进一步可以作为语义的补充。

来自thoughtspot
    业务用户进行口语化提问时,很容易出现近义词、同义词、缩写词、内部用语等,通过类似问题修改、召回可以提升此类问题的查询准确性。当然也可以实现收集这类词汇,作为知识库的内容。

感想

    虽然NL2SQL已经是AI Agent中一个细分类型,且SQL又是数据查询的通用语言,但数据平台可以进一步拆分场景,例如指标平台、标签画像平台等,在各自的工作流中,可以结合平台能力和上下文拆分任务,缩小大模型输出内容的空间,这可能是平台产品结合AI能力的另一种方式,而非一定去卷模型能力。


53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅