localGPT:隐私安全的本地文档问答
随着LLM大语言模型兴起,各种LLM应用层出不穷,使用在线ChatGPT当然性能最强,但存在数据泄漏的担忧。
正好前不久有朋友问起,是否有本地的chatPDF项目?周末花时间研究了下,发现localGPT这个项目非常不错,已累积8.5K星星。
既然是基于本地,限于硬件性能,只能跑一些"小"模型,效果肯定要比 ChatGPT 差不少。但亮点是私密,应付一些简单的需求也是可以的。
localGPT 从 privateGPT上得来灵感,更优的是,他默认使用了GPU 进行推理,速度更快。并且很方便切换模型,以及支持API访问。
localGPT使用了LangChain, Chroma, SentenceTransformers和AutoGPTQ进行构建。
创建环境
使用python3.9,其他更高版本也可以,只是要注意,cuda, pytorch, python, torchvision 要配套对应。
conda create -n localGPT python=3.9
activate localGPT
pip install d:\pylib\torch-2.0.0+cu117-cp39-cp39-win_amd64.whl
pip install d:\pylib\torchvision-0.15.0+cu117-cp39-cp39-win_amd64.whl
cd d:\aiworkflow
git clone https://github.com/PromtEngineer/localGPT.git
cd localGPT
pip install -r requirements.txt
如果使用GPU进行推理,则安装 AutoGPTQ。
cd ..
git clone https://github.com/PanQiWei/AutoGPTQ.git
cd AutoGPTQ
git checkout v0.2.2
pip install .
设定模型目录
如果不设置,则默认到 C 盘下
set TRANSFORMERS_CACHE=D:\models\localGPT
模型下载、推埋
推理阶段,会自动从抱抱脸下载所需模型(所需空间 3.62GB):
文档分析
将待分析的文档,放到一个目录内,我丢了一份gd32的 datasheet 给他分析。文档目录就建在工程目录之下,然后再建一个存储向量数据库的目录 gd32db。
修改 constants.py
SOURCE_DIRECTORY = f"{ROOT_DIRECTORY}/gd32"
PERSIST_DIRECTORY = f"{ROOT_DIRECTORY}/gd32db"
文档格式支持 .txt, .pdf, .csv, 和 .xlsx。如果你是其他格式的文档,则需先转换为上述格式。
进行文档分析:
cd d:\aiworkflow\localGPT\
python ingest.py
稍等片刻,程序运行完会自动退出,此时在 gd32db 目录下,可以看到 chroma 数据库文件
推理
python run_localGPT.py
提了几个简单问题,localGPT都回答正确。
localGPT使用了AutoGPT项目来管理模型,所以能轻易修改模型名称,以切换不同的模型来推理:
如下修改,重新启动,就能直接下载13b模型,并用于新的推理:
model_id = "TheBloke/Nous-Hermes-13B-GPTQ"
model_basename = "nous-hermes-13b-GPTQ-4bit-128g.no-act.order"
提供了简洁的webUI访问方式,并且在回答中,显示了答案的引用来源:
项目亮点:
- 本地部署,隐私性强
- 支持多种文件格式: .txt, .pdf, .csv, 和 .xlsx
- 默认GPU推理,推理速度快
- 使用AutoGPT管理模型,切换模型很方便
- 提供API/WebUI方问,能方便与其他工具集成,也方便普通用户使用
github.com/PromtEngineer/localGPT