基于 ChatGPT 实现一个 PDF 阅读器

这篇具有很好参考价值的文章主要介绍了基于 ChatGPT 实现一个 PDF 阅读器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近随着 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 吧

最新内容以及更好的阅读体验可查看我的博客原文文章来源地址https://www.toymoban.com/news/detail-406118.html

到了这里,关于基于 ChatGPT 实现一个 PDF 阅读器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用Adobe Reader PDF阅读器来验证电子签名有效性

    正常情况下,Adobe的阅读器打开PDF会显示“已签名且所有签名都有效”,表明这份PDF是一份没有经过篡改的电子文档,即 该PDF上所添加的 数字证书 是有效的数字证书; 该PDF上所添加的 数字签名 没有经过篡改; 该PDF上的 所有内容 没有经过篡改。 通过Adobe Reader阅读器打开签

    2024年02月07日
    浏览(42)
  • Koodo Reader : 一个开源免费的电子书阅读器

    今天在浏览 GitHub 的时候,偶然发现了一个非常有趣的开源项目——Koodo Reader。这个项目是一款开源免费的电子书阅读器,支持多种格式。它具有一些非常独特的功能,深深地吸引了我的注意。在接下来的内容中,我将为大家详细介绍一下这个备受关注的阅读器项目。 Koodo

    2024年01月22日
    浏览(33)
  • 基于微信小程序的小说阅读器小程序

    小说阅读器小程序 当今时代,是信息大爆炸的时代,人们每天都能接收到数不清的各类信息,其形式不仅包含传统的文字和图片,还有视频、音频等多阅读资料源也较以往增长了太多。因此市面上各种阅读类应用的用户体验参差不齐,所以设计一个通用的阅读器,小说阅读器

    2024年01月17日
    浏览(48)
  • 【Swift】拆分小说阅读器功能,分享内部实现

    公司项目结束了,公司估计也快黄了,年底事少,也给了我不少时间来维护博客。 公司的项目是一个类似于简书的创作平台,涵盖写作、小说、插画内容。 本期主要先下小说阅读部分,UI样式仿照的是微信读书样式,因之前也写过小说阅读器,但是代码并没有解耦,这次彻彻

    2024年01月20日
    浏览(40)
  • irreader RSS 订阅源阅读器工具软件 - 一款强大的网络内容阅读器

    irreader 是一款强大的网络内容阅读器,不仅支持订阅 RSS 文章,还能够订阅网站、播客等内容,将众多订阅源聚合于一处,告别纷杂的互联网信息。     方便的内置订阅源 软件界面采取源列表、文章列表和内容区三栏式布局,内置的「源市场」整合多种热门订阅源,并按照互

    2024年02月01日
    浏览(35)
  • 漫画聚合阅读器Tachidesk

    今天是老苏居家隔离的第 50 天。 周三没做核酸,还以为暂时不用做了,但是周四、周五一早又是抗原又是核酸,而且间隔就半个小时; 最近 https://cdn.jsdelivr.net 访问不了了, https://unpkg.com 也是,所以老苏的博客的图片和评论都要用点特殊手段才能看到。暂时就这样吧,反正

    2024年02月06日
    浏览(34)
  • javaoop项目:书虫阅读器

    2024年02月04日
    浏览(60)
  • iOS Epub阅读器改造记录

    六个月前在这个YHEpubDemo阅读器的基础上做了一些优化,这里做一下记录。 1.首行缩进修复 由于分页的存在,新的一页的首行可能是新的一行,则应该缩进;也可能是前面一页段落的延续,这时候不应该缩进。YHEpubDemo基于XDSReader,XDSReader目前存在新页首行没有缩进的问题。

    2024年02月12日
    浏览(27)
  • Dynamsoft 条形码阅读器 10.0.0 Crack

    将来自不同来源的图像数据转换为标准输入图像数据。 7月 06, 2023 - 10:32新版本 特征 SDK经过重构,与DynamsoftCaptureVision(DCV)架构集成,该架构包括: ImageSourceAdapter(ISA) - 用于将来自不同源的图像数据转换为标准输入图像数据的标准输入接口。此外,ISA还集成了一个图像

    2024年02月12日
    浏览(26)
  • Xpdf 阅读器源码编译后查看文件中文乱码问题解决

    经查阅,是由于缺少中文字体包: 第一步: 下载所需要的字体包 下载https://dl.xpdfreader.com/xpdf-t1fonts.tar.gz 包含 下载中文字体包(非嵌入字体) http://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/gkai00mp.ttf.gz http://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/gbsn00lp.ttf.gz 完整包含中文字体文件如

    2024年02月07日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包