forked from supersonicbi/supersonicbi.github.io
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathen.search-data.min.8f36b9107a3f5564d78e65a939ed1ddf4c38c851b3a50459aa95f27cf8f1048f.json
1 lines (1 loc) · 18.2 KB
/
en.search-data.min.8f36b9107a3f5564d78e65a939ed1ddf4c38c851b3a50459aa95f27cf8f1048f.json
1
[{"id":0,"href":"/docs/chat-bi/%E5%8A%A9%E7%90%86%E7%AE%A1%E7%90%86/","title":"助理管理","section":"Chat BI","content":"\r助理管理\r#\r"},{"id":1,"href":"/docs/headless-bi/%E6%9E%84%E5%BB%BA%E6%A8%A1%E5%9E%8B/","title":"构建模型","section":"Headless BI","content":"\r构建模型\r#\r构建语义模型是使用SuperSonic的第一步。在这个模块中, 它可以连接上你的数据库引擎, 并通过简单方便的方式来帮助你将物理数据建模为维度和指标等逻辑概念。建模完成后, 你就可以在问答中通过自然语言的方式来和你的物理数据交互啦~\n问题示例\n为了帮助你更好地理解建模的过程, 我们通过一个问题示例来进行介绍: SuperSonic本身作为一个产品, 那么如何用语义建模来统计它的埋点访问数据呢?比如SuperSonic在一段时间内的访问用户数是多少?这些用户的访问次数和停留时长是怎样的?这些用户来自哪些部门?这些用户看了哪些页面?分别看了多少次?等我们建模完成, 这些问题的答案也就浮出水面了。\n1. 创建一个数据库链接\r#\r在开始探索之前, 你首先需要创建一个数据库链接来连接你的数据库, 以便后续获取数据。在SuperSonic中,主要支持JDBC类型的数据库链接,创建一个数据库连接主要分为 以下三个步骤:\n填写连接信息 点击测试连接, 若连接测试通过, 则可点击保存。否则, 返回步骤1 点击保存。 如图1-1所示, 由于SuperSonic的埋点访问数据被存放在H2数据库中, 因此我们创建了一个H2数据库实例作为例子。除了H2数据库以外, 我们还支持MySQL, ClickHouse, PG等多种常见数据库。\n需要说明的是, 在这里创建数据库之后, 并不是所有人都可以查询这个数据库链接的数据, 需要在图2-1表单上进行授权。\n管理员: 可以编辑这个数据库链接的人\n使用者: 可以使用这个数据库链接查询数据的人\n2. 创建一个主题域和模型集\r#\r接下来, 用户可以按自己的业务场景去创建主题域, 然后在主题域下面创建具体的模型集。如图2-1所示, 为了统计SuperSonic的埋点访问情况, 我们创建了一个叫\u0026quot;超音数\u0026quot;的主题域以及基于SuperSonic的埋点数据创建了一个\u0026quot;埋点模型集\u0026quot;:\n3. 创建数据模型\r#\r创建好了一个模型集后, 我们就可以把物理数据抽象为一个个数据模型并创建到模型集下。在SuperSonic中, 数据模型是对数据库中数据的一种逻辑层面上的抽象, 它既可以直接指代一张物理表, 也可以由一段SQL逻辑表示而成。数据模型中涉及的字段可被指定为维度或者度量, 而这些维度和度量又可以衍生出更复杂的维度和指标。如图3-1, 超音数提供了两种创建数据模型的方式。\n其中, 快速创建 可以直接指定一张物理表来把它创建为数据模型, 而SQL脚本 则提供了更为灵活的数据模型创建方式, 我们可以通过写一条逻辑SQL来把它指定为数据模型\n如图3-2为通过SQL脚本的方式创建数据模型, 首先需要我们填写一些基本信息, 如数据模型名称和描述。\n然后我们写一条SQL来表达我们的数据模型逻辑, 然后点击运行, 就可以看到这条SQL查询出来的数据, 校验数据无误之后, 我们可以点击生成数据模型, 需要注意的是, 这里创建数据模型选择数据库链接的时候, 需要有数据库的使用者权限.\n我们可以把这些字段指定为日期,主键,维度和度量并快速创建到维度/指标列表,也可以不指定。其中日期和主键为特殊的维度。作用如下:\n维度主要用于筛选和分组,在选定为维度之后,若需要把它快速创建到维度列表中,可以勾选好快速创建按钮,并填写好它的中文名称。同时,若把该维度设置为标签,则在后续使用中,可以把它当作标签来使用。如一个名为\u0026quot;风格\u0026quot;的标签,则可以在后续问答对话中,用来圈选实体,如\u0026quot;国风风格的艺人\u0026quot;就可以命中明细模式来圈选艺人。\n度量主要标识数值类型字段,用来进行聚合计算,把字段选中为度量之后,可以进一步选择该度量的聚合方式。度量可在后续用来创建指标,当然,也可以在这一步填写好中文名称后,就可以立即创建为指标。\n日期类型维度主要用于标识,方便问答进行数据查询。\n主键则用于不同数据模型之间的连接字段,有了连接字段后,就可以在画布进行连接关系的配置,配置完成,在查询模型数据的时候,多个模型之间就可以进行Join连接了。同时,可以通过在主键上绑定标签对象来把主键设置为实体,比如在歌曲ID这个主键上绑定\u0026quot;歌曲\u0026quot;这个标签对象,那么在后续问答会话中问到\u0026quot;给我一批流行歌曲\u0026quot;的时候,可以通过\u0026quot;流行\u0026quot;这个标签值来圈选出一批歌曲ID。\n把字段指定为维度/度量之后,还可选择是否勾选快速创建单选框。若勾选,则会直接把选中的维度/度量批量创建到维度/指标列表。\n若不勾选,但字段已被选定为维度/度量,该字段虽然不会直接被创建到维度/指标列表,但是后续在创建衍生维度/指标的时候也可作为表达式中的字段被用上。\n最下面的过滤SQL用于词典导入场景。举个例子,在问答中,如果需要对维度值进行识别,那么就需要提前把维度值写入到词典,但是当我们希望对维度值做一些过滤的时候,如在音乐场景里,我们只希望把国风类型的歌曲导入到词典中,那么就可以通过这条SQL来进行过滤。\n以上就是基于SQL脚本来创建模型的基本介绍,接下来我们来介绍如何通过指定库表名来快速创建模型:\n如图,在选择快速创建的方式之后,需要先填写该模型依赖的数据库连接,然后系统会自动拉取这个数据库连接的元数据,用户直接选择库名和表名并填写基本信息就可以进入到下一步。 在第二步中,和上述通过SQL脚本来创建模型的方式基本一致,就不再重复介绍了。如图3-6所示, 重复以上步骤,为我们创建的3个数据模型示例, 分别为:\n用户部门: 主要包含用户以及用户的部门信息\nPVUV统计: 主要包含用户访问次数和访问人数等信息\n停留时长统计: 主要包含用户的停留时长信息\n同时,在刚刚创建模型时,我们把一些字段标识为了维度/度量,并勾选了快速创建,因此,可以在对应模型中的指标维度列表看到已快速创建好的指标维度:\n到此为止, 我们就成功把超音数的访问统计数据建模成了相关的数据模型、维度和指标。\n4. 创建模型间连接\r#\r可以看到,刚刚创建的这些指标和维度分散在不同的模型里,那么如果想要在一次查询里同时包含这些指标和维度,如\u0026quot;按部门统计访问次数\u0026quot;,应该还要继续如何配置呢?我们可以在模型列表右上角点击切换到画布模式,并创建模型间的连接关系,如下图: 到目前为止,我们就创建好了指标维度,以及模型间的关联关系。但要想被上层应用使用到,这还不够,还需要进行最后一步,创建一个数据集。\n5. 创建数据集\r#\r数据集是SuperSonic用来对接问答和其它上层BI应用的一个数据结构,在数据集中,可包含多个模型的维度指标。对上层应用来说,底层建模细节是隐藏的,它只需要关注数据集中暴露出来的维度指标即可。\n如上图7-1,创建数据集时,首先填写好数据集的名称等基本信息,然后即可进入到下一步,选择模型以及模型的指标维度,如图7-2,把上面创建的来自三个模型的指标维度全部加入 到数据集中,由于这三个模型已经在画布中创建了连接关系,因此对于使用数据集的上层应用来说,只需要对指标维度进行使用即可,而不用担心底层的建模细节。\n到此为止,就算是完成了所有的建模环节,开头提到的那些示例问题,也都可以在问答中通过自然语言的方式进行愉快的探索了!\n"},{"id":2,"href":"/docs/%E7%B3%BB%E7%BB%9F%E9%83%A8%E7%BD%B2/%E7%BC%96%E8%AF%91%E6%9E%84%E5%BB%BA/","title":"编译构建","section":"系统部署","content":"\r构建构建\r#\rSuperSonic为二次开发提供两种编译构建方式:\n在开发调试场景,直接从本地IDE启动; 在开发部署场景,从源代码编译打包启动。 本地IDE启动\r#\r后端与webapp共同部署\r#\rsh assembly/bin/supersonic-build.sh webapp 执行构建webapp IDE本地启动Java类com.tencent.supersonic.StandaloneLauncher http://localhost:9080 前后端分开启动的方式\r#\rIDE本地启动Java类StandaloneLauncher 进入webapp目录,执行sh start-fe-dev.sh直接启动前端服务 http://localhost:9000 注意这里是9000端口 源代码编译包启动\r#\r下载相应版本source code 执行编译脚本:sh assembly/bin/supersonic-build.sh 编译完成后从assembly/build目录获取release包 解压zip包,执行启动脚本sh bin/supersonic-daemon.sh start 访问浏览器:http://localhost:9080 附加说明\r#\rWindows环境均有提供对应的bat脚本, 执行即可。 Ubuntu环境, 启动方式同上, 若出现报错, 可尝试https://support.huaweicloud.com/intl/zh-cn/deployman_faq/deployman_faq_1016.html。 启动之后, 可以到logs目录下查看日志,确认启动正常。 数据库表结构可直接参考launcher/standalone下的sql脚本, h2数据库schema-h2.sql, data-h2.sql, mysql数据库schema-mysql.sql, data-mysql.sql, 这两个脚本均为最新表结构, 每次发版更新的sql会放到sql-update.sql (第一次启动不需要管sql-update.sql, 只是已经在mysql上跑过, 如果不想重新建表导数据, 就需要对照sql-update.sql中的sql执行日期来进行表结构更新) 系统默认对h2数据库支持样例数据, 若需要基于本地mysql查看样例数据, 可执行schema-mysql.sql来创建最新表结构, 并执行data-mysql.sql把样例数据写入mysql, 之后系统在启动的时候会自动把系统元数据和会话数据写入mysql表,系统启动成功后可在页面看到样例数据, 详细可参考DemoLoader。若需要从h2切换至mysql, 按如下正常配置即可 spring:\rdatasource:\rurl: jdbc:mysql://localhost:3306/your_database?useUnicode=true\u0026amp;characterEncoding=UTF-8\u0026amp;useSSL=false\rusername: your_username\rpassword: your_password\rdriver-class-name: com.mysql.jdbc.Driver\rdemo:\renabled:\rtrue "},{"id":3,"href":"/docs/%E5%BF%AB%E9%80%9F%E4%BD%93%E9%AA%8C/","title":"快速体验","section":"Docs","content":"\r快速体验\r#\rSuperSonic内置用于DEMO的语义模型和智能助理,因而只需要以下三步即可快速体验。\n启动系统\r#\r下载相应版本release包 解压zip包,执行启动脚本:sh bin/supersonic-daemon.sh start 访问浏览器:http://localhost:9080 配置LLM\r#\r进入菜单“助理管理”,选择系统内置的DEMO助理“算指标” 点击“修改信息”,选择“大模型配置”,填入自己申请的大模型服务信息,包括“Model Name”、“Base URL”以及\u0026quot;API Key\u0026quot; 点击“确定”,保存助理大模型配置 问题对话\r#\r进入菜单“问答对话”,选择智能助理“算指标” 点击“新对话”,输入问题“近半个月sales部门访问量最高的用户是谁” 点击\u0026quot;LLM解析S2SQL\u0026quot;可以查看大模型生成的SQL "},{"id":4,"href":"/docs/headless-bi/%E6%8C%87%E6%A0%87%E7%AE%A1%E7%90%86/","title":"指标管理","section":"Headless BI","content":"\r指标管理\r#\r"},{"id":5,"href":"/docs/chat-bi/%E6%8F%92%E4%BB%B6%E7%AE%A1%E7%90%86/","title":"插件管理","section":"Chat BI","content":"\r插件管理\r#\r"},{"id":6,"href":"/docs/%E7%B3%BB%E7%BB%9F%E9%83%A8%E7%BD%B2/%E9%85%8D%E7%BD%AEllm/","title":"配置LLM","section":"系统部署","content":"\r配置LLM\r#\rLLM的使用是SuperSonic的重要一环。能显著增强对用户的问题的理解能力,是通过对话形式与用户交互的基石之一。在本项目中对语言模型能力的应用主要在 LLM 和 Embedding 两方面, 且支持Java和Python两种访问语言模型的方式。\n首先,关于LLM的配置,我们专门在launchers/standalone/src/main/resources下创建了一个supersonic-env.sh文件,用于LLM的配置,通过在这里配置,Java和Python两种访问LLM的方式都能生效。\nJavaLLMProxy\r#\r服务默认启D动方式就为Java访问语言模型的方式,语言模型相关配置可直接通过YAML文件来配置,目前在配置中支持配置访问open-ai的key和LLM模型的名称\nPythonLLMProxy\r#\rPython访问LLM的方式需要通过sh assembly/bin/supersonic-daemon.sh start pyllm来启动Python服务, 该命令同时也会启动Java服务, 但通过Python服务来访问LLM。 Python服务默认使用的模型中,LLM选用闭源模型 gpt-3.5-turbo,Embedding模型选用开源模型 GanymedeNil/text2vec-large-chinese。用户可以根据自己实际需求进行配置更改。\n配置方式\nLLM模型的配置\r#\rLLM模型相关的配置,在 supersonic/headless/core/src/main/python/config/run_config.ini 进行配置。 LLM默认采用OpenAI的闭源模型 gpt-3.5-turbo,用户可以根据自己的实际需要选择LLM模型的提供方,例如Azure、文心一言等。通过[LLMProvider]下的LLM_PROVIDER_NAME 变量进行配置。需要注意的是,现阶段支持配置的模型提供方必须能够被langchain所支持,提供方的名字可以在langchain文档中查询。 LLM的相关变量在[LLMModel]下进行配置,例如openAI的模型,需要提供 MODEL_NAME、OPENAI_API_KEY、TEMPERATURE 等参数配置。不同的LLM提供方需要的配置各不相同,用户可以根据实际情况配置相关变量。 Embedding模型配置\r#\rEmbedding模型默认采用开源模型 GanymedeNil/text2vec-large-chinese。用户可以根据实际需要配置适合的Embedding模型;通过[Text2Vec]下 HF_TEXT2VEC_MODEL_NAME 变量进行配置,为了使用方便采用托管在HuggingFace的源,初次启动时自动下载模型文件。 LLM与embedding配置 FAQ\r#\r可以用开源的LLM模型替代OpenAI的GPT模型吗? 暂时不能。我们测试过大部分主流的开源LLM,在实际使用中,在本项目需要LLM提供的逻辑推理和代码生成场景上,开源模型还不能满足需求。 我们会持续跟进开源LLM的最新进展,在有满足要求的开源LLM后,在项目中集成私有化部署开源LLM的能力。 可以用国产的闭源模型替代OpenAI的GPT模型吗? 据部分用户反馈,在他们的场景下文心一言、混元等国产闭源模型的效果与GPT3.5差距不大;整体而言GPT3.5及GPT4适用的场景会更广泛一些。用户可以在自己的场景下修改LLM的相应配置,试一试实际效果。 GPT4、GPT3.5、GPT3.5-16k 这几个模型用哪个比较好? GPT3.5、GPT3.5-16k 均能基本满足要求,但会有输出结果不稳定的情况;GPT3.5的token长度限制为4k,在现有CoT策略下,容易出现超过长度限制的情况。 GPT4的输出更稳定,但费用成本远超GPT3.5,可以根据实际使用场景进行选择。 Embedding模型用其他的可以吗? 可以。可以以该项目text2vec的榜单作为参考,然后在HuggingFace找到对应模型的model card,修改HF_TEXT2VEC_MODEL_NAME变量的取值。 启动时,首次下载Embedding模型需要会链接HuggingFace的源进行下载,如果网络不通怎么办? 可以到HuggingFace的官网找到对应的model card,然后将模型下载到本地。在supersonic/chat/core/src/main/python/config/run_config.ini 中将HF_TEXT2VEC_MODEL_NAME变量配置为模型所在的绝对路径。 LLM在text2sql中的应用\r#\rtext2sql的功能实现,高度依赖对LLM的应用。通过LLM生成SQL的过程中,利用小样本(few-shots-examples)通过思维链(chain-of-thoughts)的方式对LLM in-context-learning的能力进行引导,对于生成较为稳定且符合下游语法解析规则的SQL非常重要。用户可以根据自身需要,对样本池及样本的数量进行配置,使其更加符合自身业务特点。\ntext2sql运行中更新配置的脚本\r#\r如果在启动项目后,用户需要对text2sql功能的相关配置进行调试,可以在修改相关配置文件后,通过以下2种方式让配置在项目运行中让配置生效。 执行 supersonic-daemon.sh reload llmparser 执行 python examples_reload_run.py "},{"id":7,"href":"/docs/%E9%A1%B9%E7%9B%AE%E6%9E%B6%E6%9E%84/","title":"项目架构","section":"Docs","content":"\r项目架构\r#\r架构图\r#\r核心组件\r#\rKnowledge Base: 定期从语义模型中提取相关的模式信息,构建词典和索引,以便后续的模式映射。\nSchema Mapper: 将自然语言文本在知识库中进行匹配,为后续的语义解析提供相关信息。\nSemantic Parser: 理解用户查询并抽取语义信息,生成语义查询语句S2SQL。\nSemantic Corrector: 检查语义查询语句的合法性,对不合法的信息做修正和优化处理。\nSemantic Translator: 将语义查询语句翻译成可在物理数据模型上执行的SQL语句。\nChat Plugin: 通过第三方工具扩展功能。给定所有配置的插件及其功能描述和示例问题,大语言模型将选择最合适的插件。\n"},{"id":8,"href":"/docs/faq/","title":"FAQ","section":"Docs","content":"\rFAQ\r#\r项目是否自带大模型服务?\r#\rA: 项目内置langchain4j社区提供的demo API key,但单次请求openai大模型限制在1000 token,因而只能用于快速体验。要正常体验问答对话,请自行申请大模型服务。\n项目可以支持哪些大模型服务?\r#\rA: 当前主要支持兼容open_ai接口协议的大模型服务,比如GPT、GLM、DeepSeek、Qwen、Moonshot等。文心和混元正在验证中,敬请期待。\n项目有没有体验的地址?\r#\rA: Playground访问地址:http://117.72.46.148:9080\n项目是否支持文本知识库?\r#\rA: 当前主要聚焦于结构化数据的问答,文本数据将在未来版本加入支持。\n"}]