从 0 到 1,用 FastGPT 搭建专属私有化知识库与超智能 AI 助理

news2025/1/8 21:42:54

田园课堂私有化知识库搭建流程与总结

引言

在当今数字化时代,知识管理与智能交互对于教育领域的创新发展至关重要。FastGPT作为一款高效的AI流程构建可视化开源工具,为田园课堂实现私有化知识库的快速搭建提供了有力支持。本文将详细阐述使用FastGPT搭建田园课堂私有化知识库的流程,并分享相关经验总结。

同时,我们引入laf这一开源云开发平台。它提供了云函数、云数据库、云存储等一系列开箱即用的应用资源,使开发者能够专注于业务逻辑的开发,无需在服务器配置等繁琐事务上耗费精力,从而快速将创意转化为实际应用。

特别说明:本文重点聚焦于利用FastGPT的“高级编排”功能构建专属AI助理。对于FastGPT的部署、oneAPI工具部署、知识库的创建以及自然语言大模型的选择等内容,将不再详细阐述。如需了解这些方面的信息,可参考上一篇文章:私有化知识库本地部署打造专属ai助理(FastGpt本地部署全过程及相关模型部署训练) 。

搭建使用工具及模型

模型选用

  1. GLM-3-turbo:作为强大的LLM大模型,主要负责自然语言处理任务,能够理解和生成高质量的文本回复,为AI对话提供核心的语言处理能力。
  2. m3e-large:该模型作为数据索引向量模型,在知识库的检索过程中发挥关键作用,能够高效地对文本数据进行向量化处理,以便快速准确地找到与用户问题相关的知识内容 。

云函数插件扩展

通过laf构建云函数,为个人助理功能的拓展提供了便利。例如,通过爬虫技术接入bing搜索,极大地丰富了AI获取信息的渠道,提升了其回答问题的全面性和准确性。

高级编排工具

  1. 问题分类:能够对用户输入的问题进行智能分类,依据分类结果执行不同的后续操作。尽管在某些模糊场景下,分类效果可能不尽如人意,但在整体流程中,它为后续的针对性处理奠定了基础。
  2. 工具调用:工具的范畴广泛,既可以是系统内部的模块,如AI对话、知识库搜索、HTTP模块等,也可以是外部插件。通过灵活调用这些工具,LLM能够实现动态决策,告别固定流程的束缚,更好地适应多样化的用户需求。
  3. 知识库搜索:支持从一个或多个使用相同向量模型的知识库中进行向量搜索,确保能够精准定位到与问题匹配的知识内容,为准确回答用户问题提供有力支撑。
  4. 判断器:可对任意变量进行IF条件判断。当满足设定条件时,执行IF分支;若不满足,则执行ELSE分支。这种灵活的判断机制,使得整个流程能够根据不同的情况进行智能化的流程走向选择。
  5. 获取当前时间(内置插件):能够获取当前用户所在时区的准确时间,为涉及时间相关的问题提供精准解答。
  6. 文本内容提取:可以根据文本的具体内容,提取出关键信息(如搜索关键字),帮助后续的搜索和处理流程更加精准高效。
  7. 文本加工(内置插件):对输入文本进行预设的固定加工处理。入参仅支持字符串和数字格式,并以变量形式应用在文本编辑区域,以满足特定的文本处理需求。
  8. HTTP请求(接入网络):该模块类似于Postman和ApiFox等工具,能够向指定地址发送HTTP请求,实现与外部网络资源的交互,为获取更多信息提供途径。
  9. AI对话:负责与用户进行自然流畅的对话交互,利用LLM模型生成合理的回复内容。

搭建流程

创建知识库

在创建知识库时,建议优先使用docx、csv或txt格式的文件。由于ppt等包含图片的文件在内容索引方面表现欠佳,可能无法达到预期的检索效果。若存在ppt、pptx等文件,可借助wps将其转换为docx文件后再进行导入。

image-20240607150642357

创建应用

