基于 ChatGLM-6B 搭建个人专属知识库

之前树先生教过大家如何利用微调打造一个垂直领域的 LLM 专属模型。但是微调一方面需要专业知识,通常需要很多计算资源和时间,以便在不同的超参数设置上训练多个模型并选择最佳的一个,另一方面动态扩展比较差,新增和修改原有的数据都要重新微调一次。总得来说对非专业人员不友好。

ChatGLM-6B 部署与 P-Tuning 微调实战

今天树先生教大家无需微调就能实现垂直领域的专业问答,利用 ChatGLM-6B + langchain 实现个人专属知识库,非常简单易上手。

技术原理

项目实现原理如下图所示,过程包括加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本向量中匹配出与问句向量最相似的top k个 -> 匹配出的文本作为上下文和问题一起添加到 prompt 中 -> 提交给 LLM 生成回答。

从上面就能看出,其核心技术就是向量 embedding,将用户知识库内容经过 embedding 存入向量知识库,然后用户每一次提问也会经过 embedding,利用向量相关性算法(例如余弦算法)找到最匹配的几个知识库片段,将这些知识库片段作为上下文,与用户问题一起作为 promt 提交给 LLM 回答,很好理解吧。一个典型的 prompt 模板如下:

"""
已知信息:
{context} 根据上述已知信息,简洁和专业的来回答用户的问题。如果无法从中得到答案,请说 “根据已知信息无法回答该问题” 或 “没有提供足够的相关信息”,不允许在答案中添加编造成分,答案请使用中文。 
问题是:{question}
"""

更多关于向量 embedding 的内容可以参考我之前写的一篇文章。

ChatGPT 引爆向量数据库赛道

使用场景

可以调整 prompt,匹配不同的知识库,让 LLM 扮演不同的角色

  • 上传公司财报,充当财务分析师
  • 上传客服聊天记录,充当智能客服
  • 上传经典Case,充当律师助手
  • 上传医院百科全书,充当在线问诊医生

等等等等。。。。

实战

这里我们选用 langchain-ChatGLM 项目示例,其他的 LLM 模型对接知识库也是一个道理。

准备工作

我们还是白嫖阿里云的机器学习 PAI 平台,使用 A10 显卡,这部分内容之前文章中有介绍。

免费部署一个开源大模型 MOSS

项目部署

环境准备好了以后,就可以开始准备部署工作了。

下载源码

git clone https://github.com/imClumsyPanda/langchain-ChatGLM.git

安装依赖

cd langchain-ChatGLM
pip install -r requirements.txt

下载模型

# 安装 git lfs
git lfs install# 下载 LLM 模型
git clone https://huggingface.co/THUDM/chatglm-6b /your_path/chatglm-6b# 下载 Embedding 模型
git clone https://huggingface.co/GanymedeNil/text2vec-large-chinese /your_path/text2vec# 模型需要更新时,可打开模型所在文件夹后拉取最新模型文件/代码
git pull

参数调整

模型下载完成后,请在 configs/model_config.py 文件中,对embedding_model_dictllm_model_dict参数进行修改。

embedding_model_dict = {"ernie-tiny": "nghuyong/ernie-3.0-nano-zh","ernie-base": "nghuyong/ernie-3.0-base-zh","text2vec": "/your_path/text2vec"
}llm_model_dict = {"chatyuan": "ClueAI/ChatYuan-large-v2","chatglm-6b-int4-qe": "THUDM/chatglm-6b-int4-qe","chatglm-6b-int4": "THUDM/chatglm-6b-int4","chatglm-6b-int8": "THUDM/chatglm-6b-int8","chatglm-6b": "/your_path/chatglm-6b",
}

项目启动

Web 模式启动

pip install gradio
python webui.py

模型配置

上传知识库

知识库问答

API 模式启动

python api.py

命令行模式启动

python cli_demo.py

改进

Gradio 页面太过于简陋,可作为后台管理员操作页面,如果要开放给用户使用就不合适了,树先生在 Chatgpt-Next-Web 项目基础上进行了适配修改,打造了一款面向用户使用的本地知识库前端。

授权码控制

选择知识库

基于知识库问答

显示答案来源

PS:这个知识库是我上传的原始知识库,所以来源这块数据展示效果不好,更好的做法是经过一遍 数据治理 再上传。

感兴趣的朋友可以私信我,我会免费给大家提供知识库体验地址。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot+Vue+WebSocket编写简单在线聊天室

WebSocket 简单入门 websocket 应用场景:社交订阅、多玩家游戏、协同编程/编辑、点击数据流、股票基金报价、体育实况更新、多媒体聊天、基于位置的应用、在线教育等等。 参考:https://blog.csdn.net/resilient/article/details/85613446 online-chatroo…

解决: 您目前无法访问 因为此网站使用了 HSTS。网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复正常。

1、在Chrome地址栏中输入:chrome://net-internals/#hsts; 进入Domain Sercurity Policy界面。 2、在下图中输入二级域名查询是否使用了强制 HTTPS 请求。3、如果有查询结果,则在最下方的delete栏处,删除该域名的信息 4、再次查询,如下图所示&…

Win11系统电脑浏览器打开页面时显示无法访问此页面

无法获取域名的正确IP地址,由此可见网页无法打开的问题很可能出现在DNS设置上了。打开网页出现“无法访问此页面”,可以通过更改DNS服务器地址解决该问题 1、首先打开系统设置 2.【控制面板】-【网络和Internet】-【网络连接】 3.选择使用下面的DNS服务…

浏览器无法访问此网站该如何处理?

