Langchain-Chatchat本地搭建ChatGLM3模型和提取PDF内容

文章目录

    • 1、软件要求
    • 2、安装CUDA
      • 2.1、安装gcc
      • 2.2、安装CUDA
    • 3、安装Anaconda3
      • 3.1、下载Anaconda3
      • 3.2、创建python虚拟环境
    • 4、部署系统
      • 4.1、下载源码
      • 4.2、安装依赖
      • 4.3、下载模型
      • 4.4、初始化配置和知识库
        • 4.4.1、初始化配置
        • 4.4.2、初始化知识库
      • 4.5、运行
      • 4.6、运行
        • 4.6.1、启动
        • 4.6.2、启动创建知识库和上传pdf
        • 4.6.3、问答提取内容

1、软件要求

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

  • Python 版本: >= 3.8(很不稳定), < 3.12
  • CUDA 版本: >= 12.1
    推荐要求
    开发者在以下环境下进行代码调试,在该环境下能够避免最多环境问题。
  • Python 版本 == 3.11.7
  • CUDA 版本: == 12.1

本文是基于Ubuntu 22.04.1 LTS (GNU/Linux 5.15.133.1-microsoft-standard-WSL2 x86_64)测试

2、安装CUDA

2.1、安装gcc

输入gcc -version检查是否安装了gcc

~$ gcc --version
Command 'gcc' not found, but can be installed with:
sudo apt install gcc

2.2、安装CUDA

输入nvidia-smi查看支持CUDA的版本,支持的最高版本是12.3
在这里插入图片描述

当前pytorch最高支持12.1,在官网https://developer.nvidia.com/cuda-toolkit-archive下载12.1.1版本
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

输入命令下载安装

wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run
sudo sh cuda_12.1.1_530.30.02_linux.run

配置环境变量,输入vi ~/.bashrc命令打开文件

export PATH=/usr/local/cuda-12.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH

刷新环境变量source ~/.bashrc

3、安装Anaconda3

3.1、下载Anaconda3

官网下载:https://www.anaconda.com/download/
清华镜像:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
当前最新版本:https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh
下载完成,输入下边命令安装

sh Anaconda3-2023.09-0-Linux-x86_64.sh

3.2、创建python虚拟环境

conda create -n python311 python=3.11# 激活环境
conda activate python311
# 如果activate不存在,改用source激活环境
# source activate python311
# 退出环境
conda deactivate python311 

4、部署系统

4.1、下载源码

浏览器下载:Langchain-Chatchat-0.2.10.zip:https://github.com/chatchat-space/Langchain-Chatchat/releases
也可以通过git拉取最新仓库

# git拉取最新仓库
git clone https://github.com/chatchat-space/Langchain-Chatchat.git 

4.2、安装依赖

# 进入目录
$ cd Langchain-Chatchat# 安装全部依赖
# 使用国内源下载依赖更快:https://mirrors.aliyun.com/pypi/simple/,https://pypi.tuna.tsinghua.edu.cn/simple/
# 全部依赖
$ pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
# api运行依赖
$ pip install -r requirements_api.txt -i https://mirrors.aliyun.com/pypi/simple/
# webui运行依赖
$ pip install -r requirements_webui.txt -i https://mirrors.aliyun.com/pypi/simple/
# 默认依赖包括基本运行环境(FAISS向量库)。如果要使用 milvus/pg_vector 等向量库,请将 requirements.txt 中相应依赖取消注释再安装。

4.3、下载模型

$ git lfs install
# 下载LLM模型,国内从魔塔下载更快
$ git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git
# git clone https://huggingface.co/THUDM/chatglm3-6b# 下载Embedding 模型,国内从魔塔下载更快
$ git clone https://www.modelscope.cn/AI-ModelScope/bge-large-zh.git
# git clone https://huggingface.co/BAAI/bge-large-zh

4.4、初始化配置和知识库

4.4.1、初始化配置
# 初始化Langchain-Chatchat-0.2.10\configs目录内的配置文件
$ python copy_config_example.py
  • 基础配置项 basic_config.py
    该配置基负责记录日志的格式和储存路径,通常不需要修改。
  • 模型配置项 model_config.py