模型类型说明
  1. 简易模板:直接运用LLM自然语言处理模型,类似于市面上常见的通义千问、文心一言等,缺乏额外的处理逻辑,适用于简单的语言交互场景。
  2. 对话引导 + 变量:此模板通常用于在对话起始阶段,引导使用者输入或选择一些数据,并将这些数据存储下来,以便后续流程使用。例如在搭建角色扮演AI、小说生成AI时,可用于在开头收集性别、姓名等信息 。
  3. 知识库 + 对话引导:能够搭建较为基础的AI,对于需求相对简单的AI助理场景基本能够满足。不过,其缺点在于每次消息交互都需要进行知识库搜索,可能会在一定程度上影响效率。
  4. 问题分类 + 知识库:每次接收到信息后,首先对问题进行分类,然后依据分类结果有选择地执行后续的交互逻辑。本次搭建私有化知识库,便是以此模板为基础展开。

image-20240607152218982

创建完成的基础模板如下:

image-20240607153504866

编排问题分类

针对可能被询问的各类问题,进行分类编排,并设置当前模型的背景知识以及聊天记录。

具体设置说明
  1. 聊天记录设置:除身份询问相关的聊天记录设置为3(数值过大可能导致身份信息泄露,过小则关联度不足)外,其他均设置为25,这样的设置有助于提升消息之间的关联度。
  2. 分类流向:分类1和分类2接入知识库搜索,同时接入网络请求;分类3(时间相关)接入工具调用;分类4和分类6共同接入一个AI对话;分类5(询问身份)单独接入一个AI对话。
分类逻辑阐述
  1. 分类1和2接入知识库搜索:这两类问题获取的对话内容需要优先从知识库中寻找答案。如此分类便于后续对流程和知识库进行维护、扩展与修改。同时接入网络请求,以便在知识库无法提供满意答案时,从网络获取更多信息。
  2. 分类3(时间)单独分类:鉴于各类LLM大模型在时间回答上容易出现错误,接入工具调用能够确保时间信息的准确性。
  3. 分类4和6接入AI对话:该AI用于在前面的AI或其他分类已经做出正确回答的基础上,进行补充回答。这样不仅可以提升问题回答的关联信息丰富度,还能避免AI模型因过度请求而造成资源浪费。
  4. 分类5(询问身份)单独接入AI对话:通过这种方式,能够有效避免在询问身份等敏感信息时出现错误回答。

image-20240607153924191

分类1和2接入知识库搜索

  1. 知识库搜索优化:对知识库搜索进行了问题优化设置,将问题最低相关度设定为0.82。该数值代表询问问题与知识库中问题及内容的相关程度,0.82这一数值较为适中,能够在一定程度上避免回复错误答案。
  2. 判断器设置:通过判断器判断该问题在知识库中是否存在,若结果为null,则表示在知识库中完全不存在相关内容。

image-20240607155543995

知识库存在类似问题的处理流程

当知识库中存在与用户问题类似的问题时,执行以下流程:

image-20240607160042548

知识库不存在相关问题的处理流程
  1. 提取问题关键词进行网络搜索:由AI大模型负责提取问题关键词。为防止关键词提取失败的情况发生,加入判断器对提取结果进行判断。若提取成功,则直接使用提取的关键词进行搜索;若提取失败,则依据用户的原始问题进行bing搜索。

image-20240607160227629

  1. Laf部署书写bing爬虫:具体部署书写流程可参考官方文档:laf 概览 | Laf 开发文档 。以下是实现代码:
import cloud from '@lafjs/cloud'
const jsdom = require("jsdom");
const { JSDOM } = jsdom;

