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 尝试
文档