PrivateGPT:本地离线运行的强大“ChatGPT”

Home / PrivateGPT:本地离线运行的强大“ChatGPT”

PrivateGPT 是一项使用Python开发的独特技术与服务,这让开发者无需任何编码或技术知识即可构建自己的个性化 GPT-4 模型。在这篇文章中,我为大家介绍 PrivateGPT,解释它是如何工作的,以及如何将它用于个人或公司项目。

它可以让开发者立即使用 LLM 的强大功能,无需互联网连接就可以对文档提问。100% 私有化部署,任何时候都没有数据泄漏到外部执行环境。即开发者可以在没有互联网连接的情况下提取文档与实时提问。

PrivateGPT 是一个新名词,它指的是生成式 AI 模型(例如 ChatGPT)的另一款产品以及解决方案,用来保护用户及其数据隐私的方式。PrivateGPT 是一种工具,可以在将用户提示中的敏感信息发送到 ChatGPT 之前对其进行编辑,然后在答案中恢复信息。另外还有 privategpt.io 的 PrivateGPT,它也是一个聊天机器人,可以连接到各种数据源,例如 Notion、JIRA、Slack、GitHub 等产品,并根据这些来源知识提供问题的答案;第三个例子是 imartinez 的 privateGPT.py,它是一个脚本,它用基于 GPT4All-J 的本地语言模型与本地向量存储的文档进行交互。

PrivateGPT 设置起来非常简单,我们分别来讲解。

环境设置

准备运行上述代码的环境,请先安装以下必备组件:

pip install -r requirements.txt

然后将 example.env 重命名为 .env,并请适当修改一些变量的值。

文件内容如下:

MODEL_TYPE: supports LlamaCpp or GPT4AllPERSIST_DIRECTORY: is the folder you want your vectorstore inLLAMA_EMBEDDINGS_MODEL: Path to your LlamaCpp supported embeddings modelMODEL_PATH: Path to your GPT4All or LlamaCpp supported LLMMODEL_N_CTX: Maximum token limit for both embeddings and LLM models


下载LLM文件

然后下载两个模型文件,并将它们保存在比如models目录中(请务必同步更改.env中的模型路径):

LLM:默认文件为 ggml-gpt4all-j-v1.3-groovy.bin(https://gpt4all.io/models/ggml-gpt4all-j-v1.3-groovy.bin),大概约10G大小。如果喜欢不同的 GPT4All-J 兼容模型,只需下载它,并在 .env 文件中引用。

Embedding:默认文件为 ggml-model-q4_0.bin(https://huggingface.co/Pi3141/alpaca-native-7B-ggml/resolve/397e872bf4c83f4c642317a5bf65ce84a105786e/ggml-model-q4_0.bin)。

如果你还有其它不同的嵌入模型,下载并在 .env 文件中引用它即可。

复制文件

先克隆PrivateGPT仓库到本地。

测试查询数据集

本例的 repo 使用 state of the union transcript(地址:https://github.com/imartinez/privateGPT/blob/main/source_documents/state_of_the_union.txt) 。

python ingest.py

运行“ingest.py”脚本,这可能需要一段时间。不过在我这台 MacBook M1 上是 2 分钟。

这样在本地,就可以对该文件提出相关问题。要提出问题,请使用以下命令:

python privateGPT.py

然后等待脚本回复给我们问题反馈。如下显示 :

> Questtion:

回车键后,等待 20-30 秒。此时 LLM 模型会接收提示并开始准备响应,之后它回复响应,它会使用文档上下文的来源做分析处理;用户可以继续问另一个问题,无需重新运行脚本,再次等待它返回提示即可。

值得一提的是,你可以禁用互联网连接,脚本和推理仍然可以运行。没有数据会被发送到外部环境。

以下是运行 `privateGPT.py` 脚本的实例,在终端中显示提问:

我问它美国总统对乌克兰局势有何看法,它给了我一个概要以及文件中信息的来源。

想要结束脚本运行,输入 『exit』 即可完成。

相当的干净!


Keyword: Domo

By

About Author

about author

Leave a Reply