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.hqwc.cn/news/529261.html

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

相关文章

官宣正式成为 PostgreSQL Contributor,Richard 有何秘诀?

作为世界上最受欢迎的开源数据库之一&#xff0c;PostgreSQL 国际社区于3月3日正式公布了新加入的 PostgreSQL Contributor 名单&#xff0c;以认可为 PostgreSQL 开源项目做出实质性、长期贡献的人员。本次公布的名单中包括 3 名 Contributor 和 6 名 Major Contributor。 拓…

如何保证消息的顺序性

先看看顺序会错乱的场景&#xff1a;RabbitMQ&#xff1a;一个 queue&#xff0c;多个 consumer&#xff0c;这不明显乱了&#xff1a; 解决方案&#xff1a;

Arm MMU深度解读

文章目录 一、MMU概念介绍二、虚拟地址空间和物理地址空间2.1、(虚拟/物理)地址空间的范围2.2、物理地址空间有效位(范围) 三、Translation regimes四、地址翻译/几级页表&#xff1f;4.1、思考&#xff1a;页表到底有几级&#xff1f;4.2、以4KB granule为例&#xff0c;页表的…

Dgraph 入门教程四《开发环境的搭建》

在深入 了解Dgraph 之前&#xff0c;我们先了解下开发环境&#xff0c;毕竟让开发人员真正动起手来才是第一步。 Dgraph 支持很多种语言的开发&#xff0c;包括GO&#xff0c;Python&#xff0c;JS&#xff0c;C#和Java等等。出于项目需要&#xff0c;只了解下JS和Java。 1、…

超标量与多发射和超长指令字设计

前言 大家好我是jiantaoyab&#xff0c;这是我所总结作为学习的笔记第11篇,在这里分享给大家,这篇文章讲超标量与多发射和超长指令字设计&#xff0c;前面文章提到的书籍的pdf大家没有的话可以私信找我要&#xff01; 《计算机组成与设计&#xff1a;硬件 / 软件接口》中4.10…

01 数据结构引入 和 顺序表

阅读引言&#xff1a; 从本文开始给大家带来我在复习过程中写的数据结构的代码&#xff0c; 分享给需要的同学 一、数据结构引入 1.数据结构解决什么问题 数据结构可以将杂乱无章的数据管理起来&#xff0c; 提高数据的访问效率 计算机处理的对象&#xff08;数据&#xff09…

【掌握版本控制:Git 入门与实践指南】配置详解|理解本地仓库结构

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;泥中に咲く—ウォルピスカーター 0:34━━━━━━️&#x1f49f;──────── 4:46 &#x1f504; ◀️ ⏸ ▶…

RocketMQ入门指南:从零开始学习分布式消息队列技术

RocketMQ 1. MQ介绍1.1 为什么要用MQ1.2 MQ的优点和缺点1.3 各种MQ产品的比较 2. RocketMQ快速入门2.1 准备工作2.1.1 下载RocketMQ2.2.2 环境要求 2.2 安装RocketMQ2.2.1 安装步骤2.2.2 目录介绍 2.3 启动RocketMQ2.4 测试RocketMQ2.4.1 发送消息2.4.2 接收消息 2.5 关闭Rocke…

【三十】springboot项目上高并发解决示例

互相交流入口地址 整体目录&#xff1a; 【一】springboot整合swagger 【二】springboot整合自定义swagger 【三】springboot整合token 【四】springboot整合mybatis-plus 【五】springboot整合mybatis-plus 【六】springboot整合redis 【七】springboot整合AOP实现日志操作 【…

信钰证券:股市牛市有什么特征?存在以下八大特征

股市牛市存在以下特征&#xff1a; 1、大盘在底部呈现接连的阳K线&#xff0c;一起大盘指数突破上方重要的关口&#xff0c;这说明大盘突破上方压力方位&#xff0c;把转换成支撑方位&#xff0c;行将开启上涨趋势&#xff0c;创建新高。 2、市场上的资金大量流入&#xff0c…

基于php的用户登录实现(v1版)(持续迭代)

目录 版本说明 数据库连接 登录页面&#xff1a;login.html 登录处理实现&#xff1a;login.php 用户欢迎页面&#xff1a;welcome.php 用户注册页面&#xff1a;register.html 注册执行&#xff1a;DoRegister.php 版本说明 v1实现功能&#xff1a; 数据库连接&#x…

图片如何压缩到200k以下?3个图片压缩技巧分享

图片如何压缩到200k以下&#xff1f;在日常生活中&#xff0c;将图片压缩至200K以下至关重要。这不仅能有效节省存储空间&#xff0c;让手机或电脑运行的更流畅&#xff0c;还能显著加快网络传输速度&#xff0c;提升分享和上传体验。同时&#xff0c;许多平台对上传图片的大小…