50K star!构建离线的私有GPT,隐私不再泄露
随着ChatGPT这类AI产品在人群里迅速普及,一个绕不开的话题开始频频被讨论——用户的隐私数据,到底怎么保护?

今天聊的这个开源项目,就是直接冲着这个痛点去的。它允许你在完全离线的情况下,调用大模型的能力去查询本地文档,数据全程不离开你自己的环境。它就是:
PrivateGPT
PrivateGPT 是什么
PrivateGPT是一个可以直接投入生产的AI项目。即便在没有网络连接的环境下,你也能利用大语言模型来提问文档内容。最关键的是,它做到了100%私有化——没有任何数据会离开你的执行环境。
从本质上说,PrivateGPT是一套服务,它将AI领域中RAG的基础组件封装成一套完整的API,由此提供私有、安全、可定制且易用的GenAI开发框架。它兼容多种本地或远程的LLM提供商、嵌入提供商以及向量存储,更换这些组件时,甚至不需要改动代码本身。
整体架构
它的核心框架是FastAPI和LLamaIndex。当然,如果你有更深度的定制需求,直接改代码库也是可行的。
项目提供了一组API,囊括了构建私有、上下文感知的AI应用所需的所有原语。它遵循并且扩展了OpenAI API标准,既支持普通响应,也支持流式响应。API整体分为两大逻辑模块:
高级API
- 文档提取:内部自动处理文档解析、分割、元数据提取、嵌入生成和存储。
- 基于提取文档上下文的聊天与完成:自动完成上下文检索、提示工程和响应生成。
低级API
- 嵌入生成:基于一段文本生成嵌入。
- 上下文块检索:给定一个查询,从已提取的文档中返回最相关的文本块。
除此之外,项目还附带一个开箱即用的Gradio UI客户端,方便测试API,同时包含批量模型下载脚本、提取脚本、文档文件夹监听等实用工具。
安装 PrivateGPT
动手安装之前,需要先确认几个基础环境要求:
Python => 3.11 make poetry
快速安装可以参考以下步骤:
# Clone the repo
git clone https://github.com/imartinez/privateGPT
cd privateGPT
# Install Python 3.11
pyenv install 3.11
pyenv local 3.11
# Install dependencies
poetry install --with ui,local
# Download Embedding and LLM models
poetry run python scripts/setup
# (Optional) For Mac with Metal GPU, enable it.
CMAKE_ARGS="-DLLAMA_METAL=on" pip install --force-reinstall --no-cache-dir llama-cpp-python
# Run the local server
PGPT_PROFILES=local make run
# Na vigate to the UI and try it out!
http://localhost:8001/
为了更好的性能,GPU加速是很有必要的。PrivateGPT支持在本地运行与llama.cpp兼容的模型。目前推荐两款已知的、能实现无缝设置的模型:
- TheBloke/Llama-2–7B-chat-GGUF
- TheBloke/Mistral-7B-Instruct-v0.1-GGUF
使用 PrivateGPT
安装完成之后,打开浏览器访问 http://localhost:8001/ 就能看到Web服务界面。操作门槛并不高。
界面有3种执行模式(可以在左上角切换):
- 基于已提取文档的上下文来回答聊天中的问题。同时也会把之前的聊天记录纳入上下文中。
查询文档:
- 快速搜索模式,返回4个最相关的文本块,附带源文档和页码信息。
在文档中搜索:
- 跟LLM进行简单的、不带文档上下文的对话。不会考虑已提取的文档,只参考历史消息。
LLM 聊天:
总结
PrivateGPT的切入点和思路,其实跟国内不少研究工作殊途同归——大家都在尝试找出一种既能借力大模型能力,又能确保隐私数据不暴露的方案。引入向量存储的做法,在特定问题场景下,也确实能提升回答的准确度和速度。
直接拿来用是没问题的。但话说回来,这个项目更大的价值,可能在于它给了我们一个延伸思考的方向。