【chatgpt】将PDF文件当做知识源

这篇具有很好参考价值的文章主要介绍了【chatgpt】将PDF文件当做知识源。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概要

指定知识源来回答问题。非常适用于公司里某些专业领域。
下文是将2023_GPT4All_Technical_Report.pdf文件当做知识源,来回答问题。

具体:

  1. 通过加载PDF文件,读取里面的内容。
  2. 将内容进行压缩成块,交给openai embeddings处理(创建知识的门牌号、房间(具体知识)的对应关系)
  3. 利用FAISS(short for Facebook AI Similarity Search),进行问题搜索,得到答案。
  4. 再将问题和答案,交给openai进行润色。

准备工作

pip install langchain
pip install openai
pip install PyPDF2
pip install faiss-cpu
pip install tiktoken

代码

from PyPDF2 import PdfReader
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import ElasticVectorSearch, Pinecone, Weaviate, FAISS

import os
os.environ["OPENAI_API_KEY"] = "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"


# location of the pdf file/files. 
reader = PdfReader('/Users/yutao/Downloads/2023_GPT4All_Technical_Report.pdf')

# read data from the file and put them into a variable called raw_text
raw_text = ''
for i, page in enumerate(reader.pages):
    text = page.extract_text()
    if text:
        raw_text += text

# raw_text
# raw_text[:100]

text_splitter = CharacterTextSplitter(        
    separator = "\n",
    chunk_size = 1000,
    chunk_overlap  = 200,
    length_function = len,
)
texts = text_splitter.split_text(raw_text)

print(len(texts))
# print(texts[0])

# Download embeddings from OpenAI
embeddings = OpenAIEmbeddings()

# faiss是Facebook ai similarity search的缩写
# 一种为了对嵌入向量进行高效搜索的索引结构
# https://huggingface.co/learn/nlp-course/chapter5/6?fw=pt#using-faiss-for-efficient-similarity-search
docsearch = FAISS.from_texts(texts, embeddings)

from langchain.chains.question_answering import load_qa_chain
from langchain.llms import OpenAI

chain = load_qa_chain(OpenAI(), chain_type="stuff")

query = "who are the authors of the article?"
docs = docsearch.similarity_search(query)
# 将搜索到的结果、问题,交给openai进行润色
aa = chain.run(input_documents=docs, question=query)
print("---------")
# print(docs)
print(aa)

# 理解:embeddings 将分词数据,映射到向量空间中,用于相关性的计算。

query = "What was the cost of training the GPT4all model?"
docs = docsearch.similarity_search(query)
aa = chain.run(input_documents=docs, question=query)
print(aa)

参考地址:

https://colab.research.google.com/drive/181BSOH6KF_1o2lFG8DQ6eJd2MZyiSBNt?usp=sharing#scrollTo=2VXlucKiW7bX文章来源地址https://www.toymoban.com/news/detail-493989.html

