mirror of
https://github.com/labring/FastGPT.git
synced 2025-10-19 18:14:38 +00:00
docs: update the framework of doc site (#207)
Signed-off-by: Carson Yang <yangchuansheng33@gmail.com>
This commit is contained in:
8
docSite/content/docs/use-cases/_index.md
Normal file
8
docSite/content/docs/use-cases/_index.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
weight: 600
|
||||
title: "使用案例"
|
||||
description: "有关 FastGPT 其他实践案例的更多信息"
|
||||
icon: "cases"
|
||||
draft: false
|
||||
images: []
|
||||
---
|
133
docSite/content/docs/use-cases/kb.md
Normal file
133
docSite/content/docs/use-cases/kb.md
Normal 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)。他给出了一个完整的流程图:
|
||||
|
||||

|
||||
|
||||
看到这个推文后,我灵机一动,应用场景就十分清晰了。直接上手开干,在经过不到 1 个月时间,FastGPT 在原来多助手管理基础上,加入了向量搜索。于是便有了最早的一期视频:
|
||||
|
||||
{{< bilibili BV1Wo4y1p7i1 >}}
|
||||
|
||||
3 个月过去了,FastGPT 延续着早期的思路去完善和扩展,目前在向量搜索 + LLM 线性问答方面的功能基本上完成了。不过我们始终没有出一期关于如何构建知识库的教程,趁着 V4 在开发中,我们计划介绍一期《如何在 FastGPT 上构建高质量知识库》,以便大家更好的使用。
|
||||
|
||||
## FastGPT 知识库完整逻辑
|
||||
|
||||
在正式构建知识库前,我们先来了解下 FastGPT 是如何进行知识库检索的。首先了解几个基本概念:
|
||||
|
||||
1. 向量:将人类直观的语言(文字、图片、视频等)转成计算机可识别的语言(数组)。
|
||||
2. 向量相似度:两个向量之间可以进行计算,得到一个相似度,即代表:两个语言相似的程度。
|
||||
3. 语言大模型的一些特点:上下文理解、总结和推理。
|
||||
|
||||
结合上述 3 个概念,便有了 “向量搜索 + 大模型 = 知识库问答” 的公式。下图是 FastGPT V3 中知识库问答功能的完整逻辑:
|
||||
|
||||

|
||||
|
||||
与大部分其他知识库问答产品不一样的是, FastGPT 采用了 QA 问答对进行存储,而不是仅进行 chunk(文本分块)处理。目的是为了减少向量化内容的长度,让向量能更好的表达文本的含义,从而提高搜索精准度。
|
||||
此外 FastGPT 还提供了搜索测试和对话测试两种途径对数据进行调整,从而方便用户调整自己的数据。根据上述流程和方式,我们以构建一个 FastGPT 常见问题机器人为例,展示如何构建一个高质量的 AI 知识库。
|
||||
|
||||
## 构建知识库应用
|
||||
|
||||
首先,先创建一个 FastGPT 常见问题知识库
|
||||
|
||||

|
||||
|
||||
### 通过 QA 拆分,获取基础知识
|
||||
|
||||
我们先直接把 FastGPT Git 上一些已有文档,进行 QA 拆分,从而获取一些 FastGPT 基础的知识。下面是 README 例子。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
### 修正 QA
|
||||
|
||||
通过 README 我们一共得到了 11 组数据,整体的质量还是不错的,图片和链接都提取出来了。不过最后一个知识点出现了一些截断,我们需要手动的修正一下。
|
||||
|
||||
此外,我们观察到第一列第三个知识点。这个知识点是介绍了 FastGPT 一些资源链接,但是 QA 拆分将答案放置在了 A 中,但通常来说用户的提问并不会直接问“有哪些链接”,通常会问:“部署教程”,“问题文档”之类的。因此,我们需要将这个知识点进行简单的一个处理,如下图:
|
||||
|
||||

|
||||
|
||||
我们先来创建一个应用,看看效果如何。 首先需要去创建一个应用,并且在知识库中关联相关的知识库。另外还需要在配置页的提示词中,告诉 GPT:“知识库的范围”。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
整体的效果还是不错的,链接和对应的图片都可以顺利的展示。
|
||||
|
||||
### 录入社区常见问题
|
||||
|
||||
接着,我们再把 FastGPT 常见问题的文档导入,由于平时整理不当,我们只能手动的录入对应的问答。
|
||||
|
||||

