利用DocsGPT快速搭建一个问答式的文档检索服务

news2024/11/28 2:32:55

docsGPT 示例

基于企业内部独有的知识库,进行智能的客服问答,毫无疑问是 ChatGPT 出圈以后,所有公司想要融入 ChatGPT 技术时的第一反应。可惜 ChatGPT 实际上是一个基于大语言模型实现的,包括很多其他功能的,完整的聊天产品。并没有直接的接口让用户导入完整的知识库。

此外,openai 提供的 GPT3 接口服务,也必须一直联网使用。对部分传统的 toB 服务产品依然不太友好。有趣的是,业界似乎也都不推荐使用 GPT3 的 fine-tuning 方式,甚至据说 fine-tuning 方式加入新训练数据后反而会导致通用文本的生成能力下降。

DocsGPT 开源项目,针对这种情况,采用 GPT3 接口,配合 faiss 向量搜索引擎和 langchain 模型库,快速实现了一个针对技术文档的智能客服。可以作为这类产品的基础原型,供大家参照。项目地址是https://github.com/arc53/DocsGPT

首先,我们把这个项目clone到本地,DocsGPT项目分为后台服务和前台页面两部分,当我们进入项目文件夹后,/application 文件夹中是后台服务的相关代码,使用python语言编写,frontend文件夹中则是前端页面的相关代码,编译前端文件需要预先安装nodejs。

我们首先启动后台服务:进入 /application 文件夹,然后使用命令 pip install -r requirements.txt 安装好依赖。复制 .env_sample 文件为 .env 文件,编辑文件,把文件中的 yout_api_key替换成自己的 OpenAI API 的 API key。

然后执行 python app.py 命令启动后台服务,服务默认使用 5001 端口。

接下来我们编译前端页面,回到项目根目录,进入frontend 文件夹下,使用 npm install 安装依赖,将 .env.development 文件中 VITE_API_HOST 的地址从 https://docsapi.arc53.com 改为刚才启动的后台服务地址 http://localhost:5001:

最后使用 npm run dev 命令启动前端页面服务。

这个时候,页面和后台服务都启动完成了,我们去浏览器中看看效果吧!打开浏览器,输入前台页面启动时终端窗口提示的地址 http://127.0.0.1:5173/,我们就打开了DocsGPT的主页面。

刚进入界面,会提示我们输入 OpenAI API Key,

输入以后会提示我们选择使用哪个已经训练好的文档,这里我们选择python3.11.1作为文档数据源,然后点击 Save 按钮保存。

这个时候我们就能完整的看到 DocsGPT 的交互页面了,我们会发现,这个页面和 ChatGPT 的对话页面长得非常相似,功能区域划分也是一致的。左侧导航栏分为对话列表和菜单两部分,右侧为对话主界面,主界面的下部正中间为聊天对话输入框。

由于我们还没训练自己的文档,所以现在也查不出什么内容,接下来我们先自己训练一份文档看看效果。DocsGPT支持的用于训练的文档格式还是很多的,基本囊括了市面上文档所涉及的各种格式:.rst, .md, .mdx, .pdf, .docx, .csv, .epub, .html,我们用python的一个非常好用的库 requests 的文档举个例子,看看训练以后在DocsGPT中能有什么表现。

首先将 requests 这个库下载到本地,在 DocsGPT 项目的 scripts/ 目录下创建名为inputs 的文件夹,并requests的文档文件拷贝到这个目录下,由于DocsGPT在训练时是递归查找文档文件的,所以我们不必将所有文件平铺。

接下来我们回到scripts/目录并创建一个.env文件,如同之前一样,把 OpenAI API Key 更新到文件中对应的位置,OPENAI_API_KEY=API Key。接着我们运行pip install requirements.txt 安装训练所需依赖,安装完成后运行 python ingest.py ingest 命令开始训练。当然,因为训练使用了OpenAPI的 gpt-3.5-turbo 模型生成矢量数据,所以需要花费一定的金额,具体的金额在命令执行完token切分的时候,会在终端提示,我们选择同意后才会真正扣费并进行训练和生成矢量数据库数据文件。