到了这里,关于【chatgpt】将PDF文件当做知识源的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Java实战:高效提取PDF文件指定坐标的文本内容

    临时接到一个紧急需要处理的事项。业务侧一个同事有几千个PDF文件需要整理:需要从文件中的指定位置获取对应的编号和地址。 要的急,工作量大。所以就问到技术部有没有好的解决方案。 问技术的话就只能写个demo跑下了。 PDF的文档看起来比较简单,因为只是需要读取两

    2024年02月13日
    浏览(49)
  • 使用MD5当做文件的唯一标识,这样安全么?

    MD5(Message Digest Algorithm 5)是一种常用的哈希函数,用于将任意长度的数据映射为固定长度的哈希值。它广泛应用于数据完整性验证、密码存储等领域。 MD5常用于文件完整性验证。通过对文件进行MD5哈希计算,可以生成唯一的哈希值,用于识别文件的内容是否发生改变。这在

    2024年01月18日
    浏览(29)
  • [python]裁剪文件夹中所有pdf文档并按名称保存到指定的文件夹

    最近在写论文的实验部分,由于latex需要pdf格式的文档,审稿专家需要对pdf图片进行裁剪放大,以保证图片质量。 原图: 裁剪后的图像: 代码粘贴如下。将input_folder和output_folder替换即可。(x1, y1), (x2, y2) 分别代表裁剪框的像素位置。

    2024年01月19日
    浏览(55)
  • 【PDFBox】PDFBox操作PDF文档之读取指定页面文本内容、读取所有页面文本内容、根据模板文件生成PDF文档

    这篇文章,主要介绍PDFBox操作PDF文档之读取指定页面文本内容、读取所有页面文本内容、根据模板文件生成PDF文档。 目录 一、PDFBox操作文本 1.1、读取所有页面文本内容 1.2、读取指定页面文本内容 1.3、写入文本内容 1.4、替换文本内容 (1)自定义PDTextStripper类 (2)创建Key

    2024年02月16日
    浏览(53)
  • Hbase/Hive知识概要

    1、HBase特点 Hbase是构建在HDFS上的分布式数据库,提供 高可靠性 、 高性能 、 列存储 、 可伸缩 、 实时读写 的分布式数据库系统。HBase主要用于大数据领域,MySQL 是行式存储,HBase 是列式存储。 HBase 是一种构建在 HBase 之上的分布式、面向列的存储系统,需要实时读写、随机

    2024年02月07日
    浏览(24)
  • Java将获取的参数,图片以及pdf文件放入到word文档指定位置

    首先引入的依赖 接下面的是template.docx文档,参数是以{{paramName}}格式的,为什么要以这种格式,是因为下面的方法,在替换参数的时候需要 但是从数据库获取的参数跟模板中的参数一一对应上即可,格式如下(我是json形式展示的): {     \\\"countQuota\\\": \\\"1\\\",     \\\"noEmission\\\": \\\"1\\\",  

    2024年02月15日
    浏览(44)
  • Python3,9行批量提取PDF文件的指定内容,这种操作,保证人见人爱....

    小屌丝 :鱼哥, 你有没有什么办法,提取PDF文档的内容。 小鱼 :这个还问我?? 小屌丝 :哎呀,这个不是被难住了嘛 。 小鱼 :有啥难得?提示你一下, 小屌丝 :嗯,可以可以。 小鱼 :去我的博文找,没记错的话,有两种方法提取pdf的文字。 小屌丝 :好嘞, 我这就去

    2024年02月04日
    浏览(41)
  • 如何用ChatGPT提取论文概要

    [ 请点击上方“云智AI”关注我们  │  谢谢支持  ] Cloud wisdom, AI assistant 我们在写小论文、学术论文或者毕业大论文时,有没有过这种体验:看着论文题目挺符合,但是通过下载看到论文后,发现与想到或者与关联主题不符合,这样反复操作浪费了很多找论文的时间。 有没有

    2024年02月08日
    浏览(22)
  • git如何忽略指定文件以及gitignore相关知识

    文章概要 :本文主要介绍了git中如何忽略指定文件,包括已经commit了的文件。解释了gitignore文件的写法以及提供了常见的gitignore模版。 本文内容来自:谷流仓AI - ai.guliucang.com 在平常写代码使用git的过程中,我们项目有些文件是不适合提交到仓库的,因此需要让git忽略这些文

    2024年04月25日
    浏览(30)
  • chatGPT问答 之 Webpack 5 多入口打包如何指定打包文件名为规定的文件名

    chatGPT越来越令人惊奇,有一些答案在百度上搜半天却找不到你想要的,但与chatGPT的聊天中就可以非常快的得到你想要的结果,不得不说人工智能很好用下面就是我与chatGPT的聊天内容 在Webpack 5中,可以使用 output.filename 选项来指定多入口打包后的文件名规则。 output.filename 可

    2024年02月02日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包