大模型工具_QUIVR

https://github.com/StanGirard/quivr/ 24.5K Star

1 功能

  • 整体功能,想解决什么问题
    • 实现了前后端结合的 RAG 方案。构建能直接使用的应用。
    • 提出了“第二大脑”,具体实现也是RAG,但针对不同用户不同场景支持多个“大脑”并存,每个“大脑里”存储一个或多个文件,用户可使用指定的大脑提供搜索增强生成。
  • 当前解决了什么问题,哪些问题解决不了
    • QUIVR整体看是个很产品化的工具,但是过于复杂,在其中做修改和定制开发也很困难(运行时启动5个docker镜像)。
    • 整体技术栈相对新,对于一般人有一定学习成本
    • 一些细节略差,比如没有说明引用数据的具体内容,只有来自哪个文件(有时显示)。例如在一个大脑中上传多篇论文,问着问着内容就串了。
  • 提供哪些功能点,其中哪些是刚需
    • 核心是针对多组文档聊天的 RAG 功能
    • 可爬取网站,构建知识库
    • 提供一些 ollama 的本地部署方案
    • 可连接 telegram 通讯工具使用
  • 用户使用难度,操作逻辑是否过于复杂
    • 我测试时的版本,没有针对 linux 系统的脚本,需要手动修改调整,但整体还比较易用。

2 技术栈

  • 技术栈是什么
    • 分成:前端 +CMS+ 后端 + 数据库,略有点重
    • 前端:Next.js/React
    • 后端:fastapi/SupaBase
    • CMS:Strapi
    • 数据库:PGSQL/SupaBase
  • 现有底层工具消化了哪些常用功能
    • Supabase 存储数据库,文件、向量
    • 虽然使用了 langchain,但在代码中也自行实现了很多RAG加强功能
  • 代码分析(使用cloc工具统计)
    • TypeScript:17392 行 实现前端和cms
    • Python:6912 行 实现后端

3 商业模式

  • QUIVR使用 Supabase 存储数据,Supabase 网站提供一定免费额度,用量大时,按规则收费;如果不想付费,也可以自己搭一下Supabase。(我理解是一种 Saas 方案)

4 使用

4.1 安装

见 README.md

docker-compose up --build

运行之后启动了 四个后端服务,一个前端服务,一个redis,共5个docker 容器。
通过前端服务端口 3000 进行访问

4.2 注意事项
  • 如果需要使用代理,请修改frontend/.env加入HTTP_PROXY, HTTPS_PROXY环境变量;在docker-compose.yml中也要在build args中加代理
  • 配置文件中内容很多,至少要设置 OPEN API KEY,Supabase相关项,其它可以先不动。
  • 在Supabase控制台的数据中的vectors中可以看到文档内容已经入库。
4.3 使用
  • 打开 3000 端口:http://localhost:3000/
  • 用邮箱注册了一个用户,注册后可以在 supabase 用户管理界面看到。
  • 上传了一个论文 pdf 文件,约21页,20000单词,上传时间1分钟以内,大概是生成向量比聊天快很多。
  • 上传文件时,还可以聊天。
  • 在后台log可以看到其工作过程。
4.4 用后感

从用户注册,邮箱激活,服务部署到 supabase 访问 chatgpt。

5 参考

Quivr 基于Supabase构建本地知识库

如何用 ChatGPT 和你的卡片笔记对话?开源应用 Quivr 尝试

文档

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

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

相关文章

css 三角形实现方式及快速联想记忆

css实现三角形是常见的需求,在此记录如下 1 边框实现 原理:相邻的border之间会形成一条斜线(可按此联想记忆) .triangle {width: 0;height: 0;border-left: 100px solid red;border-right: 100px solid green;border-top: 100px solid blue;border-bot…

Spring Boot实践指南

一.SpringBoot入门案例 SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程 原生开发SpringMVC程序过程 在没有SpringBoot前: 1.入门案例开发步骤 (1)创建新模块,选…

模式识别与机器学习(九):Adaboost

1.原理 AdaBoost是Adaptive Boosting(自适应增强)的缩写,它的自适应在于:被前一个基本分类器误分类的样本的权值会增大,而正确分类的样本的权值会减小,并再次用来训练下一个基本分类器。同时,在…

PADS Layout安全间距检查报错

问题: 在Pads Layout完成layout后,进行工具-验证设计安全间距检查时,差分对BAK_FIXCLK_100M_P / BAK_FIXCLK_100M_N的安全间距检查报错,最小为3.94mil,但是应该大于等于5mil;如下两张图: 检查&…

数据结构-如何巧妙实现一个栈?逐步解析与代码示例

文章目录 引言1.栈的基本概念2.选择数组还是链表?3. 定义栈结构4.初始化栈5.压栈操作6.弹栈操作7.查看栈顶和判断栈空9.销毁栈操作10.测试并且打印栈内容栈的实际应用结论 引言 栈是一种基本但强大的数据结构,它在许多算法和系统功能中扮演着关键角色。…

机器学习的一些有趣的点【异常检测】

机器能不能知道自己不知道,而不是给出判断中的一种? Classifier(分类)Anomaly Detection(异常检测) 机器能不能说出为什么知道? 有时候可能是因为数据的问题导致了这种错觉。 机器学习是否会有错…

【Linux基本命令】

文章目录 一. Linux基本命令第三回二. 结束语 一. Linux基本命令第三回 cal指令,命令格式:cal 【参数】【月份】【年份】 功能,用于查看日历等时间信息,如只有一个参数,则表示年份,有两个参数则表示月份和…

为什么要使用vite

vue ——)webpack 全部读取完毕才显示: vite:只读取修改的部分,速度比较快