我们选择 Y 以后,稍等片刻就会出现训练进度条。

等待训练完成以后我们发现scripts/目录下出现outputs/inputs/目录,进入目录后我们就能看到新生成的 .faiss 为后缀的矢量数据文件以及 .pkl 后缀的索引文件。我们将这两个文件复制到项目根目录下的 application/ 文件夹下,替换原有同名文件,然后在 application/ 文件夹下重新启动后台服务。这个时候我们就可以去页面上看看效果了!

这样,我们就利用DocsGPT搭建完成了一个问答式的文档检索服务。

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

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

相关文章

电力电子技术的论文

电力电子技术的论文范文一:Matlab电力电子技术应用 【文章摘要】信息技术的快速发展推动许多学科进一步完善,以电力电子技术为例,其本身具有较强的理论性、实践性等特征,涉及的波形图、电路图也较多,相关设计人员需掌握…

Hitcon 2016 SleepyHolder-fastbin_dup_consolidate.c

参考/题目下载: https://github.com/mehQQ/public_writeup/tree/master/hitcon2016/SleepyHolder https://blog.csdn.net/seaaseesa/article/details/105856878 1,三联 保护:基本都开了 功能: 0、唤醒功能; 1、创建-secret&#…

华为OD机试真题 Java 实现【猴子爬山】【2023 B卷 100分】,附详细解题思路

一、题目描述 一天一只顽猴想去从山脚爬到山顶,途中经过一个有个N个台阶的阶梯,但是这猴子有一个习惯: 每一次只能跳1步或跳3步,试问猴子通过这个阶梯有多少种不同的跳跃方式? 二、输入描述 输入只有一个整数N&…

Custom Frames插件:内置Web应用 | Obsidian实践

