基于 Quivr 搭建个人知识库

目录

Quivr介绍

Quivr特性

Quivr演示

        Demo with GPT3.5:

        Demo of the new version:

Quivr实战

Quiv 使用的主要技术

Quiv 实践依赖

创建Supabase项目

部署Quiv项目

        第一步:现在源码

        第二步:设置环境变量

        第三步:执行sql

        第四步:启动应用

        第五步:效果演示

                用户登陆:

                上传知识库:

                 修改问答prompt进行问答


        今天咱们尝试使用开源的框架Quivr搭建一个自己的知识库。官网自诩Quivr为你的第二个大脑,利用生成人工智能的力量来存储和检索非结构化信息。你可以把它想象成带有人工智能功能黑曜石。看官网的介绍图案也是黑曜石里生长出智慧之树,果然寓意很牛逼。

Quivr介绍

        Quivr采用先进的人工智能技术来帮助您生成和检索信息,可以处理几乎所有类型的数据,包括文本、图像、代码片段等。同时,它还专注于速度和效率,确保可以快速访问数据。数据安全由自己掌控,Quivr 支持多个文件格式,包括文本、Markdown、PDF、PowerPoint、Excel、Word、音频、视频等。

Quivr特性

  •  Universal Data Acceptance:Quivr几乎可以处理你扔给它的任何类型的数据。包括文本、Markdown、PDF、PowerPoint、Excel、Word、音频、视频等等。
  • Generative AI:Quivr采用先进的人工智能来帮助你生成和检索信息。
  • Fast and Efficient:因为设计是以速度和效率为核心,Quivr确保快速访问数据。
  • Secure:任何场景任何时间,你的数据由你自己控制。
  • Open Source:开源、免费。

Quivr演示

Demo with GPT3.5:

        下面的视频是基于ChatGPT3.5的一个demo演示,其中演示了构建知识库并进行多轮对话问答。https://user-images.githubusercontent.com/19614572/238774100-80721777-2313-468f-b75e-09379f694653.mp4

Demo of the new version:

        下面的视频是5月下旬上线的最新的版本的演示视频,新的版本替换了操作UI,接下来我们尝试使用新版搭建自己的知识库。https://user-images.githubusercontent.com/19614572/239713902-a6463b73-76c7-4bc0-978d-70562dca71f5.mp4

Quivr实战

Quiv 使用的主要技术

        Quivr 和其他知识库方案一样,本质上都是基于 Prompt 与大模型交互来的,Quivr 用到的主要技术有:

  • LLM:GPT3.5 / GPT 4
  • Embedding:OpenAI embedding
  • 向量知识库:Supabase
  • Docker:Docker Compose

Quiv 实践依赖

        前面咱们已经提到过Quivr 采用的是Supabase向量数据库,所以在此之前咱们需要先创建一个Supabase的账号,获取到Supabase Project API key、Supabase Project URL,并且生成几个必要的表。

创建Supabase项目

        Supabase的官网地址是:Dashboard | Supabase如果有github账号的话可以直接使用GitHub 账号登陆,要是没有的话就用其他的方式注册也可以。创建项目比较简单,创建的时候有付费的和免费的,咱们练习直接白嫖就可以,果断选择免费方式。新建完毕项目之后会出现项目的相关配置,咱们需要的就是第二张图里标记的,如果后面向要重新找这几个信息可以通过这个地址:API Settings | Supabase,或者选择项目进入到设置里查询。

部署Quiv项目

        前置环境准备完毕咱们开始部署Quiv项目。

第一步:现在源码

        

git clone https://github.com/StanGirard/quivr.git && cd quivr 
# 切换到 v0.0.4分支 
git checkout v0.0.4 
git checkout -b v0.0.4

第二步:设置环境变量

        需要修改 frontend、backend两个目录下的环境变量,先拷贝到这里。下面的图里是我本地按照创建的项目里的配置替换的,需要注意的是backend目录下的ANTHROPIC_API_KEY 是选择 Claude 的配置,我们可以删了。

cp .backend_env.example backend/.env 
cp .frontend_env.example frontend/.env

第三步:执行sql

        配置完完毕,接下来要初始化数据库了。打开 Supabase 面板,按下图点击创建一个sql执行框将下面的sql代码依次执行即可。

