50K star!构建离线的私有GPT,隐私不再泄露

随着越来越多的人使用ChatGPT等AI产品,用户的数据隐私泄露也越来越被重视。

今天我们介绍一个开源项目,它让用户可以在离线的情况下,使用大模型的能力来查询本地文档,不再担心隐私数据泄露,它就是:PrivateGPT

PrivateGPT 是什么

PrivateGPT 是一个可立即投入生产的 AI 项目,即使在没有 Internet 连接的情况下,您也可以使用大型语言模型 (LLM) 的功能来询问有关文档的问题。 100% 私有,任何数据都不会离开您的执行环境。

PrivateGPT 是一项服务,它将一组 AI RAG 原语包装在一组全面的 API 中,提供私有、安全、可定制且易于使用的 GenAI 开发框架。它支持各种本地和远程的 LLM 提供商、嵌入提供商和向量存储。这些可以轻松更改,而无需更改代码库。

整体架构

它使用FastAPI和LLamaIndex作为其核心框架。这些可以通过更改代码库本身来定制。

该项目提供了一个 API,提供构建私有的、上下文感知的 AI 应用程序所需的所有原语。它遵循并扩展了OpenAI API 标准,支持普通响应和流式响应。API 分为两个逻辑块:

高级 API,抽象了 RAG(检索增强生成)管道实现的所有复杂性:

  • 文档提取:内部管理文档解析、分割、元数据提取、嵌入生成和存储。
  • 使用所提取文档中的上下文进行聊天和完成:抽象上下文检索、提示工程和响应生成。

低级 API,允许高级用户实现自己的复杂管道:

  • 嵌入生成:基于一段文本。
  • 上下文块检索:给定查询,从提取的文档中返回最相关的文本块。

除此之外,还提供了一个可用的Gradio UI 客户端来测试 API,以及一组有用的工具,例如批量模型下载脚本、提取脚本、文档文件夹监视等。

安装PrivateGPT

开始安装前需要确认一些基础的环境情况:

ini 复制代码
Python =>3.11 
make 
poetry 

对于快速安装可以参考以下的步骤:

bash 复制代码
# 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. Check Installation and Settings section 
to know how to enable GPU on other platforms
CMAKE_ARGS="-DLLAMA_METAL=on" pip install --force-reinstall --no-cache-dir llama-cpp-python

# Run the local server  
PGPT_PROFILES=local make run

# Note: on Mac with Metal you should see a ggml_metal_add_buffer log, stating GPU is 
being used

# Navigate to the UI and try it out! 
<http://localhost:8001/>

为了获得最佳性能,建议使用 GPU 加速。 PrivateGPT 支持与llama.cpp兼容的模型的本地执行。提供了两种运行良好的已知模型来实现无缝设置:

1.TheBloke/Llama-2--7B-chat-GGUF

2.TheBloke/Mistral-7B-Instruct-v0.1-GGUF

使用PrivateGPT

安全完成后可以到 http://localhost:8001/ 访问web服务。

它有3种执行模式(可以在左上角选择):

  • 查询文档:使用提取文档中的上下文来回答聊天中发布的问题。它还将之前的聊天消息作为上下文考虑。
  • 在文档中搜索:快速搜索,返回 4 个最相关的文本块及其源文档和页面。
  • LLM 聊天:与 LLM 进行简单、非上下文的聊天。不会考虑提取的文档,只会考虑之前的消息。

总结

PrivateGPT 的思路和方向和目前很多国内的研究一致,大家都是在探索一种及使用大模型能力,同时又保障足够的数据隐私安全,并且这种引入向量存储的方法一定程度上可以提升相应的准确度的速度(在特定的问题场景下)。

个人觉得这个项目更多的可以给我们延伸的思考,当然直接拿来用也不错。

项目信息

相关推荐
光芒再现dev17 分钟前
已解决,部署GPTSoVITS报错‘AsyncRequest‘ object has no attribute ‘_json_response_data‘
运维·python·gpt·语言模型·自然语言处理
王解1 小时前
Jest项目实战(4):将工具库顺利迁移到GitHub的完整指南
单元测试·github
油泼辣子多加1 小时前
2024年11月4日Github流行趋势
github
梓羽玩Python2 小时前
推荐一款用了5年的全能下载神器:Motrix!全平台支持,不限速下载网盘文件就靠它!
程序员·开源·github
小牛itbull9 小时前
ReactPress:重塑内容管理的未来
react.js·github·reactpress
鱼满满记17 小时前
1.6K+ Star!GenAIScript:一个可自动化的GenAI脚本环境
人工智能·ai·github
梦魇梦狸º19 小时前
腾讯轻量云服务器docker拉取不到镜像的问题:拉取超时
docker·容器·github
数据智能老司机20 小时前
LLM工程师手册——监督微调
深度学习·架构·llm
知来者逆1 天前
使用 GPT-4V 全面评估泛化情绪识别 (GER)
人工智能·gpt·语言模型·自然语言处理·gpt-4v
github_czy1 天前
使用GPT-SoVITS训练语音模型
人工智能·gpt