大模型应用_PrivateGPT

https://github.com/imartinez/privateGPT

1 功能

  • 整体功能,想解决什么问题
    搭建完整的 RAG 系统,与 FastGPT相比,界面比较简单。但是底层支持比较丰富,可用于知识库的完全本地部署,包含大模型和向量库。适用于保密级别比较高,或者完全不想使用收费模型和服务的情况。
  • 当前解决了什么问题,哪些问题解决不了
    PrivateGPT 提供了整体转换、入库、存储、匹配、合成答案,图形界面的解决方案,并提供图形界面用于检索操作。
    RAG 所面对的问题,比如不够准确,多文档组合生成答案这些问题,需要进一步细化工具,似乎不能通过架构来解决。另外,由于多数本地部署的模型效果与 ChatGPT 差距比较大,这里只是看到了本地部署的架构和实现的可能性,部署后用户是否能接受其效果,还待验证。
  • 提供哪些功能点,其中哪些是刚需
    核心功能是通过简单的操作,实现对本地文件的检索和问答,功能相对单一。
  • 用户使用难度,操作逻辑是否过于复杂
    整体工具链使用了poetry构建,安装相对方便。但由于包含了深度学习库,肯定比一般项目复杂很多,安装时间长,占空间大。
    Dockerfile如果写得有一点问题(频繁更新,难免有错),就会面临至少部分内容重新下载打包的问题。另外,由于可插拔的选项比较多,还需要用户进一步设置。

2 技术栈

  • 技术栈是什么:
    • PrivateGPT 不是一个用大量代码实现具体功能的项目,相反,它尽量使用现有工具,主要提供架构,组织现有方法,以实现功能。
  • 现有底层工具消化了哪些常用功能
    • llamaindex 文档的转换和管理
    • pytorch & cuda 本地支持深度学习模型,因此image也较大
    • sentence-transformers 文本匹配
    • FastAPI 后端框架
    • Chroma 向量数据库
    • Qdrant 向量数据库
    • Gradio 界面由Gradio实现,有效降低了程序的复杂度
    • fern 管理文档
    • 使用 poetry 管理项目
  • 代码分析(使用cloc工具统计)
    • 代码 3.2M,主要为 Python 代码,共 2733 行
    • local 版本 image 大小为 6.34G,external 版本为 5.68G
    • 核心代码在:private_gpt/private_gpt/ 目录下
  • 使用场景
    • 完全本地化的知识库

3 商业模式

相对简单的项目,代码主要在架构和调用其它工具,依赖 llama-index,并实现了扩展,如支持几个主流向量数库,后面可能接入更多模型和向量库。可作为一种集成的方案,或者支持各种组件插拔的 Hub 使用。

4 使用

4.1 安装
  • 下载项目
$ git clone https://github.com/imartinez/privateGPT
$ cd privateGPT
  • 修改配置文件
vi settings.yaml

建议第一次运行时将 llm 设置为 openai,整体调通后,再使用本地 llm 下载模型;否则太过复杂,不容易定位问题。

  • 修改 Dockerfile.local(我build时报错)
RUN addgroup worker
RUN adduser --ingroup worker --system worker
  • 构建 local 环境
$ docker build . -f Dockerfile.local --build-arg HTTP_PROXY=xxx --build-arg HTTPS_PROXY=xxx -t private-gpt
  • 细节请见文档:https://docs.privategpt.dev/installation
4.2 运行

如果直接执行失败,建议以root用户启动bash进行调试

$ docker run --rm -p 8080:8080 -e OPENAI_API_KEY=xxx -e HTTP_PROXY=xxx -e HTTPS_PROXY=xxx --entrypoint bash -u 0 -it private-gpt
$ .venv/bin/python -m private_gpt

在localhost 8080 端口可打开 gradio 应用

4.3 使用感受

gradio 主要用作 demo,实现功能比较简单,比如上传文档后无法删除,文本切块大小和模型的对应关系需要提前设置。

5 资源

文档
全面了解 PrivateGPT:中文技巧和功能实测

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/222187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI抽烟识别系统研发关键

为了设计一个有效的AI抽烟识别系统,我们需要考虑几个关键组成部分:图像捕捉、数据处理、模型训练、以及实际应用场景。下面是这个方案的详细阐述: 1. 图像捕捉与数据收集 摄像头部署:首先,在需要监控的区域安装高分辨…

硬件基础常识【4】--利用戴维宁定理求运放复杂反馈电阻网络的增益

最近学到了一种求带T型电阻网络反馈运放增益的方法 如图所示为T型电阻网络反馈的反相放大器 求解思路 沿X-Y断开,右侧利用戴维宁定理等效成电压源串电阻的形式 由戴维宁定理可得: V T H V o u t ∗ R 4 / ( R 3 R 4 ) ( 式 1 ) VTHVout*R4/(R3R4)…

二叉树题目:从前序遍历还原二叉树

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题:从前序遍历还原二叉树 出处:1028. 从前序遍历还原二叉树 难度 6 级 题目描述 要求 我们从二叉树的根结点 root \texttt{root} root 开…

5键键盘的输出 - 华为OD统一考试

OD统一考试 题解: Java / Python / C 题目描述 有一个特殊的 5键键盘,上面有 a,ctrl-c,ctrl-x,ctrl-v,ctrl-a五个键。 a 键在屏幕上输出一个字母 a; ctrl-c 将当前选择的字母复制到剪贴板; ctrl-x 将当前选择的 字母复制到剪贴板,并清空选择…

