基于 ChatGPT 实现一个 PDF 阅读器

article/2024/7/20 18:06:11

最近随着 OpenAI 开放了相关 API, 市面上出现了越来越多的 AI 应用,chatpdf 这个项目吸引了我的注意,它是如何突破 API 最大 token 的限制来读取这种长文本的呢?

基于对 chatpdf 原理的好奇,我开始研究起市面上相关的应用,于是简单了解后写了个简单的 demo 用于学习,顺便熟悉了下 OpenAI API 的使用。

Demo

在这个 Demo 中,你可以向 ChatGPT 提问 PDF 中的相关问题:

Demo地址
Github地址

Demo 是我提前跑好数据的 “GitHub 隐私协议”。目前 Prompt 还没调试到最佳状态,所以有些问题回答的不算很好。你可以尝试提问一些简单的问题,例如 “GitHub 隐私协议中有哪些个人信息被收集”。

DocsMind

我的新项目,支持 pdf 和 markdwon

Demo地址
Github地址

大致原理

  1. 提取 pdf 文本,以便后续处理。
  2. 由于 OpenAI API 对 Token 数量有限制,我们需要将 PDF 文本切分成小于 Token 限制的片段。
  3. 将每个片段使用 OpenAI 的 Embedding API 生成向量并保存到数据库(Postgres)中
  4. 开始提问题
  5. 将用户提出的问题转换为向量。
  6. 使用余弦相似度算法将用户提出的问题向量与数据库中的向量进行比较,找到与问题最相似的文本片段。
  7. 将片段文本喂给 ChatGPT,让它基于这些片段回答用户提出的问题。

使用到的技术栈

  • PostgresSql
  • Next.js
  • Supabase:用于保存向量和文本片段。

目前由于 OpenAI API 调用频率受限,大文件 pdf 在生成向量时需要控制好接口调用频率

专有名词

以下是一些专有名词,毕竟我也不是专业搞 AI 的,我就贴一下 ChatGPT 对这些词的理解

Embedding

Embedding 是一种将离散数据(例如单词、字符、图像等)转换为连续向量的技术。在自然语言处理中,Embedding 技术可以将单词或字符映射到一个低维的连续向量空间中,从而能够更好地表示语义信息。例如,“cat” 和 “dog” 这两个单词在 Embedding 空间中可能会被映射到离得比较近的向量,因为它们都表示动物,而 “cat” 和 “table” 这两个单词在 Embedding 空间中则可能会被映射到离得比较远的向量,因为它们表示的是不同的事物。

在 ChatGPT PDF 项目中,我们使用了 OpenAI 的 Embedding API 将 PDF 文本片段转换为向量,并将这些向量保存到数据库中。这样做的好处是可以更好地表示文本片段的语义信息,从而提高问题匹配的准确率。

余弦相似度算法

余弦相似度算法是一种用于计算两个向量之间相似度的方法。它的原理是通过计算两个向量的夹角余弦值来判断它们之间的相似度。

在 ChatGPT PDF 项目中,我们首先将用户提出的问题向量与数据库中的每个文本片段向量进行余弦相似度计算,然后选择最相似的那个文本片段作为上下文向 ChatGPT 提问。

参考资料

  • https://github.com/mckaywrigley/paul-graham-gpt
  • https://github.com/openai/openai-cookbook/blob/main/examples/How_to_stream_completions.ipynb
  • https://github.com/ddiu8081/chatgpt-demo

如果这个项目对你有所启发,不妨给我点个 star 吧

最新内容以及更好的阅读体验可查看我的博客原文


http://chatgpt.dhexx.cn/article/oXFUdBQd.shtml

相关文章

Paper简读 - ChatGPT相关的InstructGPT

欢迎关注我的CSDN:https://blog.csdn.net/caroline_wendy 本文地址:https://blog.csdn.net/caroline_wendy/article/details/128866056 发表于NLP会议:NeurlPS,EMNLP EMNLP: Empirical Methods in Natural Language Processing&a…

ChatGPT  一本正经的胡说八道 那也看看原理吧

最近,ChatGPT横空出世。这款被马斯克形容为“强大到危险”的AI,不但能够与人聊天互动,还能写文章、改代码。于是,人们纷纷想让AI替自己做些什么,有人通过两分钟的提问便得到了一篇完美的论文,有人希望它能帮…

ChatGPT辅助处理excel表格数据

选择使用方法 找现成的工具。试了两个,有各种问题。比如比如北大团队出品的ChatExcel等。我的表格列比较多,上传文件后需要砍掉一部分。输入几个命令以后就识别不了了。即使识别到了,输出也受限制,还不如手工处理。另外&#xff…

全新视角!带你一文读懂ChatGPT!

最了解你的人不是你的朋友,而是你的敌人。 ——《东邪西毒》 目录 什么是ChatGPT? ChatGPT为什么会突然爆红网络? ChatGPT能帮助我们做什么? 获取源码?私信?关注?点赞?收藏&…

AI提效工具|借助chatgpt快速读论文,快速总结、归纳、索引相似文章

