【AI】Langchain-Chatchat搭建本地知识库-未完,先记录踩的坑

news2025/1/17 6:16:34

事先说一下,我本地的显卡4070只有12G显存,无法运行本地知识库,我把自己折腾的过程和遇到的坑先记录一下吧,后续如果有算力的话就再跑一遍试试。
Langchain-Chatchat曾用名Langchain-ChatGLM,是智谱AI的本地知识库项目,其官方介绍如下:🤖️ 一种利用 langchain 思想实现的基于本地知识库的问答应用,目标期望建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。
项目地址:https://github.com/chatchat-space/Langchain-Chatchat

之前有看过使用ChatGLM结合Langchain构建本地知识库的内容,随着ChatGLM3-6B模型的发布,我发现官方竟然也出了本地知识库的项目,试想肯定还是官方对项目的了解最深入,所以还是适用一下吧。官方wiki上推荐是Linux系统,但是由于我没有Linux的环境,所以还是尝试在Windows环境上跑一下吧。

1.环境搭建

wiki中环境的要求如下:
最低要求

该要求仅针对标准模式,轻量模式使用在线模型,不需要安装torch等库,也不需要显卡即可运行。

Python 版本: >= 3.8(很不稳定), < 3.12
CUDA 版本: >= 12.1
推荐要求

开发者在以下环境下进行代码调试,在该环境下能够避免最多环境问题。

Python 版本 == 3.11.7
CUDA 版本: == 12.1

根据上述要求,适用Anaconda创建虚拟环境,我这边选择的python版本是3.10

conda create -n chatchat python=3.10

然后去下载whl文件安装cuda版本的torch、torchvision、torchaudio;下载地址:https://download.pytorch.org/whl/torch_stable.html,根据自己需求下载即可
在这里插入图片描述
然后使用pip install直接安装即可。

2.代码准备

可以去github上拉取代码,也可以去官方文档的分享里去下载懒人包,我比较懒,所以选择了后者。
https://pan.baidu.com/s/1fHElFanrdK9Y-pTpeY_azg?pwd=glut

在这里插入图片描述
解压chatchat和model,两者放在同级目录下面。
进入chatchat目录下面,可以看到官方给出了快速体验的bat启动文件,按照顺序启动1和2即可
在这里插入图片描述

3.调试过程

懒人包中提供了虚拟环境等可供直接运行,我们之前准备的环境看样子也用不上,事情本来应该是很顺利的,但是很多情况事与愿违。

3.1模型本地化加载

由于项目在启动时需要联网加载Embedding 模型 BAAI/bge-large-zh ;如果运行环境不能魔法联网,就最好先去huggingface上把模型下载下来。
下载好之后,我把模型和ChatGLM3-6B放在一起
在这里插入图片描述
然后需要去修改一下模型加载的路径,这里可以参考chatglm的配置,配置在model_config.py文件中
在这里插入图片描述
修改如下:
在这里插入图片描述

3.2解决爆显存问题

由于本地显存限制,加载ChatGLM3-6B需要13G的显存,直接运行fp16的模型显存直接爆掉了,所以我想着退而求其次,实施8Bit量化的模型能不能跑,启动程序其实最后是运行了python startup.py -a的启动命令,所以先去startup.py中找一下有没有配置8bit量化的地方。
在这里插入图片描述
看样子把这里改成True就好了,但是感觉直接在代码中改有点不够优雅,于是去看看配置文件,发现在server_config.py中存在开启的参数,于是修改,然后运行
在这里插入图片描述

3.3解决webui不显示的问题

解决了模型的问题之后,点击第二个bat文件运行,发现能够正常启动了,API文档页也可以直接打开了,但是重要的webui页面却怎么也打不开,于是查看日志,发现了问题,原来是运行webui的环境变量出现了问题,导致启动webui进程的命令找不到python。于是还是去startup.py中找解决方法:
在这里插入图片描述
这里用subprocess的方式运行webui,又遇到知识盲点了,麻爪了,不知道在哪里设置python的路径了。
不能耽误到这里吧,然后我就想,反正程序里面也是单独运行的api和webui,我能不能开两个窗口去分别运行这两个东西呢。
你别说,还真可以,官方wiki下是这样描述一键启动的
在这里插入图片描述
那我就使用–all-api参数来运行吧
由于没有用懒人包中的虚拟环境,我们还需要将我们之前准备的环境装上依赖,这简单,我们直接去pip install -r requirements.txt好了。
不过需要注意的是,为了在Windows环境安装cuda版本的torch不出错,我们使用whl文件安装了torch相关的依赖,所以需要在requirements.txt中将这三个依赖注释掉,以防安装过程中冲突或又被不合时宜的版本覆盖了。
然后就可以愉快的运行api服务了