export default async function (keyword) {
  const url = `https://cn.bing.com/search?q=${keyword.query.keyword}`
  let data = ""
  const res = await fetch(url, {
    method: 'POST',
    headers: {
      'Cookie': "MUIDB=04572BEF4814644E033F3F9049A8650D" // 可通过浏览器开发者工具进行查看你的用户MUIDB
    }
  })
  const html = await res.text()
  const dom = new JSDOM(html).window.document;
  // 获取搜索结果
  const searchInfo = dom.querySelector("#b_results")
  // 获取答案元素
  const answer = searchInfo.querySelector(".b_ans")
  if (answer) {
    data += answer.textContent.replace(/[a-zA-Z]/g, "") + "\n"
  }
  // 获取相关答案元素
  const algo = searchInfo.querySelectorAll(".b_algo")
  algo.forEach(item => {
    const an = item.querySelector("p")
    if (!an) return
    // 去除网页2020年11月21日
    const b = an.textContent.replace(/网页.*年.*月.*日/g, "").replace("·", "").replace("网页", "")
    data += b + "\n"
  })
  return {code : 0, data: data}
}
  1. 接入http请求bing爬虫:通过以下设置,将bing爬虫功能接入到整体流程中。

image-20240607160657277

  1. 爬虫结果进行文本加工对话:对爬虫获取的结果进行文本加工处理,使其更符合对话输出的要求。

image-20240607161448730

  1. 完整流程图:上分支为IF逻辑,下分支为ELSE逻辑。

image-20240607161545254

分类3时间处理流程

对于分类3(时间相关问题),设置如下流程:

image-20240607161739223

分类4和6AI对话设置

针对分类4和6,接入AI对话模块,具体设置如下:

image-20240607161901206

分类5询问身份AI对话设置

对于分类5(询问身份相关问题),单独接入AI对话,并进行如下设置:

image-20240607161938582

通过以上详细的流程步骤,我们成功利用FastGPT搭建了田园课堂的私有化知识库,并借助laf平台实现了功能的扩展与优化,为田园课堂的智能化知识管理与交互提供了有力的技术支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2273434.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

centos服务器 /1ib64/libm.so.6: version “GLIBc 2.27’ not found 异常

centos服务器 /1ib64/libm.so.6: version “GLIBc 2.27’ not found 异常 问题 在服务器使用open3d时,报错缺失GLIBC_2.27,因为后续操作出问题会导致服务器挂,所以最好先备份一下。 解决 查询glibc版本 输入指令查询系统glibc版本&#x…

UE播放声音

蓝图中有两个播放声音的函数 Play Sound 2D 和 Play Sound at Location Play Sound 2D没有声音距离衰减,一般用于界面ui Play Sound at Location 有声音距离衰减,一般用于枪声,场景声等,比较常用

【情感】程序人生之情感关系中的平等意识(如何经营一段长期稳定的关系 沸羊羊舔狗自查表)