|
||||
|
||||
导入结果如上图。可以看到,我们均采用的是问答对的格式,而不是粗略的直接导入。目的就是为了模拟用户问题,进一步的提高向量搜索的匹配效果。可以为同一个问题设置多种问法,效果更佳。
|
||||
FastGPT 还提供了 openapi 功能,你可以在本地对特殊格式的文件进行处理后,再上传到 FastGPT,具体可以参考:[FastGPT Api Docs](https://kjqvjse66l.feishu.cn/docx/DmLedTWtUoNGX8xui9ocdUEjnNh)
|
||||
|
||||
## 知识库微调和参数调整
|
||||
|
||||
FastGPT 提供了搜索测试和对话测试两种途径对知识库进行微调,我们先来使用搜索测试对知识库进行调整。我们建议你提前收集一些用户问题进行测试,根据预期效果进行跳转。可以先进行搜索测试调整,判断知识点是否合理。
|
||||
|
||||
### 搜索测试
|
||||
|
||||

|
||||
|
||||
你可能会遇到下面这种情况,由于“知识库”这个关键词导致一些无关内容的相似度也被搜索进去,此时就需要给第四条记录也增加一个“知识库”关键词,从而去提高它的相似度。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
### 提示词设置
|
||||
|
||||
提示词的作用是引导模型对话的方向。在设置提示词时,遵守 2 个原则:
|
||||
|
||||
1. 告诉 Gpt 回答什么方面内容。
|
||||
2. 给知识库一个基本描述,从而让 Gpt 更好的判断用户的问题是否属于知识库范围。
|
||||
|
||||

|
||||
|
||||
### 更好的限定模型聊天范围
|
||||
|
||||
首先,你可以通过调整知识库搜索时的相似度和最大搜索数量,实现从知识库层面限制聊天范围。通常我们可以设置相似度为 0.82,并设置空搜索回复内容。这意味着,如果用户的问题无法在知识库中匹配时,会直接回复预设的内容。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
由于 openai 向量模型并不是针对中文,所以当问题中有一些知识库内容的关键词时,相似度
|
||||
会较高,此时无法从知识库层面进行限定。需要通过限定词进行调整,例如:
|
||||
|
||||
> 我的问题如果不是关于 FastGPT 的,请直接回复:“我不确定”。你仅需要回答知识库中的内容,不在其中的内容,不需要回答。
|
||||
|
||||
效果如下:
|
||||
|
||||

|
||||
|
||||
当然,gpt35 在一定情况下依然是不可控的。
|
||||
|
||||
### 通过对话调整知识库
|
||||
|
||||
与搜索测试类似,你可以直接在对话页里,点击“引用”,来随时修改知识库内容。
|
||||
|
||||

|
||||
|
||||
## 总结
|
||||
|
||||
1. 向量搜索是一种可以比较文本相似度的技术。
|
||||
2. 大模型具有总结和推理能力,可以从给定的文本中回答问题。
|
||||
3. 最有效的知识库构建方式是 QA 和手动构建。
|
||||
4. Q 的长度不宜过长。
|
||||
5. 需要调整提示词,来引导模型回答知识库内容。
|
||||
6. 可以通过调整搜索相似度、最大搜索数量和限定词来控制模型回复的范围。
|
37
docSite/content/docs/use-cases/openai.md
Normal file
37
docSite/content/docs/use-cases/openai.md
Normal 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 %}}
|
||||
|
||||

|
||||
|
||||
## 组合秘钥
|
||||
|
||||
利用刚复制的 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) 示例:**
|
||||
|
||||

|
||||
|
||||
**[ChatGPT Web](https://github.com/Chanzhaoyu/chatgpt-web) 示例:**
|
||||
|
||||

|
113
docSite/content/docs/use-cases/prompt.md
Normal file
113
docSite/content/docs/use-cases/prompt.md
Normal 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
|
||||
客服说:好的,您总共有几种产品需要报价?
|
||||
客户:十几种
|
||||
```
|
Reference in New Issue
Block a user