目前新论文层出不穷,“快速阅读论文”成为研究者们一个必备能力。本文简单记录了近期出现的两个借助chatgpt来帮助我们快速读论文的“神器”,帮助大家快速上手应用,迅速提升论文阅读速度。 此外,本人也会定期更新记录一些类似的“…

Word+ChatGPT,一分钟完成周报总结作文

大家好,我是可夫小子,关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。加:keeepdance,备注:chatgpt,拉你进群。 Office 的办公软件Word,是我们日常的文字工作的阵地。与ChatGPT的文字生成…

ChatDOC工具——使用ChatGPT高效阅读技术科研论文

ChatDOC是一款功能强大的人工智能阅读辅助工具,专为帮助用户快速理解论文内容而设计。使用ChatDOC,您可以通过上传PDF版论文文献,利用先进的ChatGPT技术,只需三个简单步骤,便可以高效地阅读论文,提高阅读效…

如何用 ChatGPT 帮你10分钟读完数据库论文

本周,OpenAI 向所有 ChatGPT Plus 用户开放了两个重要功能: Web Browsing 和 Plugins 它俩都需要用户自己开启,才能使用,如下: 作为对数据库论文的爱好者,我第一款挑选的 Plugin 便是 ChatWithPDF,毕竟真的…

ChatGPT实现代码解释

代码解释 新手程序员在入门之初,最好的学习路径就是直接阅读其他人的代码,从中学会别人是怎么写的,为什么这么写。过去,这个学习过程可能需要广泛阅读官方文档,在 GitHub issue 上提问,上 Stack Overflow …

chatPDF | 别再自己读文献了!让chatGPT来帮你读吧!~

1写在前面 自从chatGPT开放API以后,相关基于此的app也是层出不穷。🤪 ChatGPT API是基于OpenAI的自然语言处理模型的API。🧐 基于这个API,开发人员可以通过程序调用和使用ChatGPT模型来解决各种文本相关的任务。😉 其实…

使用ChatGPT工具阅读文献的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

chatGPT陪你读源码

概述 chatGPT从2022年11月份崭露头角以来,一直备受关注。他的人工智能对话颠覆了以往智能对话的刻板印象,跟chatGPT聊天,感觉就像百晓生一样,什么都懂。尤其在编程方面,chatGPT可以根据实际的业务场景需求&#xff0c…

用 ChatGPT 读 Vue3 源码,会怎么样?

前言 ChatGPT 最近十分火爆,今天我也来让 ChatGPT 帮我阅读一下 Vue3 的源代码。 都知道 Vue3 组件有一个 setup函数。那么它内部做了什么呢,今天跟随 ChatGPT 来一探究竟。 实战 setup 函数在什么位置呢,我们不知道他的实现函数名称&…

ChatGPT读PDF、生成思维导图的几种方案

大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AIGC、读书和自媒体。 日常办公,我们离不开pdf文档读取,思维导图制作,那么ChatGPT能够给我们什么帮助呢? 通常的方法是:我们…

chatgpt赋能python:Numpy读音:是“num-pie”还是“num-pee”?

Numpy读音:是“num-pie”还是“num-pee”? 你是否曾经在想,“numpy”这个词怎么念?很多人都有不同的看法。有些人说“num-pie”,而另一些人则说“num-pee”。那么,谁是正确的呢?在这篇文章中&a…

一文读懂ChatGPT(全文由ChatGPT撰写)

最近ChatGPT爆火,相信大家或多或少都听说过ChatGPT。到底ChatGPT是什么?有什么优缺点呢? 今天就由ChatGPT自己来给大家答疑解惑~ 全文文案来自ChatGPT! 01 ChatGPT是什么 ChatGPT是一种基于人工智能技术的自然语言处理系统&…

【记录】ChatGPT使用记录

文章目录 2023年02月08日数学哲学Java其他 2023年02月09日ChatGPT网络 2023年02月10日算法组网 2023年02月11日ChatGPT(优化目标)DOS 2023年02月15日影评(三体、流浪地球2)Discord 2023年02月17日翻译 🔥 根据对话的日…

ChatGPT App 来了!

两个月前,在 ChatGPT 相继公开 API、带来「插件功能」之际,我们明显感知到了 GPT 正在以前所未有的速度成为人工智能时代的 Windows,AI 发展也正处于 iPhone 4 时刻。 当下,ChatGPT 的进度再下一城,其自身真正迎来了 …

ChatGPT大规模封锁亚洲地区账号

我是卢松松,点点上面的头像,欢迎关注我哦! 在毫无征兆的情况下,从3月31日开始OpenAI大规模封号,而且主要集中在亚洲地区,特别是ip地址在台湾、日本、香港三地的,命中率目测40%。新注册的账号、…

Chatgpt详细登录教程

一、准备“梯子” 梯子、科学上网、翻墙,三者是同一个意思。本店没相关科技产品和服务,请用户各显神通。 1. 确认IP 打开跳转入口,看下图 ​ 2.尝试登录 注意,第1点不是必需的,有些设备ip查询会延迟但当下依然能登…