HomeLab迷你小主机(x86):Docker部署开源自托管笔GPT 支持的文档聊天DocsGPT(构建企业知识库)

NO.1
DocsGPT简介

github地址

https://github.com/arc53/DocsGPT

官网地址

https://docsgpt.arc53.com/

DocsGPT是一种开源解决方案,可简化在项目文档中查找信息的过程。

通过集成强大的GPT模型,开发人员可以轻松提出有关项目的问题并获得准确的答案。

告别耗时的手动搜索,让DocsGPT帮助快速找到所需的信息尝试一下,看看它如何彻底改变项目文档体验。

img

NO.2
DocsGPT简介

官方安装文档

https://docs.docsgpt.co.uk/Deploying/Quickstart

特别注意

  1. 网络如果能访问谷歌最好,如果不能访问但是中间遇到卡住的可以更换docker镜像源为阿里等(尽可能是千兆网速,如果下载几M/S,半天就没了)

  2. 基础安装和启动要有30GB以上的磁盘空间预留,如需下载本地模型,则需要基础镜像30GB+15GB(llama.cpp),至少50GB的磁盘空间预留(小心磁盘不足)

  3. 建议有显卡以及已经安装了对应的显卡驱动(如果使用OpenAI的Key,这条可以略过)

  4. 准备好前置环境,如python v3.10等

本文环境为ubuntu server 22.04,python 3.10.9

拉取仓库

git clone https://github.com/arc53/DocsGPT.git

img

根目录下创建一个.env配置文件

文件内容填写API_KEY(OpenAI Key)(如果你有Key的话)

API_KEY=123456
VITE_API_STREAMING=true

img

执行以下命令,构建镜像并启动

docker-compose build && docker-compose up

img

看到如下提示

说明服务启动成功

img

img

开放端口 5173

sudo ufw allow 5173
NO.3
DocsGPT使用

访问ip:端口

进入到首页

img

这个问题是由于docker-compose.yml配置文件映射的项目ip不对

因为docker有自己的network,所以我们需要把localhost改为部署docsgpt这台服务器的ip地址

参考文档

https://github.com/arc53/DocsGPT/issues/215

修改VITE_API_HOST地址为ip地址

同时服务器防火墙开发对应的端口,以便docker服务可以访问到

sudo ufw allow 7091

img

ctrl+c关闭当前docker-compose服务

然后重新启动docker-compose服务

docker-compose up

重新打开网页

这个时候可以看到下拉选项了

本文选择默认,点击保存

img

发送消息

提示出错

img

查看终端

提示OpenAi的Key不对

img

如何改为使用本文模型

参考官方文档

https://docs.docsgpt.co.uk/Guides/How-to-use-different-LLM

官方默认使用OpenAI,如需要指定使用本地LLM,则需要修改.env文件

参考下列表格

模型 信息
Arc53/docsgpt-7b-falcon 需要1个A10G GPU
Arc53/docsgpt-14b 需要2个A10G GPU
llama.cpp 7B模型需要大约4GB,13B模型需要大约8GB,30B模型需要大约16GB,64B模型需要大约32GB
OpenAI GPT-3模型有1750亿个参数,内存大小超过350GB

以本文的配置而言

只能选择llama.cpp尝试一下

下载模型

https://d3dg1063dc54p9.cloudfront.net/models/docsgpt-7b-f16.gguf

img

项目内新建一个models文件夹

把模型放进去

img

如果需要本地运行,需要执行命令

./setup.sh

然后输入1,回车

可以看到1就是我们本地的模型

img

但是看到错误提示

ModuleNotFoundError: No module named 'dotenv'

img

需要安装python-dotenv的包

pip install python-dotenv

再次遇到错误

ModuleNotFoundError: No module named 'celery'

img

继续安装对应的包

pip install celery

持续报错…

ModuleNotFoundError: No module named 'pymongo'

img

继续安装

pip install pymongo

继续报错…….

ModuleNotFoundError: No module named 'langchain'

img

继续安装…

pip install langchain

继续报错

ModuleNotFoundError: No module named 'tiktoken'

img

继续安装

pip install tiktoken

继续报错

ModuleNotFoundError: No module named 'elasticsearch'

img

继续安装

pip install elasticsearch

继续报错

ModuleNotFoundError: No module named 'retry'

img

继续安装

pip install retry

继续报错

AttributeError: 'NoneType' object has no attribute 'Redis'

继续安装

pip install redis

启动成功

img

使用setup.sh后,它会自动修改.env配置文件

LLM_NAME=llama.cpp
VITE_API_STREAMING=true
EMBEDDINGS_NAME=huggingface_sentence-transformers/all-mpnet-base-v2

img

访问首页

发送消息

报错

img

安装

pip install sentence-transformers

上传文档

报错

ImportError: Could not import faiss python package. Please install it with `pip install faiss-gpu` (for CUDA supported GPU) or `pip install faiss-cpu` (depending on Python version).

img

如果你的机器支持CUDA(即你有NVIDIA的GPU),你可以使用以下命令安装:

pip install faiss-gpu

如果你的机器不支持CUDA(即你没有NVIDIA的GPU),或者你只想在CPU上运行,你可以使用以下命令安装:

pip install faiss-cpu

报错

ModuleNotFoundError: No module named 'llama_cpp'

img

安装

pip install llama-cpp-python

再次发送请求成功

img

同步可以看到后台的请求解析

img

NO.4
注意事项

本文没有使用OpenAI Key

如果有的话,理论上不需要解决一堆本地模型解析遇到的依赖错误问题

使用本地模型 setup.sh选1,记得把docker-compose-local.yaml文件中的localhost改为你服务器的ip地址

不然在另一个客户端访问时会报localhost跨域,找不到接口

img

另外每次ctrl c或者z关掉setup.sh的进程时

实际上7091后端和5173的端口还一直被占用着

需要及时杀掉进程

如下图

查看进程pid

lsof -i:端口号

杀掉进程

kill -9 id

img

可以看到文档已经上传成功

但是目前还不知道怎么使用,发送消息,可能文档较少或者没有经过预训练

没有知识库的对答

img

NO.5
Tips

目前本地部署成功,使用本地模型成功(Llama)

上传test.txt文档成功,使用该文档对话成功

建议

部署项目时,先试用python虚拟环境(创建python3.10环境以及依赖包隔离,不影响宿主机环境)(方便中途遇到问题,可以随时切换新的python环境尝试)

多看官方文档,有问题可以问ChatGpt和New Bing Chat

END.

觉得本文还行,不妨顺手点赞收藏,下期见。

推荐阅读

<<HomeLab迷你小主机(x86):Docker部署自托管笔记(仅私有化部署)为知笔记WizNote>>

<<HomeLab迷你小主机(x86):Docker部署开源云手机(安卓)redroid>>

☕ 朋友,都看到这了,确定不关注一下么? 👇