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

此学习教程结合本人安装经验主要提供给想学习和本地安装使用LangChain-Chatchat的同学们,该教程如有描述不当或者引用不正确的地方,欢迎指出!后续也会更新如何结合自己系统使用。

介绍

基于 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知识库接口,并且包含丰富的前端页面及管理后台配置,需要的可以移步查看。

原理介绍

官方原理介绍视频

【LangChain-Chatchat】本地部署模型及搭建个人/企业内部知识库_第1张图片

环境搭建

本环境按照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版本对照

torch torchvision Python
main / nightly main / nightly >=3.8, <=3.11
2.2 0.17 >=3.8, <=3.11
2.1 0.16 >=3.8, <=3.11
2.0 0.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官网

【LangChain-Chatchat】本地部署模型及搭建个人/企业内部知识库_第2张图片

# 该项目pytorch为2.1.2,参照pytorch官网 找到匹配版本 CUDA 12.1,执行下面命令
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia
  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上下载代码

【LangChain-Chatchat】本地部署模型及搭建个人/企业内部知识库_第3张图片

  • 使用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 OK
  • 启动界面示例 (可单独只启动api服务,具体可看启动命令)
  1. 默认web端口:8501
  2. 默认API端口:7861 (可用于其他系统对接)

【LangChain-Chatchat】本地部署模型及搭建个人/企业内部知识库_第4张图片

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

【LangChain-Chatchat】本地部署模型及搭建个人/企业内部知识库_第5张图片

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

二、640套AI大模型报告合集

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

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

你可能感兴趣的:(langchain,人工智能,ai,大模型,语言模型,自然语言处理)