然后再使用streamlit运行webui

streamlit run webui.py  --server.address 127.0.0.1 --server.port 5678 --theme.base light --theme.primaryColor #165dff --theme.secondaryBackgroundColor #f5f5f5" --theme.textColor #000000

事情变得顺利了,webui界面出来了,测试对话也能够正常使用了。
本来因为都可以了,但是在创建文档知识库的时候报错了,报错是数据类型不适合,盲猜因为int8量化导致的模型参数值错误,所以应该是不能使用量化后的模型进行embedding操作之类的。后续看看能不能再找个大显存的环境测试一下。

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

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

相关文章

Qt前端技术:5.QSS

这个是表示QFrame中的pushButton中的子类和它子类的子类都将背景变为red 写成大于的时候表示只有直接的子类对象才会变 这个图中的QGroupBox和QPushButton都是QFrame的直接的子类 这个中的QGroupBox是QFrame的直接的子类但是QPushButton 是QGroupBox的子类&#xff0c;QPushB…

如何要做好年终绩效

年终绩效&#xff0c;每年12月份&#xff0c; 都是“绩效”这个词比较热门的阶段&#xff0c; 各个企业各个部门避不开的话题。 那如何能做好呢&#xff0c;一起来看看关于 要做好年终绩效考核、绩效面谈和绩效环评的建议吧&#xff01; 明确目标和指标&#xff1a;在考核开…

Tomcat远程调试

windows环境 写一个 startup-debug.bat&#xff0c;指定tomcat的根目录&#xff0c;端口自己定义 rem *******设置Tomcat目录*******-- set CATALINE_HOMED:\asd\A8-2\tomcat d: rem 8787为可用端口,为远程调试监听端口-- cd %CATALINE_HOME%/bin set JPDA_ADDRESS8787 set J…

JavaScript系列-函数调用之apply、call、bind

文章目录 适用场景apply定义语法具体的例子 call定义语法例子 bind定义例子语法多级绑定 小结更多内容 适用场景 apply、call、bind 三者都是 Function 原型上的方法&#xff0c;也就是说&#xff0c;基本所有函数都可以通过 函数名.apply|call|bind 调用 apply、call、bind …

centos7服务器安装 mysql

centos7服务器安装 mysql 一、下载 官网&#xff1a;https://dev.mysql.com/downloads/mysql/ 二、安装 1.查看有没有需要卸载的SQL包&#xff0c;一般系统的mariadb是自带的&#xff0c;需要卸载 rpm -qa | grep mysql rpm -qa | grep mariadb例如&#xff1a;安装过MySQL…

内存函数的学习

额外知识点 第一个 假设c为int类型&#xff0c;&#xff08;char&#xff09;c之后&#xff0c;之后如果还用变量c的话&#xff0c;c依然为int类型。&#xff08;&#xff09;强制转换操作符并不会永久改变原本的变量类型。 第二个 \0在打印时不会显示出来 第三个 void …

零成本搭建一款博客网站(基于Vercel+Hexo完美实现)【保姆级教程】

文章目录 &#x1f438;基于VercelHexo零成本搭建博客网站&#x1f43b;实现思路 &#x1f42e;Hexo的配置与安装&#x1f412;Hexo的美化与使用&#x1f42b;Github的推送与部署&#x1f43c;Vercel部署与网站上线&#x1f41b;总结 &#x1f438;基于VercelHexo零成本搭建博客…

Vue 实现响应式布局

实现响应式布局是工作中必不可少 客户需要 若是使用vue element ui 的方式实现 浏览器宽度为760的情况 浏览器宽度为360的情况 手机上的显示的情况 一、对于屏幕尺寸的定义 element UI参照Bootstrap的解决方案提供了五种屏幕大小尺寸&#xff1a;xs、sm、md、lg 和 xl。并对…

帮助谷歌从40人裂变为60000人的OKR是啥?

OKR&#xff08;Objectives and Key Results&#xff09;是一种目标管理方法&#xff0c;旨在帮助组织和个人明确目标并衡量成功。在谷歌的发展过程中&#xff0c;OKR扮演了至关重要的角色&#xff0c;帮助公司从40人规模快速成长为60000人的科技巨头。 OKR适用于各种类型的企…

