Chat with your documents on your local device using GPT models. No data leaves your device and 100% private.
localGPT基本信息
localGPT介绍
localGPT
localGPT 是一个基于 GPT-4 的项目,灵感来自于原始的 privateGPT。这里的大部分描述都是受到原始 privateGPT 的启发。
对于项目的详细概述,请观看以下视频:
在这个模型中,我用 Vicuna-7B 模型替换了 GPT4ALL 模型,并使用 InstructorEmbeddings 替代了原始 privateGPT 中使用的 LlamaEmbeddings。嵌入和 LLM 都将在 GPU 上运行,也支持在没有 GPU 的情况下使用 CPU(请参见下面的说明)。
在没有网络连接的情况下,使用 LLM 的强大功能,可以对文档提问。100% 的隐私保护,没有任何数据会离开您的执行环境。您可以摄取文档并在没有网络连接的情况下提问!
使用 LangChain、Vicuna-7B(以及更多!)和 InstructorEmbeddings 构建,使用了私有的 GPT 模型。
环境设置
安装 conda
conda create -n localGPT
激活环境
conda activate localGPT
为了设置您的环境以运行此处的代码,首先安装所有的依赖项:
pip install -r requirements.txt
如果您想要使用 BLAS 或 Metal 与 llama-cpp,可以设置适当的标志:
# 示例:cuBLAS
CMAKE_ARGS="-DLLAMA_CUBLAS=on" FORCE_CMAKE=1 pip install -r requirements.txt
Docker
在 Nvidia GPU 上安装所需的用于 GPU 推断的软件包,如 gcc 11 和 CUDA 11,可能会导致与系统中的其他软件包发生冲突。
作为 Conda 的替代方案,您可以使用提供的 Dockerfile 和 Docker 运行时。
它包含 CUDA,您的系统只需要 Docker、BuildKit、Nvidia GPU 驱动程序和 Nvidia 容器工具包。
使用 docker build . -t localgpt
进行构建,需要 BuildKit。
Docker BuildKit 目前在 docker build 时不支持 GPU,只在 docker run 时支持 GPU。
测试数据集
此存储库使用 美国宪法 作为示例。
自定义数据集的摄取说明
将任何和所有的 .txt、.pdf 或 .csv 文件放入 SOURCE_DOCUMENTS 目录中。 在 load_documents() 函数中,将 docs_path 替换为您的 source_documents 目录的绝对路径。
运行以下命令以摄取所有数据。
默认为 cuda
python ingest.py
使用 device type 参数来指定给定的设备。
python ingest.py --device_type cpu
使用 help 来获取支持的设备列表。
python ingest.py --help
它将创建一个包含本地向量存储的索引。所需时间取决于您的文档大小。
您可以摄取任意数量的文档,所有文档都将累积在本地嵌入数据库中。
如果要从空数据库开始,请删除 index
。
注意:第一次运行时,它需要互联网连接下载嵌入模型。之后,您可以关闭互联网连接,脚本推理仍然可以工作。没有数据离开您的本地环境。
向文档提问,本地运行!
为了提问,请运行以下命令:
python run_localGPT.py
等待脚本需要您的输入。
> Enter a query:
按回车键。等待 LLM 模型消耗提示并准备答案。完成后,它将打印答案和用于答案的上下文中的 4 个来源文档;然后您可以提出另一个问题,无需重新运行脚本,只需等待提示即可。
注意:第一次运行时,它需要互联网连接下载 vicuna-7B 模型。之后,您可以关闭互联网连接,脚本推理仍然可以工作。没有数据离开您的本地环境。
输入 exit
结束脚本。
在 CPU 上运行
默认情况下,localGPT 将使用 GPU 运行 ingest.py
和 run_localGPT.py
脚本。但是,如果您没有 GPU,并且希望在 CPU 上运行,现在可以这样做(警告:速度会很慢!)。您需要在这两个脚本中使用 --device_type cpu
标志。
对于摄取,运行以下命令:
python ingest.py --device_type cpu
为了提问,请运行以下命