create extension vector;-- Create a table to store your documents
create table if not exists documents (
id bigserial primary key,
content text, -- corresponds to Document.pageContent
metadata jsonb, -- corresponds to Document.metadata
embedding vector(1536) -- 1536 works for OpenAI embeddings, change if needed
);CREATE FUNCTION match_documents(query_embedding vector(1536), match_count int)RETURNS TABLE(id bigint,content text,metadata jsonb,-- we return matched vectors to enable maximal marginal relevance searchesembedding vector(1536),similarity float)LANGUAGE plpgsqlAS $$# variable_conflict use_column
BEGINRETURN querySELECTid,content,metadata,embedding,1 -(documents.embedding <=> query_embedding) AS similarityFROMdocumentsORDER BYdocuments.embedding <=> query_embeddingLIMIT match_count;
END;
$$;
create tablestats (-- A column called "time" with data type "timestamp"time timestamp,-- A column called "details" with data type "text"chat boolean,embedding boolean,details text,metadata jsonb,-- An "integer" primary key column called "id" that is generated always as identityid integer primary key generated always as identity);
-- Create a table to store your summaries
create table if not exists summaries (id bigserial primary key,document_id bigint references documents(id),content text, -- corresponds to the summarized contentmetadata jsonb, -- corresponds to Document.metadataembedding vector(1536) -- 1536 works for OpenAI embeddings, change if needed
);CREATE OR REPLACE FUNCTION match_summaries(query_embedding vector(1536), match_count int, match_threshold float)RETURNS TABLE(id bigint,document_id bigint,content text,metadata jsonb,-- we return matched vectors to enable maximal marginal relevance searchesembedding vector(1536),similarity float)LANGUAGE plpgsqlAS $$# variable_conflict use_column
BEGINRETURN querySELECTid,document_id,content,metadata,embedding,1 -(summaries.embedding <=> query_embedding) AS similarityFROMsummariesWHERE 1 - (summaries.embedding <=> query_embedding) > match_thresholdORDER BYsummaries.embedding <=> query_embeddingLIMIT match_count;
END;
$$;

第四步:启动应用

        前面几步的准备工作做完了,现在就可以启动应用了。需要注意的是如果docker的版本过低的话会提示错误,需要更新docker。大家按照自己的时机情况更新到何时的版本即可。这一步启动时间比较长,因为要打包镜像并启动应用。

docker compose build && docker compose up

第五步:效果演示

用户登陆:

上传知识库:

 修改问答prompt进行问答

        接下来就可以进行知识库的问答了,目前源码还是支持英文的问答,咱们想要使用中文的话修改问答模版即可(作者很有意思为了防止模型胡乱问答模版提示词里特意提醒不要胡编乱造答案,哈哈哈),文件路径如下:

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

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

相关文章

标书打印分册小技巧

标书打印出来后&#xff0c;一般都有很多本&#xff0c;去打印店胶装标书时&#xff0c;需要把每一本标书分出来&#xff0c;黑帽大师用便签纸就能方便的分出标书。 把便签纸贴在每本标书的最后一页上&#xff0c;这样就能方便的分出每一本了。

学校计算机维护投标书,信息化系统硬件及应用系统安全运维服务投标书范本

这是一份信息化系统硬件及应用系统安全运维服务投标书范本&#xff0c;含运维服务方案&#xff0c;word格式&#xff0c;可编辑&#xff0c;有需要的朋友可以参考学习。 信息化系统硬件及应用系统安全运维服务 本次服务范围为XX局信息化系统硬件及应用系统&#xff0c;各类软硬…

招投标小程序开发功能及源码

一般获取招投标信息的渠道主要有三种&#xff0c;一&#xff0c;来源于官方、正规的政府网站、公共资源交易中心等&#xff1b;二&#xff0c;能提供针对性的招投标信息平台&#xff1b;三是通过个人的人脉资源来获取项目信息。今天我们重点讲下招投标平台怎么运营的&#xff0…

python制作标书_爬取比比网中标标书,并保存为PDF格式文件

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。 以下文章来源于CSDN&#xff0c;作者嗨学编程 python开发环境 python 3.6 pycharm import requests import parsel import pdfkit import time 相关模块pip安装即可 …

python制作标书_Python爬取比比网中标标书并保存成PDF格式

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。 python开发环境 python 3.6 pycharm requests parsel pdfkit time 相关模块pip安装即可 目标网页分析 1、先从列表页中获取详情页的URL地址 是静态网站,可以直接请求…

第一次写标书

由于工作需要开始写起标书。前后大概花了五天时间。 经过自我学习和老师指导&#xff0c;知道了一件事情&#xff0c;不管做什么&#xff0c;其实都是能够有所学习的。 而学习&#xff0c;为了有所收获&#xff0c;需要用心再去体会每一个过程&#xff0c;并记录下来&#xf…

小程序投标书_快来学习招投标小技巧!中标率提高50%(建议收藏)

99%的投标人使用【建企同盟APP】都中标了&#xff01; 建企同盟APP 招标信息不遮挡 订阅推送零费用 从保证中标的因素来看&#xff0c;三个因素最为重要&#xff0c;首先是关系&#xff0c;其次是能力&#xff0c;最后才是价格。关系指与用户的关系&#xff0c;既有最终用户又包…

小程序投标书_程序员接私活常用哪些平台?

给大家推荐国内外几个接外包比较靠谱的平台&#xff0c;相对来说规模和专业性都还不错。 想要接外包或者积累行业人脉的小伙伴都可以收藏一波&#xff1a; 国外篇 如果打算接国外的软件外包&#xff0c;首先以下几点能力需要提前掌握&#xff1a; 基本的英语沟通能力(能够基本沟…

