【LangChain-Chatchat】本地部署模型及搭建个人企业内部知识库

img

💡 此学习教程结合本人安装经验主要提供给想学习和本地安装使用LangChain-Chatchat的同学们,该教程如有描述不当或者引用不正确的地方,欢迎指出!后续也会更新如何结合自己系统使用。原文地址:链接,如有疑问可添加微信沟通:Y-1994x

感谢作者开源的项目👍👍👍

Git地址: 传送门

Git地址: 传送门

介绍🌈🌈🌈

基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现,开源、可离线部署的检索增强生成(RAG)大模型知识库项目。

该项目支持开源 LLM 与 Embedding 模型,亦可实现全部使用开源 模型离线私有部署 。与此同时,也支持 OpenAI GPT API 的调用,当前最新版本为0.2.10。0.3x版本可以关注作者的项目地址。

  • 支持加载本地模型及联网模型如智谱AI、阿里云通义千问、百川、讯飞星火、百度千帆、字节火山方舟、ChatGPT、Gimini和Azure OpenAI
  • 支持知识库,支持Embedding 模型,详细支持模型介绍可查看支持列表
  • 提供API接口,可快速搭建自己或者公司的知识库,并嵌入到内部系统中(参考教材待完善)

使用该项目也是因为需要本地运行模型且需要知识库功能,适合大家快手上手llm。该项目可配套chat-master使用,后端采用Java开发进行对接Langchain-Chatchat知识库接口,并且包含丰富的前端页面及管理后台配置,需要的可以移步查看。

原理介绍

📺 官方原理介绍视频

img

环境搭建🔫

💡 本环境按照LangChain-Chatchat版本要求安装,笔者本人电脑:windows i7 -14700 +32G内存 及 4070Super显卡 可用显存28G

环境要求

软件要求
  • conda(非必需但是建议)conda提供环境隔离,基于不同的项目启用对应的软件环境
  • cuda 12.1
  • python 3.11.7
  • pytorch 2.1.2
  • torchvision 0.16.2

注意事项:

1、python和torch版本对照表,确定二者是否适配。官方版本对照表

2、确定CUDA版本对应的pytorch版本。pytorch官网

3、Conda是一个开源的软件包管理系统和环境管理系统。

‼️如有同学无法访问官方地址,也可直接查看下表:python和torch版本对照

torchtorchvisionPython
main / nightlymain / nightly>=3.8, <=3.11
2.20.17>=3.8, <=3.11
2.10.16>=3.8, <=3.11
2.00.15>=3.8, <=3.11
硬件要求

详细参考地址:硬件要求

如果想要顺利在GPU运行本地模型的 FP16 版本,你至少需要以下的硬件配置,来保证能够实现稳定连续对话

  • ChatGLM3-6B & LLaMA-7B-Chat 等 7B模型

  • * 最低显存要求: 14GB
    
    • 推荐显卡: RTX 4080
  • Qwen-14B-Chat 等 14B模型

  • * 最低显存要求: 30GB
    
    • 推荐显卡: V100
  • Yi-34B-Chat 等 34B模型

  • * 最低显存要求: 69GB
    
    • 推荐显卡: A100
  • Qwen-72B-Chat 等 72B模型

  • * 最低显存要求: 145GB
    
    • 推荐显卡:多卡 A100 以上

环境安装

使用conda安装(推荐)
  1. 下载conda
  • conda下载地址:点击下载

  • 下载后直接运行安装程序,如安装位置为 C:\Program Files\conda

  • 配置环境变量

    setx PATH “%PATH%;C:\Program Files\conda\Scripts;C:\Program Files\conda\Library\bin”

  1. 使用指定python版本安装conda,该项目推荐使用python版本为3.7.11,即使用3.7.11
# 可以直接指定python版本安装conda
C:\Users\Administrator>conda create --name Langchain-Chatchat python=3.7.11
  1. 激活conda环境
C:\Users\Administrator>conda activate Langchain-Chatchat
# 左边出现(Langchain-Chatchat)即为已进入名为`Langchain-Chatchat`的conda环境
(Langchain-Chatchat) C:\Users\Administrator>
  1. 安装匹配的pytorch及cuda,参照 pytorch官网

在这里插入图片描述

# 该项目pytorch为2.1.2,参照pytorch官网 找到匹配版本 CUDA 12.1,执行下面命令
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=
  1. 测试是否安装成功
