PrivateGPT:本地离线运行的强大“ChatGPT”
November 12, 2024 | News | No Comments
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 GPT4All
PERSIST_DIRECTORY: is the folder you want your vectorstore in
LLAMA_EMBEDDINGS_MODEL: Path to your LlamaCpp supported embeddings model
MODEL_PATH: Path to your GPT4All or LlamaCpp supported LLM
MODEL_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