打开浏览器搜索内容,发现浏览器网页无法显示,出现了如下的提示。然后本篇文章主要写给浏览器无法使用的人提供一些解决办法。 谷歌浏览器(老版本) 打开谷歌浏览器,首先进入浏览器点击右上方三个点,找到“…

无法访问此网站网址为 http://localhost:6000/xxx 的网页可能暂时无法连接,或者它已永久性地移动到了新网址。 ERR_UNSAFE_POR

无法访问此网站 问题: 自己写的WEB服务, 端口6000在浏览器上怎么请求都无法访问此网站, 如下图: 在谷歌上访问: 在火狐上访问: 但是发现一个问题就是在Postman和IE里边测试是可以用的 原因:就是因为浏览器出于安全考虑, 会设置非安全不能访问的端口。 所以在平常开…

(2022年12月)解决: 您目前无法访问 因为此网站使用了 HSTS。网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复正常

1、问题描述: 您目前无法访问 因为此网站使用了 HSTS。网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复正常 2、概念解释: HSTS:HSTS 是 HTTP 严格传输安全(HTTP Strict Transport Security&…

谷歌浏览器提示,您目前无法访问,因为此网站使用了HSTS。网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复

在本地建网站时,使用本地hosts转向域名,使用谷歌浏览器访问时出现了,您目前无法访问,因为此网站使用了HSTS。网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复。 解决方法: 1.在谷歌浏览…

Chrome浏览器出现无法访问此网站/无法显示此网页的错误,怎么解决?

出现"无法访问此网站"或"无法显示此网页"的错误,有很多原因会导致这个问题发生,下面说明如何解决这个问题。 升级Chrome到最新版本,首先确认您的Chrome已经升级到了最新的稳定版,将Chrome升级到最新版本&…

网络连接正常但百度网页打不开显示无法访问此网站解决方案

电脑连接网络正常但百度网页打不开显示无法访问此网站 一、近期博主连接校园网之后打开百度发现无法访问,且显示下面图片中的错误。 二、然后Windows网络诊断发现是DNS没有响应。 三、博主选择重置电脑DNS设置。 四、最后正常访问百度。

电脑网络连接正常,微信、QQ能正常使用,但无法访问网页

电脑网络连接正常,微信、QQ能正常使用,但无法访问网页 问题描述:可能是在上网时动了代理服务器的地址,虽然过后把代理服务器给取消了,但电脑里的IE,360浏览器,Chrome都登不了网页,但…

解决: 您目前无法访问 因为此网站使用了 HSTS。网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复正常

这里写自定义目录标题 问题:描述:概念解释:解决:网上最多的解决方案实际解决 参考 问题: 您目前无法访问 因为此网站使用了 HSTS。网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复正常 …

开源 Llama 2 春风得意、ChatGPT 惨遭嫌弃,OpenAI 表示不服!

作者 | 曾浩辰 责编 | 唐小引、袁滚滚 出品 | CSDN(ID:CSDNnews) 既开源又免费的 Llama 2 一经发布颇有席卷之势,成了最火爆的开源 ChatGPT 替代,国内外不少开发者及企业都跟风进行模型的研究和商业开发&#xf…

ChatGPT真的懂SAP系统吗,我问ChatGPT如何学习FICO模块

文章目录 目录 文章目录 SAP FICO是什么? 问ChatGPT,如何学习FICO模块 要学习FICO模块,需要哪些基础知识 在学习SAP系统的FICO模块时,有哪些需要注意 SAP FICO是什么? FICO是SAP中的财务模块,一块是…

数字化税务革命:低代码助力打造纳税新时代

前言 税务办公数字化已成为当代企业发展的必然趋势。在数智时代背景下,企业需要将传统的纸质文档和繁琐的人工操作转变为高效便捷的数字化流程。随着数字化转型的推进,税务机关面临着如何实现高效率、高质量的税务办公的挑战。 势在必行的数字化变革 数字…

chatgpt赋能python:Python闰年统计:计算机程序自动化处理问题

Python闰年统计:计算机程序自动化处理问题 Python是一种高级编程语言,通过下列函数如何计算闰年。 def isLeapYear(year):if (year % 4) 0:if (year % 100) 0:if (year % 400) 0:return Trueelse:return Falseelse:return Trueelse:return False该函…

适合个人请假的理由

现在这年头请假难,请病假吧到是容易请到,但是自己好好的请个病假像是骂自己去生病一样,请病假还要医院证明。所以请病假不妥,除非真生病,否则建议别请病假。 1、自我诅咒版理由:生病,比如过敏、…

上班族请假理由大全

导读:上班族是命苦的一族,想请个假去半点私事还得需要请假,可要是总请假那就需要合理的请假理由配上请假医院证明完美,一般上班族请假理由分为婚假、丧假、产假、事假、病假这五大类,可仔细一想,也就只有事…

HTB Mailroom WriteUp

Mailroom Namp ┌──(root💀kali)-[~] └─# nmap -A 10.10.11.209 Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-16 22:27 EDT Nmap scan report for 10.10.11.209 Host is up (0.093s latency). Not shown: 998 closed tcp ports (reset) PORT STATE …

计算机二级请假条,请假条的范文标准版

请假条的范文标准版 因为请假的原因,请假条分为请病假和请事假两种。下面是小编为大家搜集了请假条范文标准版,供大家参考借鉴。 请假条范文标准版(一) 尊敬的_______________: 您好!我是余坊中心校的教师_________,因为_________…

如何在电脑上制作请假条表格_单位请假条表格

单位请假条表格 尊敬的领导: 您好! 我是 部(门)的 (姓名),因为 (原因),需要请假(时间)从 年 月 日 到 年 月 日 ,共( )天假,请假期间有效联系方式: 。 恳请领导批准,谢谢! 综合部负责人(签字)&a…