Langchain-Chatchat 简介
Langchain-Chatchat 是一个基于 ChatGLM 等大语言模型与 Langchain 应用框架实现的开源项目,支持检索增强生成 (RAG) 的大模型知识库。该项目旨在建立一套对中文场景与开源模型支持友好、可离线运行的知识库问答解决方案。依托于支持的开源 LLM 与 Embedding 模型,可实现全部使用开源模型进行离线私有部署,同时也支持 OpenAI GPT API 的调用。
实现原理
本项目全流程使用开源模型来实现本地知识库问答应用。最新版本中通过使用 FastChat 接入 Vicuna, Alpaca, LLaMA, Koala, RWKV 等模型,依托于 langchain 框架支持通过基于 FastAPI 提供的 API 调用服务,或使用基于 Streamlit 的 WebUI 进行操作。
数据处理流程主要包括文档解析、文本切片、向量化存储及检索生成。用户无需涉及微调训练过程,但可利用微调或训练对本项目效果进行优化。
部署要求
软件要求:
- 操作系统:Linux Ubuntu 22.04.5 kernel version 6.7(其他系统可能出现兼容性问题)。
- Python 版本:>= 3.8 (< 3.12),推荐 == 3.11.7。
- CUDA 版本:>= 12.1,推荐 == 12.1。
硬件要求:
若要在 GPU 运行本地模型的 FP16 版本以保证稳定连续对话,建议配置如下:
- 7B 模型 (如 ChatGLM3-6B & LLaMA-7B-Chat):最低显存 14GB,推荐显卡 RTX 4080。
- 14B 模型 (如 Qwen-14B-Chat):最低显存 30GB,推荐显卡 V100。
- 34B 模型 (如 Yi-34B-Chat):最低显存 69GB,推荐显卡 A100。
- 72B 模型 (如 Qwen-72B-Chat):最低显存 145GB,推荐多卡 A100 以上。
实际部署配置示例:
处理器:Intel® Core™ i9 processor 14900K
内存:256 GB DDR5
显卡组:NVIDIA RTX4090 X 1 / NVIDIA RTXA6000 X 1
硬盘:1 TB
操作系统:Ubuntu 22.04 LTS / Arch Linux, Linux Kernel 6.6.7
显卡驱动版本:545.29.06
Cuda 版本:12.3 Update 1
Python 版本:3.11.7
部署方案
Docker 部署
开发组提供了一键部署的 docker 镜像文件。开发者可以在 AutoDL 平台和 Docker 平台一键部署。
docker run -d --gpus all -p 80:8501 isafetech/chatchat:0.2.10
docker run -d --gpus all -p 80:8501 ccr.ccs.tencentyun.com/chatchat/chatchat:0.2.10
docker run -d --gpus all -p 80:8501 registry.cn-beijing.aliyuncs.com/chatchat/chatchat:0.2.10
该版本镜像大小约 50.1GB,基于 nvidia/cuda:12.1.1-cudnn8-devel-ubuntu22.04。内置并默认启用 Embedding 模型 bge-large-zh-v1.5 和 ChatGLM3-6B。请确保已在 Linux 发行版上安装了 NVIDIA 驱动程序及 NVIDIA Container Toolkit。
本地部署方案
- 安装 python 环境
$ conda create -n env_name python=3.8
$ conda activate env_name
$ pip3 install --upgrade pip
- 安装项目依赖
$ git clone --recursive https://github.com/chatchat-space/Langchain-Chatchat.git
$ cd Langchain-Chatchat
$ pip install -r requirements.txt
可选依赖说明:
- 使用 milvus/pg_vector 等向量库:取消 requirements.txt 中相应依赖注释再安装。
- 开启 OCR GPU 加速:安装 rapidocr_paddle[gpu]。
- 使用在线 API 模型:安装对应的 SDK。
- 下载模型
如需在本地或离线环境下运行,需将项目所需的模型下载至本地。通常开源 LLM 与 Embedding 模型可从 HuggingFace 下载。
$ git lfs install
$ git clone https://huggingface.co/THUDM/chatglm2-6b
$ git clone https://huggingface.co/moka-ai/m3e-base
- 初始化数据库
当前项目的知识库信息存储在数据库中,正式运行前请先初始化。
$ python init_database.py --create-tables
$ python init_database.py --recreate-vs
- 启动服务
使用一键启动脚本 startup.py,启动所有 Fastchat 服务、API 服务、WebUI 服务。
$ python startup.py -a
轻量模式 (Lite Mode)
对于没有显卡的用户,项目提供 lite 模式。该模式配置方式与常规模式相同,但无需安装 torch 等重依赖,通过在线 API 实现 LLM 和 Embeddings 相关功能。
$ pip install -r requirements_lite.txt
$ python startup.py -a --lite
该模式支持的在线 Embeddings 包括智谱 AI、MiniMax、百度千帆、阿里云通义千问等。需在 model_config.py 中将 LLM_MODELS 和 EMBEDDING_MODEL 设置为可用的在线 API 名称。
总结
Langchain-Chatchat 针对当前热门的 AI 知识库给出了一种非常好的构建方式,实现了全链条的开源产品。无论是希望直接使用它来构建知识库,还是希望通过本项目学习和实现自己的解决方案,都是很好的选择。建议深入研究项目的架构设计,因为这是此类项目最精华的部分。