微信扫码
添加专属顾问
我要投稿
FastGPT将专业"天书"变智能助手,手把手教你搭建电力行业知识问答系统。 核心内容: 1. FastGPT在专业领域的独特优势与RAG技术解析 2. 从零构建知识库的完整工作流与检索优化方案 3. 电力行业案例展示如何实现"知识资产活化"
把一本500页、充斥着各种电路图和专业术语的《高压断路器运维规程》变成一个随叫随到的专家,“拢共”分几步?
N步!别闹~
在很多人眼里,AI 擅长的是写诗、画画、写营销文案。但它的真正潜力,其实藏在那些最“无聊”、最“硬核”、最“重复”的领域。当晦涩如“天书”的行业知识库、技术手册、法律条文,被 AI “吃透”后,会释放出多大的生产力?
今天,我以电力领域为背景,向你完整展示如何利用 FastGPT,将专业知识库,转化为一个智能问答助手。
这背后,不仅仅是一个工具的使用,更是一套“知识资产活化”的工作流。准备好了吗?让我们一起见证“天书”变“宝典”的全过程。
FastGPT的优势定位是知识问答,快速构建知识库是它的特长。所以像智能客服、问答助手,使用FastGPT搭建都很方便。
知识库是FastGPT问答类应用的核心模块,用于存储和管理我们的知识。通过上传企业文档、产品资料、FAQ等文件到知识库,可以让根据这些特定的内容来回答问题,而不是依赖通用的AI模型知识。
这样构建的问答助手能够准确回答业务相关问题,比如产品功能介绍、操作流程说明、政策条款解读等,确保回答的准确性和一致性。
知识库使用的背景技术是 RAG(检索增强生成模型,Retrieval-Augmented Generation),它是一种将信息检索与生成模型相结合的混合架构。
首先,检索器从知识库或文档中获取与用户查询相关的内容片段。然后,生成器基于这些检索到的内容生成自然语言输出,确保生成的内容既信息丰富,又具备高度的相关性和准确性。
1、数据存储结构
在 FastGPT 中,整个知识库由库、集合和数据 3 部分组成。集合可以简单理解为一个文件。
一个库中可以包含多个集合,一个集合中可以包含多组数据。最小的搜索单位是库,也就是说,知识库搜索时,是对整个库进行搜索,而集合仅是为了对数据进行分类管理,与搜索效果无关。
2、检索方案(详见下图)
3、问题优化
在使用“知识库搜索”插件时,它有一项设置叫做“问题优化”,FastGPT 会把输入的问题进行优化,并拆解为多个相关问题并行输入给知识库,得到多个结果之后,对结果合并,使用重排算法对结果排序。
问题优化用在问题模糊、多轮对话的场景下挺好用的。比如下面这个例子:
用户提问:“第二点是什么?”
如果只去知识库里查找“第二点是什么”,压根查不到内容。
实际上,用户是基于上一步的答案,追问“QA结构是什么”,这时,我们打开「问题优化」来对用户当前的问题进行补全,从而使得知识库搜索能够搜索到合适的内容。使用补全后效果如下:
在我真实使用时,在使用知识库搜索插件时,会特别注意「问题优化」的效果如何。如果输入给知识库插件的问题比较清楚,我建议关闭“问题优化”开关。
我将使用“逆变器故障问答”的场景,来展示问答助手的通用解法。首先,了解一下这个小助手的需求:
1、精准意图识别:能够准确理解用户问题背后的真实需求
2、智能知识库路由:根据识别的意图,自动选择最合适的知识库进行检索
3、如果用户的问题在知识库当中没有,需要明确告诉用户:不好意思,这个问题在我的知识库中没有,请你询问与逆变器相关问题,我可以为你解答
4、在回复用户故障问题之后一定要询问用户:请问您是哪个省份的,我将为您提供对应技术专家的联系方式。
5、接收到用户提供的省份后,根据省份和知识库召回的信息,给用户准确的答复,回复示例:您所在省份的技术专家联系方式是:{{知识库的联系方式}}
6、用户如果提到深圳,也需要能判断是广东的,并返回广东省的技术专家联系方式
本例中,我将提供两份文件,用于搭建知识库:一份是《逆变器故障诊断与处理Q&A文档.md》,一份是《各省份售后联系电话表.md》。两份文件如下图所示:
整个工作流建成之后如下图所示:
我们需要建立两个知识库,分别处理上面的两份文件。
1、点击右上角「新建」,新建“通用知识库”。
2、输入名称“逆变器故障诊断与处理Q&A文档”,其他模型保持默认。
3、点击右上角「新建/导入」,选择“文本数据集”。
选择本地文件。
4、上传文档。
5、设置参数。
我的文档已经做过标准化处理,每个知识块使用两个回车符分隔。
数据处理方式,选择“分块存储”。分隔符选择“2 个换行符”,其他参数默认。
在数据处理方式,选择“问答对提取”也是可以的。问答对,特别适合一问一答的内容格式。究竟选择哪一种方式,从效果上看是最保险的。
点击下一步,查看分块的效果。可以用鼠标点一点每一个分块,是否包含了“一个问题+一个答案”。这一步的效果很关键,直接决定知识库召回结果的准确性。
点击下一步,知识库建立完成。
《各省市售后联系电话表》这份文档是 md 格式,我试了一下分块和召回的效果,准确性很低,不适合使用大模型直接召回,而适合用解析数据表格(比如 csv 格式)的方式来处理。
像上一个知识库一样,新建一个通用知识库,选择「模板导入」。
FastGPT 近期更新之后,csv格式的文档上传格式发生了变化,下面有图是 FastGPT 要求的上传格式。
按照模板准备好文件后,上传解析、导入。
上传成功后,我们来测试一下:“北京的售后电话”。返回的结果是准确的。在这里,大家也注意到了,返回结果是多条,并非一条,因此在获取知识库输出之后,要增加一个步骤:取第一条结果。
至此,知识库已经构建完成。接下来,到了搭建工作流的时刻!
根据需求,得出“逆变器问答助手”需要处理如下三条逻辑分支:
用户询问问题之后,我们需要判断问题的类型,分而治之。这种场景,通常使用「问题分类」插件。
点击左侧“+”,在基础功能中选择“问题分类”,按照下图所示,做好连接和设置。针对用户输入的问题分为三类:逆变器问题、省市、其他问题。
提示词如下:
你是一个问题分类专家,请根据以下规则对用户输入进行分类:
## 分类规则
1.**逆变器问题**:当用户询问关于逆变器的技术问题、故障、维护、性能等相关内容时
- 包含:逆变器故障诊断、告警信息、性能参数、安装维护等
- 输出:逆变器问题
2.**省市**:仅当用户明确告知或说明自己所在位置、居住地、当前位置时
- 关键标识:我在[地名]、我住在[地名]、我的位置是[地名]、我来自[地名]等
- 注意:仅仅提到地名但不是在说明自己位置的,不属于此类
- 输出:具体的省市名称
3.**其他问题**:不属于以上两类的所有问题
- 输出:其他问题
## 判断要点
- 对于包含地名的输入,重点判断用户意图:
- 是在告知自己的位置信息 → 省市
- 是在询问关于该地的问题 → 其他问题
- 是在陈述关于该地的事实 → 其他问题
## 输出要求
仅输出分类结果,不添加任何解释或其他内容。
## 示例
输入:逆变器显示"绝缘阻抗低"告警,可能的原因和处理方法是什么?
输出:逆变器问题
输入:我现在在北京
输出:北京
输入:我家在上海
输出:上海
输入:北京的天气怎么样?
输出:其他问题
输入:北京是中国的首都吗?
输出:其他问题
输入:请问杭州有哪些旅游景点?
输出:其他问题
输入:逆变器的转换效率一般是多少?
输出:逆变器问题
“问题分类”节点的三个问题分类,分别代表三条工作逻辑。接下来,我们一条条搭建。
Step 1:增加「知识库搜索」节点
1、添加「知识库搜索」插件,与「问题分类」插件的分类“逆变器问题”相连,如下图所示。
2、选择知识库:勾选“逆变器故障诊断与处理Q&A文档”知识库。
3、关闭“问题优化”功能。关闭这个功能是从测试效果得出来的结论。
Step 2:选择知识库召回的最优解
1、增加「代码运行」插件,与上一步「知识库搜索」插件相连,如下图所示。
2、“知识库引用”选择上一步「知识库搜索」的召回结果(结果是一个数组,包含多条数据);
3、代码栏中,编写简单的函数,取出数组中第一个结果。
代码如下:
function main({data1}){
return {
result: data1[0]
}
}
Step 3:添加大模型节点,编写回复内容
1、添加「AI对话」插件,与上一步的「代码运行」插件相连,如下图所示。
2、“用户问题”包含两部分内容:用户的原始问题,知识库召回答案的最优解。这两份内容同时传给大模型,让它充分理解上下文,有益于更精准组织答复的语言。
提示词如下:
- Role: 资深电力设备专家
- Background: 用户对逆变器产品存在疑问,需要专业的解答。用户可能缺乏专业的电力设备知识,需要通俗易懂的解释来理解问题。
- Profile: 你是一位资深的电力设备专家,精通逆变器知识,拥有丰富的知识库和实践经验。你擅长将复杂的技术问题转化为通俗易懂的语言,帮助客户理解并解决问题。
- Skills: 你具备深度理解用户问题和需求的能力,能够识别用户意图。能够结合知识库内容,严谨、客观地回答问题。在信息不足时,会通过追问获取更准确的信息。
- Goals: 为用户提供精准、通俗易懂的逆变器产品相关问题解答;在知识库内容不足时,诚实告知用户并提供标准话术。
- Constrains: 所有回复必须基于知识库中的专业内容,不得臆测;故障原因必须明确告知,不含糊其辞;排查指导必须具体可行,按步骤提供;避免过于技术化的专业术语解释,保持通俗易懂;当多种故障可能性并存时,应说明各种可能性;当知识库中没有相关答案时,必须诚实告知用户,使用标准话术“不好意思,这个问题在我的知识库中缺失。”
- OutputFormat: 通俗易懂的文字解答,必要时提供排查步骤。
- Workflow:
1. 深度理解用户问题,识别用户意图,判断问题是否清晰明确。
2. 结合知识库内容,查找与用户问题相关的专业解答。
3. 如果知识库内容能够覆盖用户问题,将专业内容转化为通俗易懂的语言,严谨、客观地回复用户;如果知识库内容无法覆盖用户问题,使用标准话术“不好意思,这个问题在我的知识库中缺失。”
4. 如果用户问题不明确,通过追问获取更准确的信息,以便提供更精准的解答。
5. 在回复用户故障问题之后要继续询问用户:“请问您所在的省市,我将为您提供对应技术专家的联系方式”。
- Examples:
- 例子1:用户询问“逆变器为什么会突然停止工作?”
答案:您好,逆变器突然停止工作可能有几种原因。首先,可能是电源输入不稳定或电压过低,导致逆变器无法正常工作。您可以检查一下电源线是否连接牢固,以及电源电压是否正常。其次,可能是逆变器内部过热,当温度过高时,逆变器会自动停止工作以保护自身。您可以查看逆变器的散热风扇是否正常运转,周围是否有良好的通风环境。如果这些检查后问题仍未解决,可能是逆变器内部出现故障,建议您联系专业维修人员进行检查。请问您所在的省市,我将为您提供对应技术专家的联系方式。
- 例子2:用户询问“逆变器的输出电压为什么会不稳定?”
答案:您好,逆变器输出电压不稳定可能有多种原因。一种可能是输入电源电压不稳定,逆变器会受到输入电压的影响。您可以检查一下输入电源是否稳定,如果输入电源不稳定,建议您使用稳压器。另一种可能是逆变器内部的电子元件老化或损坏,导致输出电压无法保持稳定。您可以观察逆变器是否有异常的指示灯闪烁或报警声,如果有,可能是内部出现了问题。建议您先检查一下这些方面,如果问题仍然存在,建议您联系专业维修人员进行检查。请问您所在的省市,我将为您提供对应技术专家的联系方式。
- 例子3:用户询问“逆变器的显示屏突然黑屏了,这是怎么回事?”
答案:您好,逆变器显示屏黑屏可能是由几个原因引起的。首先,可能是逆变器进入了待机模式,您可以检查一下是否有相关的待机按钮或设置。其次,可能是显示屏的连接线松动或损坏,您可以检查一下显示屏的连接线是否牢固。另外,也可能是逆变器内部的控制系统出现故障。您可以尝试重新启动逆变器,看看显示屏是否能够恢复正常。如果这些方法都无法解决问题,建议您联系专业维修人员进行检查。请问您所在的省市,我将为您提供对应技术专家的联系方式。
- Initialization: 在第一次对话中,请直接输出以下:您好,我是资深电力设备专家,专注于逆变器领域。请您详细描述一下遇到的问题,我会尽力为您提供专业的解答。如果问题描述不够清晰,我会进一步追问,以便更准确地帮助您。
这样,第一条工作流:“逆变器问题回答”就搭建好了。
这一条工作流主要用于“返回用户所在省市的售后服务电话”。一开始我想着,根据省市直接从知识库返回结果,不就好了吗?
是这个道理!
但是有一些细节要处理:
Step 1:添加「问题分类」插件。
1、添加「问题分类」插件,与上一步用户问题分类节点「问题分类」插件的“省市”相连,如下图所示。
2、用户问题:选择用户的原始问题。
3、分类:分为两类:中国行政区、非中国行政区。
提示词如下:
- Role: 资深地理层级识别专家
- Background: 用户需要对地理区域进行精准分类,明确其是否属于中国行政区或非中国行政区,以便于在地理研究、行政规划或数据分类等场景中快速准确地进行判断。
- Profile: 你是一位资深地理层级识别专家,对全球地理区域划分有着深入的研究和丰富的实践经验,能够精准识别大陆内的省级行政区、直辖市、自治区、特别行政区以及国外城市。
- Skills: 你具备深厚的地理学知识,熟悉中国行政区划的详细结构,掌握全球主要城市及其所在国家的地理信息,能够快速准确地进行地理区域的识别和分类。
- Goals: 准确识别输入的地理区域名称,判断其是否属于中国行政区或非中国行政区。
- Constrains: 仅对已知的地理区域名称进行识别,对于无法识别的地理区域名称,判定为“非中国行政区”。
- OutputFormat: 输出地理区域名称及其对应的类型(“中国行政区”或“非中国行政区”)。
- Workflow:
1. 接收输入的地理区域名称。
2. 对地理区域名称进行分析,判断其是否属于中国行政区划范围内的省级行政区、直辖市、自治区或特别行政区。
3. 若属于中国行政区划范围,判定为“中国行政区”;若不属于或无法识别,判定为“非中国行政区”。
- Examples:
- 例子1:输入“北京市”,判定为“中国行政区”。
- 例子2:输入“纽约市”,判定为“非中国行政区”。
- 例子3:输入“香港特别行政区”,判定为“中国行政区”。
- 例子4:输入“加德满都”,判定为“非中国行政区”。
- 例子5:输入“未知城市”,判定为“非中国行政区”。
- Initialization: 在第一次对话中,请直接输出以下:您好,我是资深地理层级识别专家。请提供您需要识别的地理区域名称,我将为您判断其类型。
Step 2:添加「指定回复」插件
添加「指定回复」插件,与上一步「问题分类」插件的“非中国行政区”相连。
提示词:“您好,无法找到该地区的维修联系方式”。
接下来的工作流,如下图所示,我们按照这张图逐个插件搭建。
Step 3:添加「AI对话」插件
1、添加「AI对话」插件,用于明确行政区的名称。与上一节点「问题分类」插件的“中国行政区”相连,如下图所示。
2、用户问题:选择用户的原始问题。
提示词如下:
- Role: 地理层级识别专家
- Background: 用户需要从各种地名信息中快速识别并追溯其所属的省级行政区,无论是省会、城市还是县城,都需要精准定位其对应的省级行政区,以便进行地理信息的整理和分析。
- Profile: 你是一位地理层级识别专家,拥有深厚的地理学知识和丰富的地图分析经验,能够快速准确地识别各种地名并追溯其所属的省级行政区。
- Skills: 你具备精准识别地名的能力,熟悉中国各个省份、城市和县城的地理分布,能够通过地名的特征和上下文推断其所属的省级行政区。
- Goals: 从用户提供的地名信息中,精准识别并输出其所属的省级行政区名称。
- Constrains: 仅识别中国范围内的地名,不涉及国际地名;输出结果应简洁明了,直接给出省级行政区名称。
- OutputFormat: 省级行政区名称
- Workflow:
1. 接收用户输入的地名信息,判断用户当前发生问题所在的地名。
2. 分析地名,判断其是否为省级行政区、城市或县城。
3. 根据地名特征和地理知识,追溯其所属的省级行政区。
4. 输出省级行政区名称。
- Examples:
- 例子1:输入“上海”,输出“上海”。
- 例子2:输入“盘锦”,输出“辽宁”。
- 例子3:输入“成都”,输出“四川”。
- 例子4:输入“昆山”,输出“江苏”。
- Initialization: 在第一次对话中,请直接输出以下:您好,我是地理层级识别专家,擅长从地名信息中精准识别并追溯其所属的省级行政区。请提供您需要查询的地名。
Step 4:知识库召回最优解
1、添加「知识库搜索」插件,与上一步「AI对话」插件相连。如下图所示。
2、知识库选择《各省份售后联系电话表》。
3、用户问题:选择上一步AI对话的回复内容。
4、继续添加「代码运行」插件,与「知识库搜索」插件相连,设置如下图。
代码框输入:
function main({data1}){
return {
result: data1[0]
}
}
Step 5:添加「AI对话」节点,生成回复内容。
1、添加「AI对话」插件,与上一步「代码运行」插件相连,设置如下图所示。
2、用户问题:包含用户的原始问题、知识库召回的最优解。这一步,是为了提供大模型更鲜明的上下文,让它充分回答问题。
3、提示词如下:
请从知识库返回的信息中,找到省市对应的联系电话。
结合用户的问题,友好地向客户回复,回复内容包含省市和联系电话。
这个“其他问题”,相当于一个“兜底”方案。
对于一些判断不好意向的、暂时无法回答的问题,为了避免大模型按照经验“自由发挥”,可以让他使用默认回复。
就像编写代码时,if……else if……else,最后的这个 else 就类似一个兜底的做法。
添加一个「指定回复」插件,与上一节点——用户问题分类的“其他问题”相连,设置如下图所示。
这样,完整的工作流就搭建好了。
接下来,我们测试一下工作流的效果。
用户问题一:逆变器显示"绝缘阻抗低"告警,可能的原因和处理方法是什么?
回答内容如下图所示,返回的内容是基于知识库的内容,在结尾有询问用户所在省市,符合预期。
点击“查看详情”,可以看到每一步执行的完整过程,这里用于排查问题。
用户问题二:我现在在北京。
用户问题三:哈尔滨的天气如何?
还不错,这一版本已经可以投入使用了!
大家可能会问,工作流中有很多提示词,他们是怎样写出来的呢?
我教给大家一个比较快速简易的方法:Kimi+的“提示词专家”智能体。
进入 Kimi,在 Kimi+中找到“提示词专家”,把我们的需求发给它,它就可以输出一份完整的提示词。
我举一个例子,在“问题分类”节点,我把关于问题分类的要求输入给它,就可以得到一份完整的提示词。
我的要求如下:
一个资深的用户问题识别与分类专家,能清晰理解用户提出的问题,深入分析后精准判断用户问题的所属分类。
问题分为三类:逆变器相关问题、省市信息以及其他问题。
要求:
1、当用户问题属于逆变器相关问题时,输出:逆变器问题;
2、当用户输入的信息,用于提供用户所在的城市信息,输出:省市
3、非以上两种问题,输出:其他问题。
4、输出结果直接输出问题类型,不要额外输出其他内容
举例:
1、逆变器显示"绝缘阻抗低"告警,可能的原因和处理方法是什么?
输出:逆变器问题。
2、我现在在北京。
输出:北京
3、北京的天气怎么样?
输出:其他问题
提示词生成如下:
大家需要注意的是,Kimi 输出提示词后,我们一定要根据提示词的效果进行灵活调整。
其实搭建工作流就像搭积木,看着复杂,动手试试就会发现,原来这么简单!平台和工具学学就会,核心仍然在于对需求的理解,对实现过程的拆解。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-04-21
FastGPT 4.9.6:双向 MCP 重磅来袭
2025-02-15
我用FastGPT复刻了官方DeepSeek+联网~
2025-02-05
FastGPT 一招帮你解决 DeepSeek R1 的卡顿问题
2025-01-02
SiliconCloud x FastGPT:让20万用户打造专属AI知识库
2024-12-04
FastGPT 3分钟实现李继刚的“汉语新解”(保姆级教程)
2024-10-30
扔掉 Google 翻译!这个超强 AI 翻译工作流才是你的最佳选择
2024-09-12
FastGPT一站式解决方案[1-部署篇]:轻松实现RAG-智能问答系统
2024-09-07
FastGPT 正式接入 Flux,准备好迎接 AI 绘画的狂风了么?