EMBEDDING_MODEL = "bge-large-zh"  # 修改为bge-large-zh
# Embedding 模型运行设备。设为 "auto" 会自动检测(会有警告),也可手动设定为 "cuda","mps","cpu","xpu" 其中
EMBEDDING_DEVICE = "cuda"# 要运行的 LLM 名称,可以包括本地模型和在线模型。列表中本地模型将在启动项目时全部加载。
# 列表中第一个模型将作为 API 和 WEBUI 的默认模型。
# 在这里,我们使用目前主流的两个离线模型,其中,chatglm3-6b 为默认加载模型。
LLM_MODELS = ["chatglm3-6b", "zhipu-api", "openai-api"]
# LLM 模型运行设备。设为"auto"会自动检测(会有警告),也可手动设定为 "cuda","mps","cpu","xpu" 其中之一。
LLM_DEVICE = "cuda" # 修改为cpu
MODEL_PATH = {"embed_model": {......"bge-large-zh": "/mnt/d/project/python/model/BAAI/bge-large-zh", # 修改为物理路径......},"llm_model": {......"chatglm3-6b": "/mnt/d/project/python/model/THUDM/chatglm3-6b", # 修改为物理路径......},
  • 提示词配置项 prompt_config.py
    提示词配置分为三个板块,分别对应三种聊天类型。
llm_chat: 基础的对话提示词, 通常来说,直接是用户输入的内容,没有系统提示词。
knowledge_base_chat: 与知识库对话的提示词,在模板中,我们为开发者设计了一个系统提示词,开发者可以自行更改。
agent_chat: 与Agent对话的提示词,同样,我们为开发者设计了一个系统提示词,开发者可以自行更改。
# prompt模板使用Jinja2语法,简单点就是用双大括号代替f-string的单大括号 请注意,本配置文件支持热加载,修改prompt模板后无需重启服务。
  • 数据库配置 kb_config.py
  • 服务和端口配置项 server_config.py
# 这些模型必须是在model_config.MODEL_PATH或ONLINE_MODEL中正确配置的。
# 在启动startup.py时,可用通过`--model-name xxxx yyyy`指定模型,不指定则为LLM_MODELS
FSCHAT_MODEL_WORKERS = {......"chatglm3-6b": {"device": "cuda", # 配置为cuda},......
}
4.4.2、初始化知识库
## 默认依赖包括基本运行环境(FAISS向量库),初始化自己的知识库
$ python init_database.py --recreate-vs#如果您已经有创建过知识库,可以先执行以下命令创建或更新数据库表:
# python init_database.py --create-tables

4.5、运行

# 一键启动脚本 startup.py, 一键启动所有 Fastchat 服务、API 服务、WebUI 服务,示例代码:
$ python startup.py -a

并可使用 Ctrl + C 直接关闭所有运行服务。

可选参数包括 -a (或–all-webui), --all-api, --llm-api, -c (或–controller), --openai-api, -m (或–model-worker), --api, --webui,其中:

  • –all-webui 为一键启动 WebUI 所有依赖服务;
  • –all-api 为一键启动 API 所有依赖服务;
  • –llm-api 为一键启动 Fastchat 所有依赖的 LLM 服务;
  • –openai-api 为仅启动 FastChat 的 controller 和 openai-api-server 服务;
  • 其他为单独服务启动选项。
    若想指定非默认模型,需要用 --model-name 选项,示例:
$ python startup.py --all-webui --model-name Qwen-7B-Chat

更多信息可通过 python startup.py -h 查看。

4.6、运行

本文运行例子:上传一个PDF文档到知识库,并通过问答的方式提取PDF内容。

4.6.1、启动

在这里插入图片描述

4.6.2、启动创建知识库和上传pdf

在这里插入图片描述
在这里插入图片描述

4.6.3、问答提取内容

问答方式提取内容,除了第一个社会信用代码不准确外,其它问题都能返回准确答案
在这里插入图片描述

安装部署参考自

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

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

相关文章

C语言编译成库文件的要求

keil编译成库文件 在Keil中&#xff0c;将C语言源文件编译成库文件通常需要进行以下步骤&#xff1a; 创建一个新的Keil项目&#xff0c;并将所需的C语言源文件添加到该项目中。 在项目设置中配置编译选项&#xff0c;确保生成的目标文件符合库文件的标准格式。 编译项目&…

基于PHP的餐厅管理系统APP设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 相关技术 3 1.1 MVC 3 1.2 ThinkPHP 3 1.3 MySQL数据库 3 1.4 uni-app 4 1.5 本章小结 4 2 系统分析 5 2.1 功能需求 5 2.2 用例分析 7 2.3 非功能需求 8 2.4 本章小结 8 3 系统设计 9 3.1 系统总体设计 9 3.2 系统详细设计 10 3.3 本章小…

基于Java+springboot+VUE+redis实现的前后端分类版网上商城项目

基于Java springbootVUEredis实现的前后端分类版网上商城项目 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言…

Ajax、Axios、Vue、Element与其案例

目录 一.Ajax 二.Axios 三.Vue 四.Element 五.增删改查案例 一.依赖&#xff1a;数据库&#xff0c;mybatis&#xff0c;servlet&#xff0c;json-对象转换器 二.资源&#xff1a;elementvueaxios 三.pojo 四.mapper.xml与mapper接口 五.service 六.servlet 七.html页…

css flex 布局换行

默认使用display: flex;是不换行的&#xff0c;只需要加上flex-wrap: wrap;就行了&#xff0c;效果图 .app-center {display: flex;flex-wrap: wrap;justify-content:flex-start; } 通过上面我们发现虽然时间换行了&#xff0c;但是每行的边距不一样 加上这个就行了&#xff…

微信小程序-分包

分包 1.什么是分包 分包指的是把一个完整的小程序项目&#xff0c;按照需求划分为不同的子包&#xff0c;在构建时打包成不同的分包&#xff0c;用户在使用时按需进行加载。 2.分包的好处 对小程序进行分包的好处主要有以下两点&#xff1a; 可以优化小程序首次启动的下载时间…

二维码图案样式怎么改?二维码改样式的简单方法

怎么修改二维码图案的样式呢&#xff1f;一般情况下生成的二维码图案大多是黑白的普通样式&#xff0c;那么很多人会为了提高展现效果或者增加辨识度&#xff0c;需要修改二维码的图案样式、添加logo、文字等其他内容&#xff0c;那么面对这样的需求该如何解决呢&#xff1f;下…

docker学习(十四)docker搭建私服

docker私服搭建&#xff0c;配置域名访问&#xff0c;设置访问密码 启动registry docker run -d \-p 5000:5000 \-v /opt/data/registry:/var/lib/registry \registrydocker pull hello-world docker tag hello-world 127.0.0.1:5000/hello-world docker push 127.0.0.1:5000…

SQL中如何添加数据

SQL中如何添加数据 一、SQL中如何添加数据&#xff08;方法汇总&#xff09;二、SQL中如何添加数据&#xff08;方法详细解说&#xff09;1. 使用SQL脚本&#xff08;推荐&#xff09;1.1 在表中插入1.1.1 **第一种形式**1.1.2 **第二种形式**SQL INSERT INTO 语法示例SQL INSE…

Keepalived+LVS构建高可用集群

目录 一、Keepalive基础介绍 1. Keepalive与VRRP 2. VRRP相关技术 3. 工作原理 4. 模块 5. 架构 6. 安装 7. Keepalived 相关文件 7.1 配置组成 7.2 全局配置 7.3 VRRP实例配置&#xff08;lvs调度器&#xff09; 7.4 虚拟服务器与真实服务器配置 二、Keepalived…

IDEA管理Git + Gitee 常用操作

文章目录 IDEA管理Git Gitee 常用操作1.Gitee创建代码仓库1.创建仓库1.点击新建仓库2.完成仓库信息填写3.创建成功4.管理菜单可以修改这个项目的设置 2.设置SSH公钥免密登录基本介绍1.找到.ssh目录2.执行指令 ssh-keygen3.将公钥信息添加到码云账户1.点击设置2.ssh公钥3.复制.…

软件开发服务合同套用模板

一、合作方式 二、合同标的 三、开发进度及软件成果交付 四、开发费用 五、付款结算方式 六、知识产权条款 七、双方的权利和义务 八、验收 九、售后服务支持 十、培训 十一、保密责任 十二、不可抗力 十三、争议的解决 十四、其它事项 软件开发全套资料获取下载…

python之海龟绘图

海龟绘图&#xff08;turtle&#xff09;是一个Python内置的绘图库&#xff0c;也被称为“Turtle Graphics”或简称“Turtles”。它采用了一种有趣的绘图方式&#xff0c;模拟一只小海龟在屏幕上爬行&#xff0c;而小海龟爬行的路径就形成了绘制的图形。这种绘图方式最初源自20…

elasticsearch篇:RestClient操作

1. RestClient ES官方提供了各种不同语言的客户端&#xff0c;用来操作ES。这些客户端的本质就是组装DSL语句&#xff0c;通过http请求发送给ES。官方文档地址&#xff1a;Elasticsearch Clients | Elastic 其中的Java Rest Client又包括两种&#xff1a; Java Low Level Res…

Microsoft SQL Server 编写汉字转拼音函数

目录 应用场景 举例 函数实现 小结 应用场景 在搜索应用中&#xff0c;我们一般会提供一个搜索框&#xff0c;输入关健字&#xff0c;点击查询按钮以获取结果数据。大部分情况我们会提供模糊查询的形式以在一个或多个字段进行搜索以获取结果。这样可以简化用户的操作&…

jvm八股

文章目录 运行时数据区域Java堆对象创建对象的内存布局对象的访问定位句柄直接指针 GC判断对象是否已死引用计数算法可达性分析算法 引用的类别垃圾收集算法分代收集理论标记清除算法标记复制算法标记整理算法 实现细节并发的可达性分析 垃圾收集器serial收集器ParNew收集器Par…

【PyTorch实战演练】深入剖析MTCNN(多任务级联卷积神经网络)并使用30行代码实现人脸识别

文章目录 0. 前言1. 级联神经网络介绍2. MTCNN介绍2.1 MTCNN提出背景2.2 MTCNN结构 3. MTCNN PyTorch实战3.1 facenet_pytorch库中的MTCNN3.2 识别图像数据3.3 人脸识别3.4 关键点定位 0. 前言 按照国际惯例&#xff0c;首先声明&#xff1a;本文只是我自己学习的理解&#xff…

【小黑送书—第十二期】>>一本书讲透Elasticsearch:原理、进阶与工程实践(文末送书)

Elasticsearch 是一种强大的搜索和分析引擎&#xff0c;被广泛用于各种应用中&#xff0c;以其强大的全文搜索能力而著称。 不过&#xff0c;在日常管理 Elasticsearch 时&#xff0c;我们经常需要对索引进行保护&#xff0c;以防止数据被意外修改或删除&#xff0c;特别是在进…

【Mining Data】收集数据(使用 Python 挖掘 Twitter 数据)

@[TOC](【Mining Data】收集数据(使用 Python 挖掘 Twitter 数据)) 具体步骤 第一步是注册您的应用程序。特别是,您需要将浏览器指向 http://apps.twitter.com,登录 Twitter(如果您尚未登录)并注册新应用程序。您现在可以为您的应用程序选择名称和描述(例如“Mining Demo”…

3.6研究代码(2)

指的是微电网运行参数。 在MATLAB中&#xff0c;randi([0,1],1,48) 会生成一个包含1*48个0或1的随机整数数组。这意味着数组中的每个元素都将是0或1。 MATLAB帮助中心&#xff1a;均匀分布的伪随机整数 - MATLAB randi - MathWorks 中国https://ww2.mathworks.cn/help/matlab/r…