**❝
作者:余金隆。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 个准则:
- 通知 GPT 答复什么方面内容。
- 给知识库一个根本形容,从而让 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 通通不关怀,我只关怀写业务!