🔥🔥🔥没独显👐照样ChatGLM-6B+Langchain知识库💪

1,378 阅读3分钟

🎈前言

近来刷到不少大模型的文章,趁着五一拿ChatGLM3-6B搞一个知识库练练手,但是没有独显真的是硬伤,一路处处踩雷。总算是搞出来了一个还过得去的知识库,响应速度在能接受的范围内,这里记录一下,也希望能帮助想要尝试大模型的各位避下雷。

📄软硬件配置

硬件

  • CPU(13th Inter core i5-13400):10核16线程
  • 内存:32GB
  • 显卡:核显
  • 固态硬盘:1T

软件

模型比较大,下载速度比较慢

🎥效果展示

动图左上角为量化后的ChatGLM3-6B,旁边为Langchain-Chatchat

LLM对话

首次对话速度会慢点,之后对话速度会快很多 大模型对话.gif

知识库问答

知识库问答.gif

Docker配置启动

不使用WSL image.png 设置CPU、内存等配置的大小 image.png docker-compose.yml

# 安装docker-compose:pip install --upgrade pip;pip install docker-compose
# 部署命令:docker-compose up -d
# 关闭卸载:docker-compose down
# 描述 Compose 文件的版本信息
version: '3'
# 定义服务,可以多个
services:
  chatglm-cpp: # 服务名称
    image: python:3.11-slim
    container_name:  chatglm-cpp # 容器名称
    # 网络模式:host使用宿主机的ip配置,不针对容器单独分配
    # network_mode: "host"
    ports:
      - 7860:7860
    volumes: # 目录挂载
     - ./chatglm.cpp:/app/chatglm.cpp
    command: tail -f /dev/null

目录

└── project
    ├── chatglm.cpp # chatglm.cpp源码
    │   ├── chatglm_cpp # 安装chatglm.cpp生成的目录
    │   ├── chatglm_cpp-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl # 启动所需要的whl
    │   ├── bge-large-zh-v1.5 # bge-large-zh-v1.5目录
    │   │   ├── pytorch_model.bin # 模型
    │   │   └── ...
    │   ├── Langchain-Chatchat # Langchain-Chatchat源码
    │   │   ├── configs # 配置文件目录
    │   │   └── ...
    │   ├── models # 模型
    │   │   ├── chatglm3-6b # chatglm3-6b目录
    │   │   ├── chatglm3-ggml.bin # 使用chatglm_cpp量化后的模型
    │   │   └── ...
    │   └── ...
    └── docker-compose.yml

启动

docker-compose up -d

💾安装Chatglm.cpp

cd /app/chatglm.cpp

python3 -m pip install -U pip

# 安装需要的组件
python3 -m pip install torch tabulate tqdm transformers accelerate sentencepiece

# 量化模型
python3 /app/chatglm.cpp/chatglm_cpp/convert.py -i /app/chatglm.cpp/models/chatglm3-6b -t q4_0 -o /app/chatglm.cpp/models/chatglm3-ggml.bin
# 安装whl,这个文件可以在github上下载自己需要的
pip install chatglm_cpp-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

# 安装API所需要的组件
pip install 'chatglm-cpp[api]'

# !!!着重注意,启动需要的pydantic版本为2.7.1。而Langchain需要的pydantic是1.10.11,两个版本是冲突的
pip install pydantic==2.7.1

cd /app/chatglm.cpp/chatglm_cpp
# OPEN API模式启动
MODEL=../models/chatglm3-ggml.bin uvicorn chatglm_cpp.openai_api:app --host 127.0.0.1 --port 8000

安装LangChain

cd /app/chatglm.cpp/Langchain-Chatchat

# 安装Langchain-Chatchat
pip install -r requirements.txt
pip install -r requirements_api.txt
pip install -r requirements_webui.txt

# 修改配置文件之前执行这个命令
python copy_config_example.py

修改/app/chatglm.cpp/Langchain-Chatchat/configs/model_config.py中以下内容:
"openai-api": {
"model_name": "gpt-4",
"api_base_url": "http://127.0.0.1:8000/v1",
"api_key": "123",
"openai_proxy": "http://127.0.0.1:8000",
}

 "embed_model": {
   ...
   "bge-large-zh-v1.5": "/app/chatglm.cpp/bge-large-zh-v1.5",
   ...
 }

修改/app/chatglm.cpp/Langchain-Chatchat/configs/server_config.py中的8501端口号为7860

# 降级

pip install pydantic==1.10.11

python startup.py -a --model-name openai-api

🔍初始化FAISS向量库

cd /app/chatglm.cpp/Langchain-Chatchat

python init_database.py --recreate-vs

📖LangChain + Chatglm3-6B + bge-large-zh + FAISS = 知识库

开两个命令行窗口,LangChain-Chatchat通过open api的方式接入Chatglm3-6B

# 窗口1启动Chatglm3-CPP

cd /app/chatglm.cpp/chatglm_cpp

# !!!着重注意,启动chatglm需要的pydantic版本为2.7.1。而Langchain需要的pydantic是1.10.11,两个版本是冲突的
pip install pydantic==2.7.1

MODEL=../models/chatglm3-ggml.bin uvicorn chatglm_cpp.openai_api:app --host 127.0.0.1 --port 8000
# 窗口2启动LangChain

cd /app/chatglm.cpp/Langchain-Chatchat

# !!!着重注意,启动chatglm需要的pydantic版本为2.7.1。而Langchain需要的pydantic是1.10.11,两个版本是冲突的
pip install pydantic==1.10.11

python startup.py -a --model-name openai-api

💌最后

有问题或者想法的话,欢迎大家在评论区沟通📞

希望大家能点个赞和收藏支持一下,灰常感谢💪