Spring中你应该要知道的initMethod

文章目录 功能源码 功能 之前的文章中由解析过PostConstruct/PreDestroy&#xff0c;他们也是initMethod的一种形式&#xff0c;注解方式是后来才加入的&#xff0c;在源码中他们的命名都是一样的名字&#xff0c;都叫initMethod&#xff0c;不过他们却是有着很大的差别&#…

MySQL数据库基础和基本的增删改查操作

目录 前瞻 数据库的基本概念 数据库管理系统&#xff08;DBMS&#xff09; 数据库系统(DBS) 数据库类型和常用数据库 关系型数据库 SQL 非关系型数据库 NoSQL SQL语句 简介 SQL语句分类 常用的数据类型 MySQL的六大约束特性 SQL语句的使用 创建及删除数据库和表 …

quic协议及核心源码分析

quic协议 1、网络通信时&#xff0c;为了确保数据不丢包&#xff0c;早在几十年前就发明了tcp协议&#xff01;然而此一时非彼一时&#xff0c;随着技术进步和业务需求增多&#xff0c;tcp也暴露了部分比较明显的缺陷&#xff0c;比如: 建立连接的3次握手延迟大&#xff1b; T…

亚信安慧AntDB数据库荣获“2023年度信创卓越贡献奖”

近日&#xff0c;业界知名IT垂直门户媒体IT168公布“2023技术卓越奖”获奖名单&#xff0c;亚信安慧AntDB数据库荣获“2023年度信创卓越贡献奖”。 图1&#xff1a;亚信安慧AntDB数据库荣获“2023年度信创卓越贡献奖” “技术卓越奖”评选是IT168重要的年度奖项评选&#xff0c…

【Filament】纹理贴图

1 前言 本文主要介绍使用 Filament 实现纹理贴图&#xff0c;读者如果对 Filament 不太熟悉&#xff0c;请回顾以下内容。 Filament环境搭建绘制三角形绘制矩形绘制圆形绘制立方体 Filament 纹理坐标的 x、y 轴正方向分别朝右和朝上&#xff0c;其 y 轴正方向朝向与 OpenGL ES…

使用StableDiffusion进行图片Inpainting原理

论文链接&#xff1a;RePaint: Inpainting using Denoising Diffusion Probabilistic Models代码链接&#xff1a;RePaint Inpainting任务是指在任意一个二进制的掩码指定的图片区域上重新生成新的内容&#xff0c;且新生成的内容需要和周围内容保持协调。当前SOTA模型用单一类…

天文与计算机:技术的星辰大海

天文与计算机&#xff1a;技术的星辰大海 一、引言 在人类的历史长河中&#xff0c;天文学与计算机技术这两个领域似乎相隔甚远&#xff0c;然而在科技的推动下&#xff0c;它们却逐渐走到了一起&#xff0c;为人类对宇宙的探索开辟了新的道路。天文观测的复杂度与数据量随着…

C++初阶——类和对象

呀哈喽&#xff0c;我是结衣 C入门之后&#xff0c;我们就进入了C的初阶的学习了&#xff0c;在了解类和对象之前&#xff0c;我们还是先了解&#xff0c;面向过程和面向对象的初步认识。 在本篇博客中&#xff0c;我们要讲的内容有 1.面向过程和面向对象初步认识 2.类的引入 3…

数据流图_DFD图_精简易上手

数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输人移动到输出的过程中所经受的变换。 首先给出一个数据流图样例 基本的四种图形 直角矩形:代表源点或终点,一般来说,是人,如例图的仓库管理员和采购员圆形(也可以画成圆角矩形):是处理,一般来说,是动作,是动词名词的形式…

攻防世界——game 游戏

下载下来是一个exe文件&#xff0c;可以用IDA打开 我们先运行一下 这是属于第二种类型&#xff0c;完成一个操作后给你flag 这种题我更倾向于动调直接得到flag 我们查壳 没有保护壳&#xff0c;直接32打开 进入字符串界面&#xff0c;找到显示的那部分 int __cdecl main_0(…

传感器原理及工程应用(2)---传感器

文章目录 1. 传感器概述1.1 传感器的组成1.2 传感器的分类 2. 传感器的静态特性2.1 灵敏度2.2 线性度2.3 迟滞2.4 重复性2.5 漂移 1. 传感器概述 1.1 传感器的组成 1. 传感器能感受&#xff08;或响应&#xff09;规定的被测量并按照一定的规律转换成可用输出信号的器件或装置…