引言
尽管我对于AI技术(或者更狭窄一点,大语言模型LLM)结合应用到BI产品中非常看好,但在现实里它就是存在着很多的问题,使得真正要成熟应用且推广开来存在诸多障碍,比如text-to-SQL模式:
一致性问题:大模型作为概率型产品,难以保证输出的一致性,这对于需要精确结果的数据分析来说是一个缺陷。
正确率限制:在企业级数据分析中,大模型生成代码的正确率可能不足80%,这意味着存在较高的错误率。
控制性问题:大模型的输出难以控制,这可能导致在特定业务场景下无法得到预期的分析结果。
多表分析限制:大模型在处理涉及多表的复杂SQL查询时可能存在限制,影响其在复杂数据分析场景中的应用。
输出稳定性:同一问题可能得到多种回答,影响输出的稳定性和可靠性。
性能问题:生成的代码可能未经过优化,导致执行性能难以保障。
当然这也是驱使我持续进行相关研究和探索的动力,就是怎样才能真正实现准确、可靠的AI数据智能分析,而不是看大模型一本正经的胡说八道。
近期我就体验到了一款感觉非常不错的智能问数产品>>>
这是一款面向企业的数据智能搜索和分析工具,基于自然语言处理(NLP)、机器学习等AI技术,采用中文问答式搜索,使用户能够以对话的形式直接提出数据查询和分析需求,灵活快速获取数据洞察并辅助决策。
在接下来的内容中,我们将从产品设计的角度分析该智能问数产品中的关键功能,详细解读这些功能如何在AI与BI结合的场景中体现其智能优势。我们将分为两个主要部分:系统关键设置和具体前端使用,逐步剖析产品设计中的核心思路和实现方式。
产品名称将在最后再揭晓,容我先卖个关子。
后端:系统关键设置
该产品将系统的主要用户预设为4大类:
但是对于一般的管理系统后台也有的用户管理、权限管理之类的基础设置,我们就不作展开了。
依我所见,以下是该产品中最能体现智能问数(AI+BI,或者说chatBI)特点的关键设置。
做智能问数产品的厂商/团队,未必拥有自研的大模型,通常都需要借助第三方的力量。而提供灵活的用户选择也是一种解法:
这种情况下用户除了付费开通/购买智能问数产品之外,还需要另外付费购买大模型的API(当然也有的厂商是打包收费,又或者说用户也可以选择一些免费的模型)。搜索设置是智能问数产品的核心配置之一。系统允许用户通过自然语言输入查询,系统在后台自动解析并生成相应的SQL查询语句。这种设计的关键在于如何确保用户的自然语言输入能够被准确地转化为结构化的查询。默认展示设置:允许用户定义系统在回答用户查询时的结果展示形式。这包括图表、表格、数据卡片等不同的展示方式。用户可以根据自己的偏好和具体的业务需求,选择最合适的展示形式,以便更直观地理解和分析数据。默认时间范围:在查询数据时,系统通常需要设定一个时间范围。如果用户在查询中没有明确指定时间范围,系统会自动补全一个默认的时间范围。例如,当用户查询“北京门店每季度的销量”但未指定具体时间时,系统会默认展示前12个季度的销量数据。这种设计不仅提升了查询的便利性,还避免了用户因遗漏时间范围而收到无效或不相关的结果。预测分析:开启预测分析后,系统会根据历史数据进行趋势预测,并为用户推荐相应的图表和分析结果。这可以帮助用户提前洞察未来的业务趋势,支持更为前瞻性的决策。维度分析:开启后,系统会根据用户查询的数据自动进行维度分析,例如将数据按地区、产品类别等不同维度进行细分,从而提供更为细致的分析视角。引导和推荐问题设置:用于配置新用户进入工作区时看到的引导问题,以及用户在搜索框输入时系统自动推荐的问题。这些预设问题可以帮助用户快速上手,理解系统的使用方法,并提供一些常见的业务查询示例。这和我们在自定义GPTs之类的“智能体”时也经常用到:在基础设置-展示设置中,可以管理数据和图表、表格的展示效果。通过对图表、表格的展示效果进行精细管理,用户能够根据具体的业务需求和个人喜好,调整数据的呈现方式。这一功能为用户提供了极大的灵活性和可控性。数据模型(或者说数据集)是BI系统的核心,它决定了数据的组织方式和分析的灵活性。用户可以根据业务需求创建和配置模型,包括选择事实表和维度表,并定义它们之间的关系。这样的设计保证了系统的灵活性,使得不同业务场景下的数据分析都能得到有效支持。创建模型是用户将数据表、维度、指标等组织成一个完整的数据模型的过程。用户可以选择数据表作为模型的基础,并定义数据之间的关系(如事实表与维度表之间的关联)。这个过程包括为模型选择合适的字段、设置字段的类型(如时间维度、数值指标等),并配置这些字段的展示方式。关于数据模型的更多示例,可以参见《AI+BI:结合大语言模型实现对话式的智能报表系统》中关于【百度Sugar BI 智能问数上手初体验】的内容,本质上是相似的。维度配置:系统允许用户为维度配置关键词、数据类型和展示格式,并支持复杂的时间维度设置。这使得用户能够在查询中灵活使用多种维度,提升了数据分析的深度和广度。别名和同义词管理:借助大语言模型的能力,系统可以根据数据中的自然语言内容自动生成同义词,用户也可以手动添加。这一功能极大地提升了系统的语义理解能力,确保用户使用不同表达方式时,系统仍能准确解析。当然,用户也是可以自行维护的,比如当系统无法自动关联同义词时,用户也可以手动添加同义词,如“上海”和“申城”。别名是指字段关键词的别称,例如“营业额”和“销售额”、“GMV”、“收入”等。同义词是指某个字段维度值的同义词,例如“北京”和“京城”。1. 同一维度中配置的相同同义词将被视为失效,如河北和河南的同义词不能同时为“河”;
2. 同一维度中不能将维度值配置为别的维度值的同义词,如河北的同义词不能为河南。当业务用户输入的搜索词未匹配到合适的字段时,可以通过校准反馈提出申请。工作区管理员将收到消息提醒。
点击“同意”,即可通过审批,使改规则对工作区内有权限的所有用户生效。
这是该智能问数产品极具特色的功能,它允许用户通过简单的词汇配置复杂的数据逻辑,尤其适用于需要多层次数据分析的复杂业务场景,比如:搜索问题解析规则:用户可以为搜索问题设置解析规则,自动替换或补充关键词。这种规则化的配置使得系统能够在面对复杂查询时仍保持高效的解析能力。比如,搜索问题包含“618”或“六一八”,即自动在问题前增加“北京”,并将问题中的“618”替换为“20220618”。例如用户搜索“618营业额”即为“20220618北京营业额”;如不满足上述条件,则增加“上个月”至问题前。
分词结果整理:系统能够根据用户配置的规则,自动整理分词后的搜索结果,确保输出结果的精确性。“分词结果整理规则”是该产品中的一项高级功能,旨在帮助用户进一步优化和精确化系统对自然语言查询的理解和处理。通过为分词后的查询结果设定一系列条件和操作规则,系统能够更智能地解析用户输入的问题,并生成更符合用户期望的查询结果。这一功能对于提高系统的自然语言处理能力、增强用户体验具有重要意义。自然语言处理(NLP)技术在BI系统中的应用,核心在于如何准确理解用户的查询意图,并将其转化为可执行的结构化查询(如SQL语句)。在复杂的业务场景中,用户的查询往往包含多层次的维度、时间范围、指标等,这就要求系统在分词和语义解析上具备极高的准确性。分词结果整理规则的引入,允许系统在分词之后进一步对查询内容进行智能调整,确保生成的查询结果更符合用户的实际需求。例如,用户可能会输入含有多个维度、时间范围或指标的复杂查询,系统通过这些规则可以识别并优化查询逻辑,从而提升结果的准确性和相关性。维度数量与匹配数量:这项条件能够帮助系统识别查询中涉及的多个维度,如地区、产品类别等,从而精确定位用户关心的数据。这对分析多维度数据的用户尤其有用,确保查询结果涵盖所有相关维度,而不会遗漏关键数据。时间维度与时间范围:通过识别时间维度和时间范围,系统能够处理涉及时间序列分析的复杂查询,如同比、环比分析等。这种设计可以帮助用户快速获得时间维度下的数据变化情况,适用于趋势分析、季节性分析等场景。指标数量与聚合过滤:这些条件允许系统处理涉及多个指标的复杂查询,如同时分析多个财务指标,或者筛选特定条件下的聚合结果。这样,系统能够为用户提供更丰富的分析视角,支持他们在多指标下的业务决策。这些配置使得系统能够理解用户的自然语言输入,并进行精确的结构化查询。这也是AI+BI产品中极为重要的一环。其实,在以OpenAI的GPT为代表的大模型火爆之前,该产品就已经是为企业提供搜索式智能数据分析和决策解决方案的了,但有了大模型能力的加持,一些能力得到了极大的优化:我们也可以换一个类比的说法,就是跨表/跨库关联查询。在企业中,不同业务的数据通常存储在不同的表格或数据库中。如果需要同时查询这些数据,传统方法通常要求将不同的数据表合并为一个“大表”,然而这会带来两个主要问题:- 数据集中化带来的存储和查询效率问题:将多个表拼接成一个大表会导致数据存储量庞大,从而影响查询速度和存储效率。
- 数据重复和统计口径问题:不同业务的数据可能在时间、部门层级等方面存在不同的统计口径,直接合并这些数据表可能导致数据重复或分析结果失真。
而多模型查询功能有效地解决了这些问题,用户无需合并数据表即可在一次查询中访问多个数据源。这种方法不仅提高了数据处理的效率,还减少了数据重复和错误的风险,确保了分析结果的准确性和全面性。假设某公司有两个独立的数据表:一个记录所有门店每天的交易流水,包括时间、门店名称、交易金额等;另一个记录每天的门店成本开销,如开销类别、金额等。当用户需要查看所有门店的交易金额与开销的相关性时,只需进行一次查询,即可得到【今年各门店交易金额和开销的相关性】。
当然,还有一些个性化的设置,我们也可以简单了解下:该产品前端功能设计体现了其智能问数的理念,让用户能够在无需深厚技术背景的情况下,完成复杂的数据查询和分析。2. 数据探索:点击“数据探索”进入搜索界面,用户即可开始搜索想问的问题,也就是chatBI的核心承载功能了。3. 报告:点击“报告”,用户可以看到其所有创立的报告,关注的报告,同事与其分享和协作的报告。
4. 我的:点击“我的”,用户将看到所有其关注的问题、保存的卡片和搜索历史。
5. 设置:点击“设置”图标,进入系统设置和工作区配置界面(注意,该按钮近工作区管理员可见)。
6. 通知:点击“铃铛”图标,用户会看到所有的通知。
7. 工作区切换、语言切换、外观切换、个人设置、以及帮助。8. 搜索框:点击搜索框,系统将转至搜索界面,用户即可开始搜索想问的问题。
9. 搜索建议:系统向用户提供了一些常见的、便于了解产品的或用户可能需要搜索的问题,包括我常搜索、热门搜索、你可以试试、了解趋势、了解排名、进行对比、了解内容,共计七类。点击相应问题即可直接搜索。
10. 我的观察:点击“添加观察的内容”,即可将关注的报告、问题、卡片添加到首页观察区,点击卡片即可跳转到对应页面。当报告或问题被取消关注、卡片被取消保存时,首页“我的观察”区中对应的资源也会消失。11. 最近搜索:最近搜索展示了用户近30天中前15条搜索的问题,也可通过点击“全部浏览记录”来查看近30天所有搜索的问题。
其中,9/10/11三个模块可根据自己的使用习惯,通过拖拽调整顺序。1.通过搜索框直接输入问题开始搜索分析,获取数据结果。3.通过筛选器,点选需要的指标、维度、分析关键词,开始搜索,获取数据结果。例如,搜索“2018年耐克营业额大于100万并且营业额最高的10个门店对比”,系统会将其拆分成不同颜色的“搜索块”,每个颜色的搜索块代表着不同的要素。分析引擎会根据所解析出的搜索块,输出与问题最匹配的图表和数据。
当然,搜索本身也是可以在已有的基础上修改的,而不是必须重来,例如(1)选择维度条件:
(2)选择指标条件:
构建一个有效的搜索问题就像在语文课上造句一样。每个搜索问题由以下五种词类组成,其中时间和指标是必不可少的基础元素:- 时间(必需):指的是查询涉及的时间段,如今年、去年、前三个月、2021年1月2日等。
- 维度:用于限定查询的范围或对象,如品牌、门店、会员、手机号等。
- 指标(必需):是需要计算或分析的具体值,如会员消费金额、消费次数等。
- 条件:进一步细化查询的标准,如前十、top10、大于、小于、包含、不包含等。
- 计算逻辑:用于定义查询的数据关系或趋势,如对比、排名、趋势、同比、环比、增长、相关等。
要构建一个有结果的搜索问题,最简单的格式就是时间 + 指标。这是一个基础的问句形式,确保系统至少能够返回一个基础的结果。如果用户没有提供这些关键元素,系统会自动使用默认值进行补充。- 时间 + 指标 + 维度:增加维度来限定查询范围。
- 例如:今年杭州地区的消费金额,今年浙江地区上衣的消费金额。
- 时间 + 指标 + 维度 + 条件:在限定范围内加上条件,进一步细化查询。
- 时间 + 指标 + 维度 + 计算逻辑:增加逻辑运算来分析数据变化或特征。
该产品还支持更复杂的高级问法,这些问法让用户能够进行深度的数据分析。- 例如:今年杭州消费金额占比,或今年杭州各门店消费金额占比。
- 例如:“去年营业额前十的门店”今年各品牌消费金额。
特别地,它还支持2个特殊问法(对于有SQL基础的读者来说比较容易理解):1. 如果需要精准匹配,可以用 维度是(xx) 这种方式提问;
2. 如果需要模糊匹配,可以用 维度包含(xx)这种方式提问。
当用户搜索问题时,可能没有输入完整的关键词或输入有误,此时可能触发模糊匹配规则,系统会展示模糊匹配获得的关键词,用户可选择具体使用什么内容。
允许用户选择复数个内容,且允许用户对模糊内容提交搜索反馈,用于后续的查询。
当一个词同时作为多个维度的维度值时,将会触发一词多义内容,搜索框下凡将会出现对应的一词多义提示框,用户可以选择其对应的实际含义。 当用户选择具体的含义后,对应的条件将会被应用至搜索框,并为其查询对应的维度条件。根据搜索提问,系统快速响应(虽然背后涉及一系列的技术处理)并给出可视化的结果:在查询数据的时候,通常需要给系统设定一个时间范围(如“上个月”“上周”“2024年”等)。但若用户没有输入时间范围,系统则会主动进行补全,例如:例如,搜索“耐克营业额”,系统则会默认展示前30天的数据↓
又如,搜索“耐克每年营业额”,系统则会默认展示前3年的数据↓
当然,根据用户的搜索(提问),系统自动决定采用何种默认图表形式来呈现结果也是非常重要的(尽管支持用户自助修改,但如果一开始就生成“最合适”的无疑是体验更好的)。比如:(1)用户搜索的是“去年耐克每季度每月的营业额”↓其中,“去年”为时间范围,“每季度”为第一个时间单元,“每月”为第二个时间单元,用户则可通过该问题对比耐克每个季度每个月的营业额。
(2)用户搜索的是“今年一月,二月,五月 营业额对比”↓(5)“品牌不是(耐克,阿迪达斯)的品牌营业额”——这种是类SQL的问法(not in)↓(6)品牌像(阿迪)的营业额——同样是类SQL的问法(like)↓(9)“2021年不同登录地_省的客户编号数量”↓当然,对于已经生成的可视化图表结果,我们是可以进行编辑的:这个我们就不展开了,因为BI产品一般都具有这方面的可视化编辑功能。
当用户对搜索结果的某个数值感兴趣时,可以在图表上直接选择某一维度向上、向下钻取,得到新问题。