localGPT

应用集成

2024-10-26 19:35

LocalGPT是一项开源计划,它允许用户与文档进行交流而不会泄露隐私。由于一切都在本地运行,可以放心,没有任何数据会离开用户的计算机。使用 LocalGPT 深入了解安全的AI本地文档交互世界。

项目参数:

开源协议

Apache-2.0 license

开源组织

语言

英文

Fork数

Start数

项目介绍:

特点🌟

  • 最高程度的隐私:您的数据保留在您的计算机上,确保 100% 的安全。

  • 多种模型支持:无缝集成多种开源模型,包括HF、GPTQ、GGML和GGUF。

  • 多样化的嵌入:从一系列开源嵌入中进行选择。

  • 重复使用您的 LLM:下载后,可重复使用您的 LLM,无需重复下载。

  • 聊天记录:记住您之前的对话(在会话中)。

  • API:LocalGPT 有一个 API,您可以使用它来构建 RAG 应用程序。

  • 图形界面:LocalGPT 带有两个 GUI,一个使用 API,另一个是独立的(基于 streamlit)。

  • GPU、CPU 和 MPS 支持:开箱即用,支持多种平台,使用等CUDA与您的数据聊天!CPUMPS

通过我们的视频深入了解🎥

技术细节

通过选择正确的本地模型和功能,LangChain您可以在本地运行整个 RAG 管道,而无需任何数据离开您的环境,并且具有合理的性能。

  • ingest.py使用LangChain工具解析文档并使用在本地创建嵌入InstructorEmbeddings。然后使用向量存储将结果存储在本地向量数据库中Chroma

  • run_localGPT.py使用本地 LLM 来理解问题并创建答案。答案的上下文是从本地向量存储中提取的,使用相似性搜索从文档中找到正确的上下文。

  • 您可以使用 HuggingFace 的任何其他 LLM 替换此本地 LLM。请确保您选择的 LLM 为 HF 格式。

该项目的灵感来自于原始的privateGPT

使用🧩构建

环境设置🌍

  1. 📥 使用 git 克隆 repo:

git clone https://github.com/PromtEngineer/localGPT.git
  1. 🐍 安装conda进行虚拟环境管理。创建并激活新的虚拟环境。

conda create -n localGPT python=3.10.0
conda activate localGPT
  1. 🛠️使用 pip 安装依赖项

要设置环境来运行代码,首先安装所有要求:

pip install -r requirements.txt

安装LLAMA-CPP:

LocalGPT 使用LlamaCpp-Python用于 GGML(您将需要 llama-cpp-python <=0.1.76)和 GGUF(llama-cpp-python >=0.1.83)模型。

要运行量化的 Llama3 模型,请确保安装了 llama-cpp-python 版本 0.2.62 或更高版本。

如果您想将 BLAS 或 Metal 与llama-cpp一起使用,您可以设置适当的标志:

对于NVIDIAGPU 支持,请使用cuBLAS

# Example:
 cuBLASCMAKE_ARGS="-DLLAMA_CUBLAS=on"
 FORCE_CMAKE=1
 pip install llama-cpp-python --no-cache-dir

要获得 Apple Metal ( M1/M2) 支持,请使用

# Example:
 METALCMAKE_ARGS="-DLLAMA_METAL=on"
 FORCE_CMAKE=1
 pip install llama-cpp-python --no-cache-dir

更多细节请参考llama-cpp

Docker 🐳

在 NVIDIA GPU 上安装 GPU 推理所需的软件包(如 gcc 11 和 CUDA 11)可能会与系统中的其他软件包发生冲突。作为 Conda 的替代方案,您可以将 Docker 与提供的 Dockerfile 一起使用。它包括 CUDA,您的系统只需要 Docker、BuildKit、您的 NVIDIA GPU 驱动程序和 NVIDIA 容器工具包。构建为,需要 BuildKit。Docker BuildKit目前在docker 构建docker build -t localgpt .期间不支持 GPU ,仅在docker run期间支持 GPU 。以 运行。docker run -it --mount src="$HOME/.cache",target=/root/.cache,type=bind --gpus=all localgpt


摄取您自己的数据。

将文件放入SOURCE_DOCUMENTS文件夹中。您可以在文件夹中放置多个文件夹SOURCE_DOCUMENTS,代码将递归读取您的文件。

支持文件格式:

LocalGPT 目前支持以下文件格式。LocalGPT 用于LangChain加载这些文件格式。中的代码constants.py使用字典将文件格式映射到相应的加载器。为了添加对另一种文件格式的支持,只需从LangChainDOCUMENT_MAP中添加包含文件格式和相应加载器的字典即可。

DOCUMENT_MAP = {
    ".txt": TextLoader,
    ".md": TextLoader,
    ".py": TextLoader,
    ".pdf": PDFMinerLoader,
    ".csv": CSVLoader,
     ".xls": UnstructuredExcelLoader,
     ".xlsx": UnstructuredExcelLoader,
     ".docx": Docx2txtLoader,
     ".doc": Docx2txtLoader,
}

采集

运行以下命令来提取所有数据。

如果您cuda的系统上已经设置。

python ingest.py

你将看到如下输出: 

localGPT

使用设备类型参数指定给定的设备。要运行cpu

python ingest.py --device_type cpu

运行M1/M2

python ingest.py --device_type mps

使用帮助获取受支持设备的完整列表。

python ingest.py --help

这将创建一个名为 的新文件夹DB,并将其用于新创建的向量存储。您可以根据需要提取任意数量的文档,所有文档都将累积在本地嵌入数据库中。如果您想从空数据库开始,请删除DB并重新提取您的文档。

注意:首次运行此程序时,需要互联网访问来下载嵌入模型(默认值Instructor Embedding:)。在后续运行中,不会有任何数据离开您的本地环境,您可以在没有互联网连接的情况下提取数据。