【情感】程序人生之情感关系中的平等意识(如何经营一段长期稳定的关系 & 沸羊羊舔狗自查表) 文章目录 1、情感关系中的平等意识2、如何经营一段长期稳定的关系(避免左倾 | 敬畏与担当)3、沸羊羊/舔狗自查表(避免右…

借助免费GIS工具箱轻松实现las点云格式到3dtiles格式的转换

在当今数字化浪潮下,地理信息系统(GIS)技术日新月异,广泛渗透到城市规划、地质勘探、文化遗产保护等诸多领域。而 GISBox 作为一款功能强大且易用的 GIS 工具箱,以轻量级、免费使用、操作便捷等诸多优势,为…

Chapter4.1 Coding an LLM architecture

文章目录 4 Implementing a GPT model from Scratch To Generate Text4.1 Coding an LLM architecture 4 Implementing a GPT model from Scratch To Generate Text 本章节包含 编写一个类似于GPT的大型语言模型(LLM),这个模型可以被训练来生…

Git revert回滚

回退中间的某次提交(此操作在预生产分支上比较常见),建议此方式使用命令进行操作(做好注释,方便后续上线可以找到这个操作) Git操作: 命令:revert -n 版本号 1:git re…

1. 使用springboot做一个音乐播放器软件项目【前期规划】

背景: 现在大部分音乐软件都是要冲会员才可以无限常听的。对于喜欢听音乐的小伙伴,资金又比较紧张,是那么的不友好。作为程序员的我,也是喜欢听着歌,敲着代码。 最近就想做一个音乐播放器的软件,在内网中使…

Flutter项目开发模版,开箱即用(Plus版本)

前言 当前案例 Flutter SDK版本:3.22.2 本文,是由这两篇文章 结合产出,所以非常建议大家,先看完这两篇: Flutter项目开发模版: 主要内容:MVVM设计模式及内存泄漏处理,涉及Model、…

配置数据的抗辐照加固方法

SRAM 型FPGA 的配置存储器可以看成是由0 和1 组成的二维阵列,帧的高度为矩阵阵列的高度,相同结构的配置帧组成配置列,如CLB 列、IOB 列、输入输出互联(Input Output Interconnect,IOI)列、全局时钟(Global Clock, GCLK)列、BRAM 列和BRAM 互联…

【学习路线】Python 算法(人工智能)详细知识点学习路径(附学习资源)

学习本路线内容之前,请先学习Python的基础知识 其他路线: Python基础 >> Python进阶 >> Python爬虫 >> Python数据分析(数据科学) >> Python 算法(人工智能) >> Pyth…

【Vue3项目实战系列一】—— 全局样式处理,导入view-ui-plus组件库,定制个性主题

😉 你好呀,我是爱编程的Sherry,很高兴在这里遇见你!我是一名拥有十多年开发经验的前端工程师。这一路走来,面对困难时也曾感到迷茫,凭借不懈的努力和坚持,重新找到了前进的方向。我的人生格言是…

SCAU期末笔记 - 数据库系统概念往年试卷解析

数据库搞得人一头雾水,题型太多太杂,已经准备摆烂了。就刷刷往年试卷,挂不挂听天由命。 2019年 Question 1 选择题 1. R ∩ S R∩S R∩S等于一下哪个选项? 画个文氏图秒了 所以选A. R ∩ S R − ( R − S ) R∩SR-(R-S) R∩…

oxml中创建CT_Document类

概述 本文基于python-docx源码,详细记录CT_Document类创建的过程,以此来加深对Python中元类、以及CT_Document元素类的认识。 元类简介 元类(MetaClass)是Python中的高级特性。元类是什么呢?Python是面向对象编程…

Fabric环境部署

官方下载文档:A Blockchain Platform for the Enterprise — Hyperledger Fabric Docs main documentation 1.1 创建工作目录 将Fabric代码按照GO语言的推荐方式进行存放,创建目录结构并切换到该目录下。具体命令如下: mkdir -p ~/go/src/g…

TCP与DNS的报文分析

场景拓扑: 核心路由配置: 上(DNS):10.1.1.1/24 下(WEB):20.1.1.1/24 左(client):192.168.0.1/24 右(PC3):192.168.1.1/24Clint2配置&a…

怎么管理电脑usb接口,分享四种USB端口管理方法

怎么管理电脑usb接口,分享四种USB端口管理方法 USB接口作为电脑重要的外部接口,方便了数据传输和设备连接。 然而,不加管理的USB接口也可能带来安全隐患,例如数据泄露、病毒传播等。 因此,有效管理电脑USB接口至关重…

教育咨询系统架构与功能分析

一、系统架构 服务端 服务端:Java(最低JDK1.8,支持JDK11以及JDK17)数据库:MySQL数据库(标配5.7版本,支持MySQL8)ORM框架:Mybatis(集成通用tk-mapper&#x…

nginx http反向代理

系统:Ubuntu_24.0.4 1、安装nginx sudo apt-get update sudo apt-get install nginx sudo systemctl start nginx 2、配置nginx.conf文件 /etc/nginx/nginx.conf,但可以在 /etc/nginx/sites-available/ 目录下创建一个新的配置文件,并在…

代码管理助手-Git

前言 Git 是一个版本控制系统,可以帮助你记录文件的每一次修改。这样,如果你在编程时不小心把代码写错了,可以很容易地回退到之前的版本。最重要的是,Git 是完全免费的,用户可以在自己的计算机上安装和使用 Git&#x…

注册中心如何选型?Eureka、Zookeeper、Nacos怎么选

这是小卷对分布式系统架构学习的第9篇文章,第8篇时只回答了注册中心的工作原理的内容,面试官的第二个问题还没回答,今天再来讲讲各个注册中心的原理,以及区别,最后如何进行选型 上一篇文章:如何设计一个注册…