今天跟大家分享一个Obsidian插件:Custom Frames。 这个插件的美妙之处在于,可以将一个Obsidian外部的Web应用,内置到Obsidian内部来操作和使用。 这么说可能是有点儿抽象,就比方说吧,微信读书有个网页版(后…

嵌入式开发——文件系统部署rz、sz命令

1、rz、sz命令源码下载 下载网址:https://ohse.de/uwe/software/lrzsz.html 2、源码编译 tar -zxvf lrzsz-0.12.20.tar.gz cd lrzsz-0.12.20 ./configure make CCaarch64-mix410-linux-gcc #指定芯片平台的交叉编译链3、源码编译遇到的问题 3.1、报错打印 (1)报错…

绝地求生可以这样制作 (Python 版)

一、概述 1.1 效果 总的来说,这种方式是通过图像识别来完成的,不侵入游戏,不读取内存,安全不被检测。 1.2 前置知识 游戏中有各种不同的枪械,不同的枪械后坐力不一样,射速也不同。相同的枪械,…

【Java】Java(四十八):日志

文章目录 1. 概述2. 日志体系结构和Log4J3. 入门案例4. 配置文件详解 1. 概述 程序中的日志可以用来记录程序在运行的时候点点滴滴。并可以进行永久存储。 日志与输出语句的区别 2. 日志体系结构和Log4J 体系结构 Log4J Log4j是Apache的一个开源项目。 通过使用Log4j&#…

vue实现导航栏功能的方法

在 Vue中实现导航栏功能,我们可以将导航栏作为一个单独的组件来实现。这样可以方便我们进行修改、定制,并有多种方式进行添加导航栏,如使用 Vue的 document. position属性或者使用vue-dialog-position属性来添加导航栏。在此,我们…

mac os终于成功安装MySQL

目录 PART 1. 下载MySQL PART 2. 安装MySQL PART 3. 启动MySQL 大家好,我是tin,一个热爱技术喜欢折腾的开发,欢迎阅读我的重磅肝文: 1. 面试官:你给我讲一讲,Dubbo暴力停机,消费者是如何感知…

机器学习知识经验分享之六:R语言绘图之小提琴图绘制

python语言用于深度学习较为广泛,R语言用于机器学习领域中的数据预测和数据处理算法较多,后续将更多分享机器学习数据预测相关知识的分享,有需要的朋友可持续关注,有疑问可以关注后私信留言。 文章目录 一、小提琴图 二、相关代…

node、node-sass和sass-loader版本错误问题 this.getOptions is not a function

安装node-sass和sass-loader后,使用npm run dev启动项目时一直报错。网上查明原因,是因为版本问题,但是修改node-sass和sass-loader版本后,又提示说node版本不兼容,我的node版本是18。随后又尝试了很多node-sass和sass…

【STM32CubeMX项目】STM32DHT11工程文件

前言 在我的另一篇里文章里已经介绍过DHT11的时序理论了,这里介绍下,我写DHT11的数据获取的思路和调用。程序验证后,发现下述问题,暂时解决不了,但是还是会把个人的代码流程,函数的编写思路和工程写下&…

蔚来的痛苦远未结束

来源:猛兽财经 作者:猛兽财经 总结 (1)蔚来5月份的交付数据没有计入ES6的订单情况 (2)蔚来现在面临的主要问题是销售成本在不断增长,残酷的事实是,蔚来资产负债表上的现金只能维持5…

在Windows中安装极狐GitLab Runner

官方文档:https://docs.gitlab.cn/runner/install/windows.html 在Windows中安装极狐GitLab Runner 1.下载GitLab Runner二进制文件,新建一个文件夹(不要有中文),并将二进制文件放入该文件夹,重命名为“git…

django连接mysql

1.0app目录 1.pip 安装mysqlclient 2.在cmd里面新建一个django项目 3.在cmd里面新建一个app名字叫blogg 4.创建自己的数据库 django连接mysql 首建项目maneage里面setting的mysql配置 6.setting里面的installed_apps里面加上app的配置 7.app里面models模板的设置…

平面图学习

空调管道的设计:某景区有6个景点,位置分布如下图。 分析者认为:(1) A1与A4, (2) A2与A5, (3) A3与A6间人流较少,其它景点之间人流量大,必须投资铺设空调管道,但要求空调管道间不能交…

国密算法初探 | 入门教程 | 解析

国密算法即国家密码局认定的国产密码算法。 国密算法是商用密码,仅能用于商业用途。国密算法是一套标准,由国家密码局制定的规范,凡是符合的,都可以称之为国密算法。国密算法暂无官方的代码实现,企业可以自己编码实现…

用Numpy实现简单的神经网络

目录 数据预处理模型设计训练过程小批量随机梯度下降 用numpy实现神经网络对波士顿房价进行预测 假设房价和各影响因素之间能够用线性关系来描述: y ∑ j 1 M x j w j b y { \sum_{j1}^Mx_j w_j} b yj1∑M​xj​wj​b 模型的求解即是通过数据拟合出每个 w j w_…

使用思维导图做出Mybatis核心配置文件中各层及结构以及常用标签的意义和详细作用.

一、配置文件概述 Mybatis 配置文件两大类:1.Mybatis 主配置文件;2.Mybatis 的 mapper 文件 Mybatis 主配置文件: 提供 Mybatis 全局设置的。包含的内容、日志、数据源、mapper 文件位置等信息。Mybatis 的 mapper 文件: 写 sql …

linux 中的 gdb 调试方法和技巧(有截图超详细)

一、 背景 1. 程序的发布方式有两种,debug模式和release模式 2. Linux gcc/g出来的二进制程序,默认是release模式 3. 要使用gdb调试,必须在源代码生成二进制程序的时候,加上 -g 选项 如下图: 不加 -g 默认是 relea…