# 进入python交互式命令行查看安装的对应的cuda版本是否可以
(Langchain-Chatchat) PS E:\Code\llm\Langchain-Chatchat> python
Python 3.11.8 | packaged by Anaconda, Inc. | (main, Feb 26 2024, 21:34:05) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print(torch.cuda.is_available())
True
>>>
# 出现True及代表可以,若为False即版本不匹配
  • conda常用命令参考👓

    创建新环境

    conda create --name Langchain-Chatchat

    二选一

    创建指定python版本的conda环境

    conda create --name Langchain-Chatchat python=3.7.11

    激活Langchain-Chatchat环境

    conda activate myenv

    退出Langchain-Chatchat环境

    conda deactivate

    列出所有环境

    conda env list

    移除 Langchain-Chatchat环境

    conda remove --name Langchain-Chatchat --all

不适用conda安装
  1. 安装pyenv(推荐)

pyenv为python版本管理工具,可以允许在系统中管理和切换多个python版本。如不需要可直接跳过

  • 下载pyenv-win,点击查看安装教程
  • 安装完记得添加到系统环境变量中,同样可以搜索mac/linux教程
  1. 使用pyenv安装python或直接安装python
# 安装python版本3.11.8
pyenv install 3.11.8
# 查看版本信息
python --version
  1. 安装cuda
pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu121
  1. 测试是否安装成功
# 进入python交互命令行
python
# 出现如下命令行
Python 3.11.8 | packaged by Anaconda, Inc. | (main, Feb 26 2024, 21:34:05) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print(torch.cuda.is_available())
True
>>>
# 出现True及代表可以,若为False即版本不匹配
  • pyenv常用命令

    查看当前使用python版本

    pyenv version

    查看当前系统拥有的python版本

    pyenv versions

    查看可以安装的版本

    pyenv install --list

    安装指定版本

    pyenv install 3.11.8

    卸载指定版本

    pyenv uninstall 3.11.8

    设置当前目录及子目录使用版本

    pyenv local 3.11.8

    设置全局使用版本

    pyenv global 3.11.8

    重建环境变量

    pyenv rehash

下载模型及Langchain-Chatchat代码⛄

如需在本地或离线环境下运行本项目,需要首先将项目所需的模型下载至本地,通常开源 LLM 与 Embedding 模型可以从 HuggingFace 下载或者modelscope下载。

🔥🔥🔥这里再推荐几个国内模型平台社区

模型平台

  1. 魔搭社区:地址
  2. 启智社区:地址
  3. OpenLab浦源:地址
  4. GiteeAI:地址

模型下载

下载模型需要好几个G,所以这里下载的时候需要稍等一会,不妨可以看下chat-master项目。

  • 推荐安装目录

    代码目录为自己习惯的代码地址

    模型文件夹 以chatglm3-6b和bge-large-zh为例

    注意下载模型时候 THUDM和BAAI文件夹

    /代码目录/llm/models/THUDM/chatglm3-6b
    /代码目录/llm/models/BAAI/bge-large-zh

    代码文件夹,如下载的Langchain-Chatchat

    /代码目录/llm/Langchain-Chatchat

  • 下载模型需要先安装 Git LFS

    安装 Git LFS

    git lfs install

  • 从huggingface下载模型

    下载chatglm3模型

    cd /代码目录/llm/models/THUDM
    git clone https://huggingface.co/THUDM/chatglm3-6b

    下载bge切入模型

    /代码目录/llm/models/BAAI
    git clone https://huggingface.co/BAAI/bge-large-zh

  • 如 HuggingFace无法下载可从modelscope下载模型

    下载chatglm3模型

    cd /代码目录/llm/models/THUDM
    git clone https://www.modelscope.cn/ZhipuAI/chatglm3-6b.git

    下载bge切入模型

    cd /代码目录/llm/models/BAAI
    git clone https://www.modelscope.cn/AI-ModelScope/bge-large-zh-v1.5.git

LangChain-Chatchat下载

  • 可直接从Github上下载代码

img

  • 使用Git Clone代码

    进入代码存放目录

    cd /代码目录/llm
    git clone https://github.com/chatchat-space/Langchain-Chatchat.git

启动模型🧑‍💻

🌟🌟🌟可自行选择使用PyCharm或vscode编辑器打开Langchain-Chatchat项目,以下命令交互注意在Langchain-Chatchat代码目录下

  • 如坏境安装中使用conda安装则进入conda环境

    进入Langchain-Chatchat项目的终端

    如已在当前项目文件夹 可跳过

    cd /代码目录/llm/Langchain-Chatchat

    激活conda环境

    conda activate Langchain-Chatchat