重磅:AI 的 “iPhone 时刻” 已经到来

大家好&#xff0c;我是校长。 上周英伟达 CEO 黄仁勋在 GTC 大会主题演讲火爆了全网。 一起来看看黄仁勋说了什么。 英伟达 CEO 黄仁勋在 GTC 大会主题演讲上开场时这么说&#xff1a; “近四十年来&#xff0c;摩尔定律一直是引领计算机行业动态发展的重要规律&#xff0c;而…

AI内容生成检查器

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 AI进行内容生成已经是是当下的人们话题&#xff0c;那么怎么判断文本的内容是不是AI生成的呢&#xff1f;AI 生成的句子将被突出显示&#xff0c;目前工具可以检测…

ChatGPT生成文本检测器-task5

#### 任务五&#xff1a;使用TFIDF特征和XGBoost完成训练和预测 说明&#xff1a;在这个任务中&#xff0c;你需要使用TFIDF特征和XGBoost算法完成训练和预测&#xff0c;进一步提升文本分类的性能。实践步骤&#xff1a; 准备TFIDF特征矩阵和相应的标签。划分训练集和测试集。…

ChatGPT生成文本检测器-task2

#### 任务二&#xff1a;对数据集字符进行可视化&#xff0c;统计标签和字符分布 说明&#xff1a;在这个任务中&#xff0c;你需要使用Pandas库对数据集的字符进行可视化&#xff0c;并统计数据集中的标签和字符的分布情况&#xff0c;以便更好地理解数据集。实践步骤&#x…

ChatGPT生成文本检测器-task8

#### 任务八&#xff1a;使用Word2Vec词向量&#xff0c;搭建BILSTM模型进行训练和预测 说明&#xff1a;在这个任务中&#xff0c;你将使用Word2Vec词向量&#xff0c;搭建BILSTM模型进行文本分类的训练和预测&#xff0c;通过双向长短期记忆网络来进行文本分类。实践步骤&am…

ChatGPT生成文本检测器-task1

### 背景介绍 近年来人工智能在自然语言处理领域取得了巨大的进展。其中一项引人注目的技术是生成模型&#xff0c;如OpenAI的GPT-3.5。这类模型通过学习大量的文本数据&#xff0c;具备了生成高质量文本的能力&#xff0c;从而引发了一系列关于文本生成真实性的讨论。 正因为…

Mac GoLand打不开(闪退)也不报错

Mac用过GoLand&#xff0c;电脑应用初始化后就打不开了&#xff0c;下其他版本也不行 原因就是之前的配置文件还在需要清理&#xff1a; /Users/你的文件/Library/Preferences/ 配置文件在这个文件下

MAC 有些网址可以 ping 通,但是浏览器打不开

MAC 访问外网网址打不开&#xff0c;因为平时开着 VPN&#xff0c;故开始逐步排查问题&#xff1a; 重启电脑ping ip切换网络改 DNS 方法都试过了在公司还是不行&#xff0c;但是在家里能连上 最后解决办法是点击网络&#xff0c;新建位置就一切正常了。

Mac有些网址打不开问题解决办法

搜这个问题的兄嘚是不是遇到了这样的问题&#xff0c;大多数网页可以打开&#xff0c;但是某些网页确死活打不开&#xff0c;将连接发给朋友&#xff0c;人家秒开&#xff0c;很气&#xff0c;辣鸡Mac &#xff0c;&#xff0c;&#xff0c;困扰了我这么久&#xff0c;&#xf…

Mac上Chrome登录了LT网页打不开

Mac上首先登陆了LT成功的时候上面的菜单栏会显示点亮状态的LT 可是过了一段时间&#xff0c;发现菜单栏上的LT不见了&#xff0c;此时发现浏览器打开其他的网页的时候打不开 经过排查发现原因如下 需要退出这个LT进程 解决办法&#xff1a; 进入活动监视器&#xff0c;找到…

解决Mac能上微信聊QQ但是打不开网页的问题

解决Mac能上微信聊QQ但是打不开网页的问题 1.在访达中&#xff0c;前往文件夹 2.操作截图 复制代码 /Library/Preferences/SystemConfiguration/com.apple.Boot.plist3.在SystemConfiguration文件夹里面 4.只要留下com.apple.Boot.plist文件&#xff0c;其他全部删掉&#xf…

Mac 电脑能联网但打不开网页

Mac 电脑能联网但打不开网页 现象描述现象分析解决方法网络高级配置DNS 现象描述 今天电脑出现一个奇怪的现象&#xff0c;可以连接上网络&#xff0c;钉钉和微信可以正常收发信息&#xff0c;但是浏览器却怎么也访问不了网页&#xff0c;断网重新连接依然没作用&#xff0c;这…