在本地向您的文件提出问题!

为了与您的文档聊天,请运行以下命令(默认情况下,它将在 上运行cuda)。

python run_localGPT.py

您还可以指定设备类型,就像ingest.py

python run_localGPT.py --device_type mps # to run on Apple silicon

这将加载摄取的向量存储和嵌入模型。您将看到一个提示:

> Enter a query:

输入问题后,按回车键。LocalGPT 将根据您的硬件需要一些时间。您将收到如下所示的回复。 

localGPT

一旦答案生成,您就可以提出另一个问题,而无需重新运行脚本,只需再次等待提示。

注意:首次运行此程序时,需要网络连接来下载 LLM(默认值TheBloke/Llama-2-7b-Chat-GGUF:)。之后,您可以关闭网络连接,脚本推理仍将有效。不会有任何数据流出您的本地环境。

键入exit以完成脚本。

run_localGPT.py 的额外选项

您可以使用--show_sources带有标志的标签run_localGPT.py来显示嵌入模型检索了哪些块。默认情况下,它将显示 4 个不同的源/块。您可以更改源/块的数量

python run_localGPT.py --show_sources

另一个选项是启用聊天历史记录。

注意:默认情况下此功能处于禁用状态,可以使用 --use_history标志启用。上下文窗口是有限的,因此请记住启用历史记录将使用它并且可能会溢出。

python run_localGPT.py --use_history

您可以将用户问题和带有标志的模型响应存储--save_qa到 csv 文件中/local_chat_history/qa_log.csv。每次交互都将被存储。

python run_localGPT.py --save_qa

运行图形用户界面

  1. 在您选择的编辑器中打开constants.py,并根据选择添加要使用的 LLM。默认情况下,将使用以下模型:

    MODEL_ID = "TheBloke/Llama-2-7b-Chat-GGUF"MODEL_BASENAME = "llama-2-7b-chat.Q4_K_M.gguf"
  2. 打开一个终端并激活包含从 requirements.txt 安装的依赖项的 python 环境。

  3. 导航到/LOCALGPT目录。

  4. 运行以下命令python run_localGPT_API.py。API 应该开始运行。

  5. 等到所有内容都加载完毕。您应该会看到类似的内容INFO:werkzeug:Press CTRL+C to quit

  6. 打开第二个终端并激活相同的 python 环境。

  7. 导航到/LOCALGPT/localGPTUI目录。

  8. 运行命令python localGPTUI.py

  9. 打开网络浏览器并转到地址http://localhost:5111/

如何选择不同的LLM模型?

要更改模型,您需要设置MODEL_IDMODEL_BASENAME

  1. constants.py在您选择的编辑器中打开。

  2. 更改MODEL_IDMODEL_BASENAME。如果您使用的是量化模型(GGML,,),则需要提供。对于非量化模型,请GPTQ设置为GGUFMODEL_BASENAMEMODEL_BASENAMENONE

  3. HuggingFace 中有许多示例模型已经过测试,可以与原始训练模型(以 HF 结尾或在其“文件和版本”中包含 .bin)和量化模型(以 GPTQ 结尾或在其“文件和版本”中包含 .no-act-order 或 .safetensors)一起运行。

  4. 对于以 HF 结尾或其 HuggingFace 页面上的“文件和版本”内包含 .bin 的模型。

    • 确保您已MODEL_ID选择。例如 ->MODEL_ID = "TheBloke/guanaco-7B-HF"

    • 前往HuggingFace Repo

  5. 对于名称中包含 GPTQ 或在其 HuggingFace 页面上的“文件和版本”中具有 .no-act-order 或 .safetensors 扩展名的模型。

    • 确保您已MODEL_ID选择。例如 -> model_id ="TheBloke/wizardLM-7B-GPTQ"

    • 转到相应的HuggingFace Repo并选择“文件和版本”。

    • 选择一个模型名称并将其设置为 MODEL_BASENAME。例如 ->MODEL_BASENAME = "wizardLM-7B-GPTQ-4bit.compat.no-act-order.safetensors"

  6. GGUF对和模型执行相同的步骤GGML

GPU 和 VRAM 要求

以下是不同模型根据其大小(数十亿个参数)对 VRAM 的要求。表中的估算值不包括嵌入模型使用的 VRAM - 嵌入模型根据模型使用额外的 2GB-7GB VRAM。

模式尺寸 (B) float32 float16 GPTQ 8位 GPTQ 4位
7B 28 GB 14 GB 7 GB 至 9 GB 3.5 GB 至 5 GB
13B 52 GB 26 GB 13 GB 至 15 GB 6.5 GB 至 8 GB
32B 130 GB 65 GB 32.5 GB 至 35 GB 16.25 GB - 19 GB
65B 260.8 GB 130.4 GB 65.2 GB – 67 GB 32.6 GB - 35 GB

系统要求

Python 版本

要使用此软件,您必须安装 Python 3.10 或更高版本。早期版本的 Python 无法编译。

C++ 编译器

如果您在构建轮子的过程中遇到错误pip install,则可能需要在计算机上安装 C++ 编译器。

对于 Windows 10/11

要在 Windows 10/11 上安装 C++ 编译器,请按照以下步骤操作:

  1. 安装 Visual Studio 2022。

  2. 确保选择了以下组件:

    • 通用 Windows 平台开发

    • 适用于 Windows 的 C++ CMake 工具

  3. 从MinGW 网站下载 MinGW 安装程序。

  4. 运行安装程序并选择“gcc”组件。

NVIDIA 驱动程序的问题:

按照此页面安装 NVIDIA 驱动程序。



上一篇: AIdea
下一篇: 没有了