乐趣区

关于云计算:使用-FastGPT-构建高质量-AI-知识库

**❝
作者:余金隆。FastGPT 我的项目作者,Sealos 我的项目前端负责人,前 Shopee 前端开发工程师 **

FastGPT 我的项目地址:https://github.com/labring/FastGPT

引言

自从去年 12 月 ChatGPT 公布以来,带动了一轮新的交互利用反动。尤其在 GPT-3.5 接口全面凋谢后,大量的 LLM 利用如雨后春笋般涌现。然而,因为 GPT 的可控性、随机性和合规性等问题,很多利用场景都没法落地。

起源

3 月份,我在 Twitter 上刷到一个老哥应用 GPT 训练他本人的博客记录,老本极低(相比于 Fine-tuning)。他提供了一个残缺的流程图:

向量搜寻 GPT 流程图
看到这个推文后,我眉头一皱; 计上心来,利用场景就非常清晰了。间接上手开干,不到一个月的工夫,我在原有的助手治理根底上,为 FastGPT 退出了向量搜寻性能。于是就有了最早的一期视频:https://www.bilibili.com/video/BV1Wo4y1p7i1/

初步倒退

三个月过来了,FastGPT 仍然连续着晚期的思路去欠缺和扩大。目前,其在向量搜寻 + LLM 线性问答方面的性能根本已实现。然而,咱们始终没有公布对于如何构建知识库的教程。因而,咱们打算在 V4 版本开发过程中,写一篇文章来介绍《如何在 FastGPT 上构建高质量知识库》。

FastGPT 的知识库逻辑

在正式开始构建知识库之前,咱们须要理解 FastGPT 的知识库检索机制。首先,咱们须要理解几个基本概念:

根底概念

1. 向量:将人类的语言(文字、图片、视频等)转换为计算机可辨认的语言(数组)。

2. 向量类似度:计算两个向量之间的类似度,示意两种语言的类似水平。

3. 语言大模型的个性:上下文了解、总结和推理。

这三个概念联合起来,就形成了 “ 向量搜寻 + 大模型 = 知识库问答 ” 的公式。以下是 FastGPT V3 中知识库问答性能的残缺逻辑:

向量搜寻 GPT 流程图
FastGPT 与大多数其余知识库问答产品不同的中央在于,它采纳了 QA 问答对进行存储,而不仅是 chunk(文本分块)解决。这样做是为了缩小向量化内容的长度,使向量能更好地表白文本的含意,从而进步搜寻的精度。

此外 FastGPT 还提供了搜寻测试和对话测试两种路径对数据进行调整,从而不便用户调整本人的数据。

根据上述流程和形式,咱们以构建一个 FastGPT 常见问题机器人为例,展现如何构建一个高质量的 AI 知识库。

**❝
FastGPT 仓库地址:https://github.com/labring/FastGPT
**

创立知识库利用

首先,咱们创立一个 FastGPT 常见问题知识库。

基础知识获取

咱们先间接把 FastGPT GitHub 仓库上一些已有文档,进行 QA 拆分,从而获取一些 FastGPT 的基础知识。上面以 README 为例。

QA 拆分示意图

示例

QA 修改

咱们从 README 中获取了 11 组数据,整体品质还是不错的,图片和链接都提取进去了。然而,最初一个知识点呈现了一些截断,咱们须要手动修改一下。

此外,咱们留神到第一列第三个知识点,该知识点介绍了 FastGPT 的一些资源链接,但 QA 拆分将答案放在了 A 中。然而,用户的问题通常不会间接问“有哪些链接”,他们更可能会问:“部署教程”,“问题文档”等。因而,咱们须要对此知识点进行简略解决,如下图所示:

手动批改知识库数据

接下来,咱们能够创立一个利用,看看成果如何。首先创立一个利用,并在知识库中关联相干的知识库。另外,还须要在配置页面的提醒词中,通知 GPT:“知识库的范畴”。

利用创立

README QA 拆分后成果

导入社区常见问题

接着,咱们把 FastGPT 常见问题的文档导入。因为之前的整顿不到位,咱们只能手动录入对应的问答。

手动录入知识库后果

导入后果如上图。能够看到,咱们均采纳的是问答对的格局,而不是粗略的间接导入。目标就是为了模仿用户问题,进一步的进步向量搜寻的匹配成果。能够为同一个问题设置多种问法,成果更佳。

FastGPT 还提供了 OpenAPI 性能,你能够在本地对非凡格局的文件进行解决后,再上传到 FastGPT,具体能够参考:sourl.cn/mNnS9v

知识库微调和参数调整

FastGPT 提供了搜寻测试和对话测试两个性能,咱们能够通过这两个性能来进行知识库微调和参数调整。

咱们倡议你提前收集一些用户问题进行测试,依据预期成果进行跳转。能够先进行搜寻测试调整,判断知识点是否正当。

搜寻测试

通过搜寻测试,咱们能够输出问题,查看返回的知识库数据,来测试知识库的查问成果。上面是搜寻测试的界面:

搜寻测试界面

咱们能够看到,零碎返回了与之相干的问答数据。

你可能会遇到上面这种状况,因为“知识库”这个关键词导致一些无关内容的类似度也被搜寻进去,此时就须要给第四条记录也减少一个“知识库”关键词,从而去进步它的类似度。

提醒词设置

提醒词的作用是疏导模型对话的方向。在设置提醒词时,恪守 2 个准则:

  1. 通知 GPT 答复什么方面内容。
  2. 给知识库一个根本形容,从而让 GPT 更好的判断用户的问题是否属于知识库范畴。

提醒词设置

更好的限定模型聊天范畴

首先,你能够通过调整知识库搜寻时的类似度和最大搜寻数量,实现从知识库层面限度聊天范畴。通常咱们能够设置类似度为 0.82,并设置空搜索回复内容。这意味着,如果用户的问题无奈在知识库中匹配时,会间接回复预设的内容。

搜寻参数设置

空搜索管制成果

因为 OpenAI 向量模型并不是针对中文,所以当问题中有一些知识库内容的关键词时,类似度 会较高,此时无奈从知识库层面进行限定。须要通过限定词进行调整,例如:

**❝
我的问题如果不是对于 FastGPT 的,请间接回复:“我不确定”。你仅须要答复知识库中的内容,不在其中的内容,不须要答复。**

成果如下:

限定词成果
当然,GPT-3.5 在肯定状况下仍然是不可控的。

通过对话调整知识库

与搜寻测试相似,你能够间接在对话页里,点击“援用”,来随时批改知识库内容。

查看答案援用

结语

  • 向量搜寻是一种能够比拟文本类似度的技术。
  • 大模型具备总结和推理能力,能够从给定的文本中答复问题。
  • 最无效的知识库构建形式是 QA 和手动构建。
  • Q 的长度不宜过长。
  • 须要调整提醒词,来疏导模型答复知识库内容。
  • 能够通过调整搜寻类似度、最大搜寻数量和限定词来管制模型回复的范畴。

** 对于 Sealos
Sealos 是一款以 Kubernetes 为内核的云操作系统发行版。它以云原生的形式,摈弃了传统的云计算架构,转向以 Kubernetes 为云内核的新架构,使企业可能像应用个人电脑一样简略地应用云。**

🌟GitHub:https://github.com/labring/sealos

🏠官网:https://sealos.io

💻开发者论坛:https://forum.laf.run
sealos 以 kubernetes 为内核的云操作系统发行版,让云原生简略遍及

laf 写代码像写博客一样简略,什么 docker kubernetes 通通不关怀,我只关怀写业务!

退出移动版