canvas入门笔记(上)

Canvas Canvas简介 Canvas API 提供了一个通过JavaScript 和 HTML的元素来绘制图形的方式。它可以用于动画、游戏画面、数据可视化、图片编辑以及实时视频处理等方面。 Canvas API 主要聚焦于 2D 图形。而同样使用<canvas>元素的 WebGL API 则用于绘制硬件加速的 2D 和…

【JMeter】JMeter控制RPS

一、前言 ​ RPS (Request Per Second)一般用来衡量服务端的吞吐量&#xff0c;相比于并发模式&#xff0c;更适合用来摸底服务端的性能。我们可以通过使用 JMeter 的常数吞吐量定时器来限制每个线程的RPS。对于RPS&#xff0c;我们可以把他理解为我们的TPS&#xff0c;我们就不…

python13

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…

设计模式-结构型模式

适配者模式 现有的系统放置在新环境中&#xff0c;新环境要求的接口是现对象不能满足的/系统需要使用现有的类&#xff0c; 此类的接口不符合系统的要求&#xff1b;适配器继承或者依赖已有的对象&#xff0c;实现想要的目标接口 桥接模式 用继承会造成类爆炸问题&#xff0c;扩…

二级指针使用

在c和c中如果我们想使用指针指向或者使用指针变量存放另外一个指针的地址&#xff0c;最容易想到的是再定义一个指针来存放&#xff1a; 例&#xff1a; int a 10; int * p &a; int *p1 &p; // 这种定义方法理论上是可行的,但是c和c中是不允许的,存放指针变量 …

方法论系列:数据科学框架入门

目录 第一章 - 数据科学家如何战胜困难第二章 - 数据科学框架第三章 - 步骤1&#xff1a;定义问题和步骤2&#xff1a;收集数据第四章 - 步骤3&#xff1a;准备数据第五章 - 数据清洗的4个C&#xff1a;纠正、补全、创建和转换第六章 - 步骤4&#xff1a;使用统计学进行探索性…

融资项目——swagger2的注解

1. ApiModel与ApiModelProperty(在实体类中使用) 如上图&#xff0c;ApiModel加在实体类上方&#xff0c;用于整体描述实体类。ApiModelProperty(value"xxx",example"xxx")放于每个属性上方&#xff0c;用于对属性进行描述。swagger2网页上的效果如下图&am…

IIS服务器的配置与管理

1) 安装IIS服务器&#xff0c;并添加站点&#xff0c;该服务器的IP地址为192.168.1.xx 。 2) 配置网站&#xff0c;并设置该站点不允许匿名访问&#xff0c;仅允许使用自己的本地用户登录连接。 3) 配置网站&#xff0c;限制拒绝192.168.1.100IP地址访问 。 4) 客户端使用19…

【Redis】七、Redis主从复制(重点)

文章目录 1、概念1.1、主从复制的作用主要包括1.2、一般来说&#xff0c;要将Redis运用于工程项目中&#xff0c;只使用一台Redis是万万不能的&#xff08;宕机&#xff09;&#xff0c;原因如下 2、环境配置2.1、复制拷贝3个配置文件&#xff0c;然后修改对应的信息拷贝文件改…

ubuntu-22.04.3 配置

1.防火墙 a、查看防火墙状态&#xff1a;inactive是关闭&#xff0c;active是开启。 sudo ufw statusb、开启防火墙。 sudo ufw enablec、关闭防火墙。 sudo ufw disable2.设置Ip ifconfigsudo cp /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.y…

使用 subprocess.Popen 封装 start_program 方法,启动应用程序

一、前置说明 subprocess 模块是 Python 中用于创建和管理子进程的标准库模块。它提供了多种函数和类,其中最常用的是 subprocess.run() 和 subprocess.Popen()。 subprocess.run() 是一个简单的函数,用于运行命令并等待其完成。subprocess.Popen() 是一个更灵活的类,可以…

【闲聊】瓦罕走廊 是中国与 阿富汗 接壤。 在瓦罕走廊上可以建设公路吗?

【闲聊】 瓦罕走廊&#xff08;Wakhan Corridor&#xff09;是一条狭长的地带&#xff0c;位于阿富汗东北部&#xff0c;与中国、塔吉克斯坦和巴基斯坦接壤。由于其地理位置特殊和地形复杂&#xff0c;建设公路面临着一系列挑战&#xff1a; 地形挑战&#xff1a;瓦罕走廊地处…