修改配置文件

  • 初始化配置文件

    该执行是将configs下配置文件名后缀为example的去除 并复制到新的文件中

    python copy_config_example.py

  • 修改configs/model_config.py配置文件中本地模型地址(大约第6行)

    可以指定一个绝对路径,统一存放所有的Embedding和LLM模型。

    每个模型可以是一个单独的目录,也可以是某个目录 下的二级子目录。

    如果模型目录名称和 MODEL_PATH 中的 key 或 value 相同,程序会自动检测加载,无需修改 MODEL_PATH 中的路径。

    MODEL_ROOT_PATH = “/根目录/Code/llm/models”

初始化知识库

python init_database.py --recreate-vs

启动

如想多卡加载及其他部署方案,可查看原教程:传送门

启动前请先确认cuda版本是否与pytorch匹配,避免启动失败 ⬆️ 环境安装,如已安装可执行下述命令。

# 一键启动 包含 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

启动成功

  • 启动成功控制台显示

    INFO: 127.0.0.1:50408 - “POST /knowledge_base/search_docs HTTP/1.1” 200 OK
    2024-04-19 13:30:10,230 - _client.py[line:1027] - INFO: HTTP Request: POST http://127.0.0.1:7861/knowledge_base/search_docs “HTTP/1.1 200 OK”
    INFO: 127.0.0.1:50409 - “POST /knowledge_base/search_docs HTTP/1.1” 200 OK
    2024-04-19 13:30:10,371 - _client.py[line:1027] - INFO: HTTP Request: POST http://127.0.0.1:7861/knowledge_base/search_docs “HTTP/1.1 200 OK”
    2024-04-19 13:30:11,287 - _client.py[line:1027] - INFO: HTTP Request: POST http://127.0.0.1:20001/list_models “HTTP/1.1 200 OK”
    INFO: 127.0.0.1:50410 - “POST /llm_model/list_running_models HTTP/1.1” 200 OK
    2024-04-19 13:30:11,287 - _client.py[line:1027] - INFO: HTTP Request: POST http://127.0.0.1:7861/llm_model/list_running_models “HTTP/1.1 200 OK”
    2024-04-19 13:30:11,440 - _client.py[line:1027] - INFO: HTTP Request: POST http://127.0.0.1:20001/list_models “HTTP/1.1 200 OK”
    INFO: 127.0.0.1:50410 - “POST /llm_model/list_running_models HTTP/1.1” 200 OK
    2024-04-19 13:30:11,440 - _client.py[line:1027] - INFO: HTTP Request: POST http://127.0.0.1:7861/llm_model/list_running_models “HTTP/1.1 200 OK”
    INFO: 127.0.0.1:50410 - “POST /llm_model/list_config_models HTTP/1.1” 200 OK
    2024-04-19 13:30:11,475 - _client.py[line:1027] - INFO: HTTP Request: POST http://127.0.0.1:7861/llm_model/list_config_models “HTTP/1.1 200 OK”
    INFO: 127.0.0.1:50428 - “GET / HTTP/1.1” 307 Temporary Redirect
    INFO: 127.0.0.1:50428 - “GET /docs HTTP/1.1” 200 OK
    INFO: 127.0.0.1:50429 - “GET /static-offline-docs/swagger-ui-bundle.js HTTP/1.1” 200 OK
    INFO: 127.0.0.1:50428 - “GET /static-offline-docs/swagger-ui.css HTTP/1.1” 200 OK
    INFO: 127.0.0.1:50429 - “GET /openapi.json HTTP/1.1” 200 OK
    INFO: 127.0.0.1:50428 - “GET /static-offline-docs/favicon.png HTTP/1.1” 200 O

  • 启动界面示例 (可单独只启动api服务,具体可看启动命令)📲

  1. 默认web端口:8501
  2. 默认API端口:7861 (可用于其他系统对接)

img

常见问题🔞

  • 官方常见问题

Langchain-Chatchat1

AI大模型应用怎么学?

这年头AI技术跑得比高铁还快,“早学会AI的碾压同行,晚入门的还能喝口汤,完全不懂的等着被卷成渣”!技术代差带来的生存压力从未如此真实。
兄弟们如果想入门AI大模型应用,没必要到处扒拉零碎教程,我整了套干货大礼包:从入门到精通的思维导图、超详细的实战手册,还有模块化的视频教程!现在无偿分享。

1.学习思维导图

AI大模型应用所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

2.从入门到精通全套视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

3.技术文档和电子书

整理了行业内PDF书籍、行业报告、文档,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

朋友们如果有需要全套资料包,可以点下面卡片获取,无偿分享!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值