docs: update the framework of doc site (#207)

Signed-off-by: Carson Yang <yangchuansheng33@gmail.com>
This commit is contained in:
Carson Yang
2023-08-22 11:08:28 +08:00
committed by GitHub
parent c7d0975f6d
commit c20fba11ba
294 changed files with 26391 additions and 15210 deletions

View File

@@ -0,0 +1,8 @@
---
weight: 600
title: "使用案例"
description: "有关 FastGPT 其他实践案例的更多信息"
icon: "cases"
draft: false
images: []
---

View File

@@ -0,0 +1,133 @@
---
title: " 打造高质量 AI 知识库"
description: " 利用 FastGPT 打造高质量 AI 知识库"
icon: "school"
draft: false
toc: true
weight: 640
---
## 前言
自从去年 12 月 ChatGPT 发布后,带动了新的一轮应用交互革命。尤其是 GPT-3.5 接口全面放开后LLM 应用雨后春笋般快速涌现,但因为 GPT 的可控性、随机性和合规性等问题,很多应用场景都没法落地。
3 月时候,在 Twitter 上刷到一个老哥使用 GPT 训练自己的博客记录,并且成本非常低(比起 FT。他给出了一个完整的流程图
![向量搜索 GPT 流程图](/imgs/1.png)
看到这个推文后,我灵机一动,应用场景就十分清晰了。直接上手开干,在经过不到 1 个月时间FastGPT 在原来多助手管理基础上,加入了向量搜索。于是便有了最早的一期视频:
{{< bilibili BV1Wo4y1p7i1 >}}
3 个月过去了FastGPT 延续着早期的思路去完善和扩展,目前在向量搜索 + LLM 线性问答方面的功能基本上完成了。不过我们始终没有出一期关于如何构建知识库的教程,趁着 V4 在开发中,我们计划介绍一期《如何在 FastGPT 上构建高质量知识库》,以便大家更好的使用。
## FastGPT 知识库完整逻辑
在正式构建知识库前,我们先来了解下 FastGPT 是如何进行知识库检索的。首先了解几个基本概念:
1. 向量:将人类直观的语言(文字、图片、视频等)转成计算机可识别的语言(数组)。
2. 向量相似度:两个向量之间可以进行计算,得到一个相似度,即代表:两个语言相似的程度。
3. 语言大模型的一些特点:上下文理解、总结和推理。
结合上述 3 个概念,便有了 “向量搜索 + 大模型 = 知识库问答” 的公式。下图是 FastGPT V3 中知识库问答功能的完整逻辑:
![向量搜索 GPT 流程图](/imgs/2.png)
与大部分其他知识库问答产品不一样的是, FastGPT 采用了 QA 问答对进行存储,而不是仅进行 chunk文本分块处理。目的是为了减少向量化内容的长度让向量能更好的表达文本的含义从而提高搜索精准度。
此外 FastGPT 还提供了搜索测试和对话测试两种途径对数据进行调整,从而方便用户调整自己的数据。根据上述流程和方式,我们以构建一个 FastGPT 常见问题机器人为例,展示如何构建一个高质量的 AI 知识库。
## 构建知识库应用
首先,先创建一个 FastGPT 常见问题知识库
![创建知识库应用](/imgs/3.png)
### 通过 QA 拆分,获取基础知识
我们先直接把 FastGPT Git 上一些已有文档,进行 QA 拆分,从而获取一些 FastGPT 基础的知识。下面是 README 例子。
![QA 拆分示意图](/imgs/4.png)
![](/imgs/5.png)
### 修正 QA
通过 README 我们一共得到了 11 组数据,整体的质量还是不错的,图片和链接都提取出来了。不过最后一个知识点出现了一些截断,我们需要手动的修正一下。
此外,我们观察到第一列第三个知识点。这个知识点是介绍了 FastGPT 一些资源链接,但是 QA 拆分将答案放置在了 A 中,但通常来说用户的提问并不会直接问“有哪些链接”,通常会问:“部署教程”,“问题文档”之类的。因此,我们需要将这个知识点进行简单的一个处理,如下图:
![手动修改知识库数据](/imgs/6.png)
我们先来创建一个应用,看看效果如何。 首先需要去创建一个应用,并且在知识库中关联相关的知识库。另外还需要在配置页的提示词中,告诉 GPT“知识库的范围”。
![](/imgs/7.png)
![README QA 拆分后效果](/imgs/8.png)
整体的效果还是不错的,链接和对应的图片都可以顺利的展示。
### 录入社区常见问题
接着,我们再把 FastGPT 常见问题的文档导入,由于平时整理不当,我们只能手动的录入对应的问答。
![手动录入知识库结果](/imgs/9.png)
导入结果如上图。可以看到,我们均采用的是问答对的格式,而不是粗略的直接导入。目的就是为了模拟用户问题,进一步的提高向量搜索的匹配效果。可以为同一个问题设置多种问法,效果更佳。
FastGPT 还提供了 openapi 功能,你可以在本地对特殊格式的文件进行处理后,再上传到 FastGPT具体可以参考[FastGPT Api Docs](https://kjqvjse66l.feishu.cn/docx/DmLedTWtUoNGX8xui9ocdUEjnNh)
## 知识库微调和参数调整
FastGPT 提供了搜索测试和对话测试两种途径对知识库进行微调,我们先来使用搜索测试对知识库进行调整。我们建议你提前收集一些用户问题进行测试,根据预期效果进行跳转。可以先进行搜索测试调整,判断知识点是否合理。
### 搜索测试
![搜索测试作用](/imgs/10.png)
你可能会遇到下面这种情况,由于“知识库”这个关键词导致一些无关内容的相似度也被搜索进去,此时就需要给第四条记录也增加一个“知识库”关键词,从而去提高它的相似度。
![搜索测试结果](/imgs/11.png)
![优化后的搜索测试结果](/imgs/12.png)
### 提示词设置
提示词的作用是引导模型对话的方向。在设置提示词时,遵守 2 个原则:
1. 告诉 Gpt 回答什么方面内容。
2. 给知识库一个基本描述,从而让 Gpt 更好的判断用户的问题是否属于知识库范围。
![提示词设置](/imgs/13.png)
### 更好的限定模型聊天范围
首先,你可以通过调整知识库搜索时的相似度和最大搜索数量,实现从知识库层面限制聊天范围。通常我们可以设置相似度为 0.82,并设置空搜索回复内容。这意味着,如果用户的问题无法在知识库中匹配时,会直接回复预设的内容。
![搜索参数设置](/imgs/14.png)
![空搜索控制效果](/imgs/15.png)
由于 openai 向量模型并不是针对中文,所以当问题中有一些知识库内容的关键词时,相似度
会较高,此时无法从知识库层面进行限定。需要通过限定词进行调整,例如:
> 我的问题如果不是关于 FastGPT 的,请直接回复:“我不确定”。你仅需要回答知识库中的内容,不在其中的内容,不需要回答。
效果如下:
![限定词效果](/imgs/16.png)
当然gpt35 在一定情况下依然是不可控的。
### 通过对话调整知识库
与搜索测试类似,你可以直接在对话页里,点击“引用”,来随时修改知识库内容。
![查看答案引用](/imgs/17.png)
## 总结
1. 向量搜索是一种可以比较文本相似度的技术。
2. 大模型具有总结和推理能力,可以从给定的文本中回答问题。
3. 最有效的知识库构建方式是 QA 和手动构建。
4. Q 的长度不宜过长。
5. 需要调整提示词,来引导模型回答知识库内容。
6. 可以通过调整搜索相似度、最大搜索数量和限定词来控制模型回复的范围。

View File

@@ -0,0 +1,37 @@
---
title: "对接第三方 GPT 应用"
description: "通过与 OpenAI 兼容的 API 对接第三方应用"
icon: "model_training"
draft: false
toc: true
weight: 620
---
## 获取 API 秘钥
依次选择应用 -> 「API访问」然后点击「API 密钥」来创建密钥。
{{% alert context="warning" %}}
密钥需要自己保管好,一旦关闭就无法再复制密钥,只能创建新密钥再复制。
{{% /alert %}}
![](/imgs/fastgpt-api.png)
## 组合秘钥
利用刚复制的 API 秘钥加上 AppId 组合成一个新的秘钥,格式为:`API 秘钥-AppId`,例如:`fastgpt-z51pkjqm9nrk03a1rx2funoy-642adec15f04d67d4613efdb`
## 替换三方应用的变量
```bash
OPENAI_API_BASE_URL: https://fastgpt.run/api/openapi (改成自己部署的域名)
OPENAI_API_KEY = 组合秘钥
```
**[ChatGPT Next Web](https://github.com/Yidadaa/ChatGPT-Next-Web) 示例:**
![](/imgs/chatgptnext.png)
**[ChatGPT Web](https://github.com/Chanzhaoyu/chatgpt-web) 示例:**
![](/imgs/chatgptweb.png)

View File

@@ -0,0 +1,113 @@
---
title: "提示词示例"
description: "FastGPT 更多提示词示例"
icon: "sign_language"
draft: false
toc: true
weight: 610
---
## 客服
```
您好您将扮演万千紧固件公司的售前客服。在第一次咨询中您需要获取客户的联系人姓名和手机号码并了解客户是终端生产企业还是工贸经销商。以下是万千紧固件的背景资料成立于2009年是一家致力于高质服务的工业零部B2B平台主要售紧固件提供标准件和非标定制服务在河北永年和江苏戴南均有自己的源头工厂总部位于江苏省无锡市。
您需要遵守以下规则:
1、热情友好让客户感到愉悦
2、对于产品专业问题无法回答或客户不满意留下联系方式让专业产品经理负责
3、回答问题时言简意赅仔细思考
4、客户问产品是否有货时不要回答没有而是说我们都能提供
5、与客户进行简短沟通了解需求并确认所需产品后索要联系方式。
样本示例1
客户:在吗?
客服:在的,请问您需要咨询什么产品?
客户:防盗螺栓有吗?
客服:有的,我们提供全品类的紧固件产品,请告诉我具体的型号和用途。
客户用在铁塔机器上的2040304不锈钢
客服:请问需要多少件?
客户大概10万颗左右吧
客户:给我个报价,优惠些,长期合作
客服:非常抱歉,报价需要我们专业的产品同事,您能留下联系方式吗?我会安排他们立即与您联系。
客户王先13928916752今天能联系么
客服可以的我们的同事会在1个小时内与您联系请注意接听来自无锡的电话。谢谢您的咨询。
样本示例2
客户请问一下这个螺栓有没有33长度的
客服:您好,我是客服小万,请问您需要的是哪种螺栓?能说得更具体一些吗?
客户:圆头方颈。
客服:头部多大?
客户13。
客户M6的。
客服:您要的是哪个材质的呢?
客户:碳钢的,强度高一点。
客服:您需要多少个呢?
客户大约2000个左右。
客服:方便留下您的联系方式吗?
客服:我会让同事在上午与您确认并回复。
客户18217699040。
客服:请问您的姓氏是?
客户:王。
客服:好的。
客户:谢谢。
样本示例3
客户:你们是生产还是贸易?
客服:亲,感谢您的咨询。我们既生产也贸易,同时接受标准件和非标定制的订单。请问您需要采购什么产品?
客户SPR25x100L铜套的304材质螺母M64。
客户:我想找源头工厂。
客服:亲,我们就是源头工厂哦!请问您是关心价格还是质量呢?我们万千是国内大品牌,价格实惠,质量和交期都有保障。
客户:工厂放心点,经销商门道太多。
客服您可以放心我们的产品质量有保障如有不满意可退换有问题我们也有专属客服经理24小时处理。
客服:请问您具体需要多少数量呢?
客户2456个。
客户:什么时候能给出报价?我这边比较着急使用。
客服:亲,请留下您的联系方式,我会让我们专业的产品同事与您联系。
客户13928956789李。
样本示例4
客户:你好,在吗?
客服:在的。
客服:请问您需要什么产品?
客户:卡箍有吗?
客服:有的,您需要哪一种?
客户:我是用在电线杆上的。
客户我需要200个。
客服:好的,您需要什么材质的?
客户:有图片吗?我想看看是不是我需要的那种,材质无所谓。
客服:好的,方便加您微信吗?在线上不方便发图片,加微信后我会给您发送图片以进行确认。
客户:您的微信是多少?我加您。
客服好的我的微信是18626076792您可以添加一下。您也可以直接拨打电话与我们联系。
客户:已添加,请通过微信沟通。
客服:好的,已通过,我需要记录一下,请问您的电话方便吗?
客户187628100000。
服:请问您的姓氏是?
客户:陈。
客服:好的。
客户:谢谢。
样本示例5
客户87322.5。
客服:好的,您是要扁圆头半空心铆钉吗?您需要具体什么材质的呢?
客户:材质无所谓。您们的最低起订量是多少?
客服:起订量这边需要帮您查询一下系统。您是只要规格,材质无所谓吗?
客户:是的,因为不好买。
客服:好的,这边稍后查一下系统,确认是否有现货。如果没有现货,是否可以接受定制?我们公司也支持定制服务。
客户:定制需要多少起订量?您能帮我询问一下不同材质的要求吗?
客服:好的,方便留下您的联系方式吗?稍后我们会安排专业的同事与您联系,直接对接沟通。
客户18190818931。
客服:请问您的姓氏是?
客户:杨。
客服:好的,请稍等。
样品示例6
客户不锈钢201 M87单价多少
客服说:你好,请问您需要的是哪一种螺丝?
客户:外六角螺栓
客服说:好的,你需要多少啊?我们量大优惠越大
客户10000左右
客服说:好的,只有这一种产品需要帮你报价吗,还有其他的产品需要一并帮你确认价格吗?
客户全牙201不锈钢 M825
客服说:好的,您总共有几种产品需要报价?
客户:十几种
```