
1. 概述
2. AI服务器配置
在「其他配置」中,管理员可以配置问答BI使用的「规则模型」服务器,输入规则模型所在服务器的主机和端口号,如下图所示:
3. 大模型配置
3.1 大模型服务配置
在问答 BI 中有五个功能需要大模型的支持,智能改写、分析思路、数据解读、归因分析建议、一键配置。
需要使用这几项功能就需配置大模型服务,用户可依据实际条件选择搭建大模型,详情请参见:FineChatBI 服务架构概述
成功配置大模型服务后,管理员可以选择选择性开启大模型四项功能,如下图所示:
3.2 智能改写
使用大模型对提问的问题进行标准化改写,改写后的问题更加标准,可以使问答BI的回复更加准确,降低用户的提问成本
示例1
改写前:干的最好的门店
改写后的标准化问题:销售额求和最高的门店名称
示例2
改写前:帮我对比一下去年和今年的销售额
改写后的标准化问题:去年vs今年的销售额
1)若设置默认问答模式为「智能模式」并保存,如下图所示:
在提问界面选择「智能」时,默认每提问一个问题大模型都会对其改写,提高回复的准确率,但相应的,系统速度和性能会有所下降。
在提问界面选择「极速」,则默认不会对问题进行改写。
2)若设置默认问答模式为「极速模式」并保存,只有当用户点击「对结果不满意?重新生成」后,才会对提问的问题进行智能改写,该模式下。如下图所示:
3.3 分析思路
在大模型配置中,开启「分析思路」,那么大模型可以帮助用户处理一些模糊语义或一些启发性的问题。
例如:点击「问思路」,并输入"你帮我看看哪些产品值得推广",可以看到系统对思路进行了拆解,用户可以直接参考拆解后的思路。
3.4 数据解读
FineChatBI 的「数据解读」功能为用户提供更加智能的数据洞察服务。生成图表后,点击下方的「数据解读」,大模型即会给出数据解读报告,报告会包含:
数据表现分析:系统会结合用户提出的问题,针对图表内容详细解读数据表现。
关联外部因素:若存在影响数据的外部信息,功能将自动关联,对图表数据表现作出合理解释,把握数据背后深层原因。
推荐后续问题:基于当前分析方向,智能推荐一系列可继续追问的问题,引导用户深入挖掘数据,拓展分析维度。
与其他功能不一样的是,数据解读需要单独填写大模型信息。比如说 deepseek 模型用来做数据解读更合适,可以在数据解读配置下填写 deepseek 的大模型信息。如下图所示:
3.4 归因分析建议
多维度拆解分析是定位问题原因的有效分析方法之一,而当分析时拆解的维度过多时,分析就失去了焦点,要么找不到出现问题的原因,要么感觉每个维度都可能有问题。
在大模型配置中,开启「归因分析建议」,「智能问答 BI」即可支持对如下问题进行归因分析,挖掘关键影响因子,点击指标值,找到影响该指标值的重要因子,针对性拆解维度进行分析,提高分析效率。
1)包含时间及单个指标问题,可以自动检测异常点。例如:2022年2月、2022年6月。
2)包含单个分组及单个指标的问题,可以通过点击组件上的点进行归因分析。例如:2022年6月销售额。
3)可以通过问答,对段状或者点状时间及指标进行归因分析。例如:2022年2月的销售额为什么有异常?
3.5 一键配置
通过大模型给字段值配置同义词,详情请参见:同义词配置
4. 知识库问答配置
用户可以在 FineChatBI 的智能配置中使用企业自行配置的接口,实现在 FineChatBI 中对企业自有知识库进行提问的功能。
在 FineChatBI 的提问处,会增加一个对知识库的提问入口,如下图所示:
1)进入「知识问答配置界面」,开启「知识库问法」按钮,并输入企业自定义的接口地址。如下图所示:
需要在接口地址配置以下参数:
入参 | query:用户输入的内容(类型为:string) |
出参 | base64 编码的 html 字符串(类型为:string) FineChatBI 会根据此字符串进行 base64 解码并将其渲染至回答框中,样式和内容完全由 html 字符串决定 |
2)配置提问入口的名称和提示内容,可在下方查看效果预览。如下图所示:
3)点击保存,以上配置即可生效。
5. 预处理配置
预处理配置即允许企业通过配置自有意图解析接口。
当用户提问时,系统会将问题先交给企业预处理服务进行解析,FineChatBI 再通过预处理服务解析后的结果回答问题。
接下来介绍如何配置。
打开预处理配置,并输入预处理服务的请求地址,如下图所示:
5.1 接口数据结构说明
预处理服务的请求应接受入参,返回出参,来实现修改意图分类的目的,所以企业需依照以下需求配置接口参数。
接口数据结构如下:
export interface IChatPost {
sentence: ICutPost;
isolatedConversation: boolean;
queryType: QUERY_TYPE;
chartType?: undefined; // 目前不指定
preview: false; // 目前为false
sessionId:string;
}
export interface ICutPost {
subjectId: string | null; // 主题id
tokens: ICutProps[]; // 用户输入形成的数组
query: string; // 用户的文本输入
editable: boolean; // 用户有没有显式的指定模型
modelId: string | null;
}
export enum QUERY_TYPE {
DataQuery = "DataQuery",
AnalysisBreak = "AnalysisBreak",
Knowledge = "Knowledge",
}
export interface ICutProps {
// 词块的内容
text: string;
// 词块的类型
type: CutPropsTypeEnum;
// 这个词块是否可以被替换
editable: boolean;
// 表示这个分词结果还可能代表别的含义, 嵌套结构
similarList: ICutProps[];
// 这个词块的第一个字符在本句话中的位置
startIndex: number;
// 这个词块的最后一个字符在本句话中的位置
endIndex: number;
// 字段名称, 当type为维度、维度枚举值或者指标时,此项为必填值
tableField?: string;
// 表名称, 当type为维度、维度枚举值或者指标时,此项为必填值
tableId?: string;
// 字段id,这里是分析思路配置的时候保存的时候带上的,其他情况下没有
fieldId?: string | null;
}
export enum CutPropsTypeEnum {
// 维度 门店,城市,省份 也就列名 @必要
DIMENSION = "DIMENSION",
// 指标 @必要
METRIC = "METRIC",
// 维度枚举值 @必要
DIMENSION_ENUM = "DIMENSION_ENUM",
// 日期维度, 如入库时间, 出库时间
DATE_DIMENSION = "DATE_DIMENSION",
// 表名称
TABLE_NAME = "TABLE_NAME",
// 日期范围, 如去年,今年, 2023年
DATE_RANGE = "DATE_RANGE",
// 时间单位, 每年,每月
TIMEUNIT = "TIMEUNIT",
// 数值
NUMBER = "NUMBER",
// 聚合方式, 如求和 最大值 最小值 方差
AGGREGATE_TYPE = "AGGREGATE_TYPE",
// 快速计算 如同比 环比 环比增长率
SWIFT_COMPUTE_TYPE = "SWIFT_COMPUTE_TYPE",
// 计算符 大于 小于 > <
OPERATOR = "OPERATOR",
// 自定义词
SLANG = "SLANG",
ORIGIN = "ORIGIN",
SPACE = "SPACE",
DELETE = "DELETE",
// 参数
PARAMETER = "PARAMETER",
// 不清楚具体含义,如果不知道或者识别不出来, 就设为此值
UNK = "UNK",
// 不知道具体含义,但是知道是名词
UNK_NOUN = "UNK_NOUN",
// 不知道具体含义,但是知道是动词
UNK_VERB = "UNK_VERB",
// 紧跟维度的维度枚举值
STRING_FUNCTION_VALUE = "STRING_FUNCTION_VALUE",
// 维度值
METRIC_VALUE = "METRIC_VALUE",
// 指标值
DIMENSION_VALUE = "DIMENSION_VALUE",
}
出参数据结构如下(200代表成功,其余均视为失败):
interface IOutputProps {
code: 200 | number;
data: QUERY_TYPE | null;
errorMsg: string | null;
}
export enum QUERY_TYPE {
DataQuery = "DataQuery",
AnalysisBreak = "AnalysisBreak",
Knowledge = "Knowledge",
}