机器视觉【1】相机的成像(畸变)模型

零、前言 很久没写文章,简单唠一唠。 不知道巧合还是蜀道同归,部门领导设定了些研究课题,用于公司部门员工的超前发展,该课题是“2D to 3D的三维重建”,这一块刚好是我个人看中的一个大方向,所以就有了这…

leetcode-21-合并两个有序链表(C语言实现)

题目: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 2: 输入:l1 [], l2 [] 输出…

一文读懂FastAPI:Python 开发者的福音

FastAPI是一个基于Python的现代化Web框架,它提供了快速、简单和高性能的方式来构建API。 它结合了Python的静态类型检查和自动化文档生成的功能,使得开发API变得更加容易和高效。 下面将介绍如何使用FastAPI快速开发接口,并且利用自动生成的…

《LeetCode力扣练习》代码随想录——字符串(KMP算法学习补充——针对next数组构建的回退步骤进行解释)

《LeetCode力扣练习》代码随想录——字符串(KMP算法学习补充——针对next数组构建的回退步骤进行解释) 学习路径 代码随想录:28. 实现 strStr() CSDN:【详解】KMP算法——多图,多例子(c语言) …

【Qt之QNetworkAccessManager】概述及示例

概述 QNetworkAccessManager类允许应用程序发送网络请求和接收应答 网络访问API是围绕一个QNetworkAccessManager对象构建的,该对象为它发送的请求保存通用配置和设置。它包含代理和缓存配置,以及与此类问题相关的信号,以及可用于监视网络操…

Antd Select 添加中框

默认antd 的 Select中间并没有竖框,但是ui design设计了,所以记录一下如何添加 默认: CSS: .custom-select-suffix-icon {display: flex;align-items: center; }.custom-select-suffix-icon::before {content: ;height: 31px; …

什么品牌的猫粮比较好?主食冻干猫粮品牌十大排行

咱们养猫人每天最愁的就是咋给自家猫咪选一款优质的猫粮,让猫主子吃了健健康康的。早些年大多养猫人的标准就是盯着进口的买,所以之前进口猫粮的销量一直遥遥领先,感觉品控也严,也就放心大胆的冲进口猫粮了,但近期百利…

flink中如何把DB大表的配置数据加载到内存中对数据流进行增强处理

背景 在处理flink的数据流时,比如处理商品流时,一般我们从kafka中只拿到了商品id,此时我们需要把商品的其他配置信息比如品牌品类等也拿到,此时就需要关联上外部配置表来达到丰富数据流的目的,如果外部配置表很大&…

我的隐私计算学习——隐私集合求交(1)

笔记内容来自多本书籍、学术资料、白皮书及ChatGPT等工具,经由自己阅读后整理而成。 (一)PSI的介绍 隐私计算关键技术:隐私集合求交(PSI)原理介绍 隐私计算关键技术:隐私集合求交&#xff08…

事务--03---TCC空回滚、悬挂、幂等解决方案

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 Seata TCC 模式设计思路TCC存在的问题1、空回滚以及解决方案解决方案: 2、幂等问题以及解决方案解决方案: 3、悬挂问题以及解决方案解决方案…

PCIe设备热插拔-理论篇

硬件层面理解热插拔 PRSNT1#和PRSNT2#信号与PCIe设备的热插拔相关。在基于PCIe总线的Add-in 卡中,PRSNT1# 和PRSNT2#信号直接相连,而在处理器主板中,PRSNT1#信号接地,而PRSNT2#信号通过上 拉电阻接为高。 不同的处理器系统处理PC…

【Mysql】InnoDB的表空间(九)

概述 表空间是一个在 InnoDB 中比较抽象的概念,对于系统表空间来说,对应着文件系统中一个或多个实际文件;而对于每个独立表空间来说,对应着文件系统中一个名为表名.ibd 的实际文件。可以把表空间想象成由很多个页组成的池子&…

【Unity 实用工具篇】| 游戏多语言解决方案,官方插件Localization 实现本地化及多种语言切换

前言 【Unity 实用工具篇】| 游戏多语言解决方案,官方插件Localization 实现本地化及多种语言切换一、多语言本地化插件 Localization1.1 介绍1.2 效果展示1.3 使用说明 二、 插件导入并配置2.1 安装 Localization2.2 全局配置 三、多语言映射表3.1 创建多语言文本配…

字符处理 C语言xdoj52

问题描述 从键盘输入一个字符,若为小写字母,则输出其对应的大写字母;若为大写字母,则输出对应的小写字母;其他字符原样输出。 输入说明 输入一个字符 输出说明 输出一个字符 输入样例 样例1输入 a 样例…

分布式块存储 ZBS 的自主研发之旅|元数据管理

重点内容 元数据管理十分重要,犹如整个存储系统的“大黄页”,如果元数据操作出现性能瓶颈,将严重影响存储系统的整体性能。如何提升元数据处理速度与高可用是元数据管理的挑战之一。SmartX 分布式存储 ZBS 采用 Log Replication 的机制&…

论文修改润色平台 PaperBERT

大家好,今天来聊聊论文修改润色平台,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧: 标题:论文修改润色平台――助力学术研究,提升论文质量 一、引言 在学术研究中&am…