LangChain——加载知识库文本文档 PDF文档

文档加载

这涵盖了如何加载目录中的所有文档。 在底层,默认情况下使用 UnstructedLoader。需要安装依赖

pip install unstructured

python导入方式

from langchain_community.document_loaders import DirectoryLoader

我们可以使用 glob 参数来控制加载特定类型文件。请注意,此处它不会加载 .rst 文件或 .html 文件。

loader = DirectoryLoader('../', glob="**/*.md")

默认情况下不会显示进度条。要显示进度条,请安装 tqdm 库(例如 pip install tqdm ),并将 show_progress 参数设置为 True 。

loader = DirectoryLoader('../', glob="**/*.md", show_progress=True)
docs = loader.load()

加载单个文档

from langchain_community.document_loaders import TextLoader

# TextLoader 文本加载器 txt、md、html等文件都可进行加载
loader = TextLoader("./txt/faq-4359.txt",encoding="utf8")
doc = loader.load()

例如

loader1 = TextLoader("./txt/faq-7923.txt",encoding="utf8")
doc1 = loader1.load()

# 输出结果
#[Document(page_content='众测活动\n\n整体介绍:\n\n一、活动定义:众测是以低价试销的形式,通过收集评价、销量等方法,用于测试市场对新商品的反应,用于及时优化销售策略和引导商家改进。\n\n二、优势:众测价通常比较优惠,以不高于大促促销价为原则,最终以与物权方谈判结果为准。\n\n三、适用范围:华为商城所有产品。\n\n\n\n参与方式:\n\n1、华为商城众测的入口在哪里?\n\n华为商城搜索“众测”,即可看到众测入口,点击进入即可;\n\n2、众测上新频次:\n\n众测频道每周一至周五不定期更新上架,部分商品可能会特别调整;\n\n3、众测活动时间:\n\n一款产品众测时间通常为10-20天(热销的商品可能会延期5-10天)。\n\n \n\n常见问题:\n\n1、众测商品的来源?\n\n     您好,众测商品主要来源为华为商城上架的新品,热销的爆款商品也会不定期通过众测回归上线。\n\n2、众测商品的价格会优惠吗?\n\n     您好,众测商品价格对标618和双十一,一般都是该商品某段时间的最低促销价。\n\n3、 众测商品质量会不稳定么?\n\n     您好,众测商品也是量产的正品新品,质量与正式上架商品一致。 \n\n4、众测商品买下后多久发货?\n\n     您好,请以商品页显示为准。\n\n5、提交活动订单后多久内支付?\n\n     您好,提交订单后最长付款时效为24小时,逾期订单自动取消\n\n6、成功下单后怎么查询众测订单?\n\n     您好,成功下单后,您可以通过华为商城手机APP、华为商城手机WAP版、华为商城电脑网页版任意一端登录下单账户,在“我的订单”查询。(众测商品订单查询方式等同于正常商品订单)\n\n7、订单支付后未发货前可以取消订单吗?\n\n     您好,在发货前消费者可以取消订单。\n\n8、取消订单后多久内退回款项?\n\n     您好,和华为商城智能家居生态产品通用退款时效一致,3-5个工作日。\n\n9、一个账号可以参与几次众测活动?有限购吗?\n\n     您好,一个账号参与众测活动的次数无限制,没有限购。但每次订单只能购买一个商品。如您需要购买多个产品,可以多次参与众测活动。', metadata={'source': './txt/faq-7923.txt'})]

假设导入了多个文档进来,将导入的文档转化成为向量;

from langchain_community.vectorstores import FAISS
from langchain_community.embeddings.huggingface import HuggingFaceEmbeddings
embeddings_path = "D:\\ai\\download\\bge-large-zh-v1.5"
embeddings = HuggingFaceEmbeddings(model_name=embeddings_path)
vectorStoreDB = FAISS.from_documents([doc[0],doc1[0],doc2[0]],embedding=embeddings)

vectorStoreDB.similarity_search("回收手机的话,应该怎么操作?")
# 在向量中进行相似度的搜索
#输出结果:
# Document(page_content='众测活动\n\n整体介绍:\n\n一、活动定义:众测是以低价试销的形式,通过收集评价、销量等方法,用于测试市场对新商品的反应,用于及时优化销售策略和引导商家改进。\n\n二、优势:众测价通常比较优惠,以不高于大促促销价为原则,最终以与物权方谈判结果为准。\n\n三、适用范围:华为商城所有产品。\n\n\n\n参与方式:\n\n1、华为商城众测的入口在哪里?\n\n华为商城搜索“众测”,即可看到众测入口,点击进入即可;\n\n2、众测上新频次:\n\n众测频道每周一至周五不定期更新上架,部分商品可能会特别调整;\n\n3、众测活动时间:\n\n一款产品众测时间通常为10-20天(热销的商品可能会延期5-10天)。\n\n \n\n常见问题:\n\n1、众测商品的来源?\n\n     您好,众测商品主要来源为华为商城上架的新品,热销的爆款商品也会不定期通过众测回归上线。\n\n2、众测商品的价格会优惠吗?\n\n     您好,众测商品价格对标618和双十一,一般都是该商品某段时间的最低促销价。\n\n3、 众测商品质量会不稳定么?\n\n     您好,众测商品也是量产的正品新品,质量与正式上架商品一致。 \n\n4、众测商品买下后多久发货?\n\n     您好,请以商品页显示为准。\n\n5、提交活动订单后多久内支付?\n\n     您好,提交订单后最长付款时效为24小时,逾期订单自动取消\n\n6、成功下单后怎么查询众测订单?\n\n     您好,成功下单后,您可以通过华为商城手机APP、华为商城手机WAP版、华为商城电脑网页版任意一端登录下单账户,在“我的订单”查询。(众测商品订单查询方式等同于正常商品订单)\n\n7、订单支付后未发货前可以取消订单吗?\n\n     您好,在发货前消费者可以取消订单。\n\n8、取消订单后多久内退回款项?\n\n     您好,和华为商城智能家居生态产品通用退款时效一致,3-5个工作日。\n\n9、一个账号可以参与几次众测活动?有限购吗?\n\n     您好,一个账号参与众测活动的次数无限制,没有限购。但每次订单只能购买一个商品。如您需要购买多个产品,可以多次参与众测活动。', metadata={'source': './txt/faq-7923.txt'}),



vectorStoreDB.similarity_search_with_score("回收手机的话,应该怎么操作?")
#显示相似度得分
#输出结果:
#[(Document(page_content='**一、选择回收物品**\n\n点击VMALL您可以在设备回收分类中选择旧商品的类别以及品牌,现在VMALL支持回收部分品牌和型号的手机、笔记本、平板、智能数码以及摄影摄像。如若在此页面上找不到您的品牌或型号,您可以点击品牌栏右下方的加号(如下图红圈部分所示)查看VMALL所支持回收的所有品牌型号。首页滚动电子横幅右下方“以旧换新”标志(如下图红框部分所示),进入“以旧换新”页面。\n\n![以旧换新图片](https://threejs-1251830808.cos.ap-guangzhou.myqcloud.com/73564551948615546537.png)\n\n(以下图片为参考流程,实际以页面为准)\n\n![设备回收图片](https://threejs-1251830808.cos.ap-guangzhou.myqcloud.com/18969746813614796981.png)\n\n选择好您的旧商品后请点击商品图标,进入价格评估页面。\n\n\n\n**二、价格评估**\n\n在价格评估界面上,您需要对旧商品的基本信息(网络制式、存储容量、购买渠道、机身颜色),外观成色(边框背板,屏幕外观,屏幕显示,维修情况),和多功能选项参数进行评估,请如实填写您的手机情况。完成所有参数选择,请估价按钮(如下图红框部分所示)。\n\n完成所有参数选择,请点击“免费询价”按钮(如下图红框部分所示)。\n\n![免费询价图片](https://threejs-1251830808.cos.ap-guangzhou.myqcloud.com/37174946813614947173.png)\n\n**三、价格评估结果**\n\n您可以查看手机的估价和这款手机的回收价格趋势,如果填写有什么问题,可以点击“重新询价”或“重新选择机型”更改;确认无误后,点击“换钱”按钮进入订单页面。\n\n![价格评估结果图片](https://threejs-1251830808.cos.ap-guangzhou.myqcloud.com/28422256813615222482.png)\n\n**四、提交订单**\n\n在订单页面,您可以从以下两种常规回收方式选择一种进行回收,并提交订单结账。(回收宝支持顺丰上门、上门质检回收,爱回收支持顺丰上门、质检上门、信用回收)\n\n![图5.png](https://threejs-1251830808.cos.ap-guangzhou.myqcloud.com/47605356813615350674.png)\n\n(1)顺丰上门回收操作流程\n\n① 回收方式:选择顺丰快递回收\n\n② 提交订单:填写联系人、电话号码、取货地址及上门时间,提交订单\n\n③ 上门取货:回收订单提交成功,快递员会按照填写的上门时间上门取货\n\n④ 确认交易:回收商会在收到旧机的48小时内完成检测,若价格与您提交订单时的价格一致,将立即发放华为代金券。\n\n(2)质检师上门回收操作流程\n\n① 回收方式:选择质检师上门回收。\n\n② 提交订单:填写联系人信息、手机号码、上门地址及上门时间,提交订单\n\n③ 确认交易:如通过质检师上门回收,在完成检测后,代金券可实时到账。\n\n![质检师上门回收操作流程图片](https://threejs-1251830808.cos.ap-guangzhou.myqcloud.com/67845656813615654876.png)\n\n\n\n五、以旧换新答疑 :更多关于以旧换新的问题请点击 “[以旧换新答疑](https://www.vmall.com/help/category-251.html)”查看。', metadata={'source': './txt/yjhx.md'}),
  0.84503603),

目录加载器

将目录下的全部文件加载进来

from langchain_community.document_loaders import DirectoryLoader

loader = DirectoryLoader('./txt')

docs = loader.load()

#输出结果
#[Document(page_content='一、什么是0分期利息\n\n您好,“0分期利息”是指买家使用花呗、招行掌上生活、工行信用卡、银联信用卡等其他分期购物时无需支付分期利息的功能,分期利息由华为商城承担。\n\n注:自2023年起,商城将相关宣传将“免息”调整为“0分期利息”,主要基于中国银保监会、中国人民银行《关于进一步促进信用卡业务规范健康发展的通知》(银保监规〔2022〕13号),要求“银行业金融机构应当在分期业务合同(协议)首页和业务办理页面以明显方式展示分期业务可能产生的所有息费项目、年化利率水平和息费计算方式。向客户展示分期业务收取的资金使用成本时,应当统一采用利息形式,并明确相应的计息规则,不得采用手续费等形式,法律法规另有规定的除外。”\n\n二、可以参与0分期利息活动的商品\n\n商城目前仅支持部分单品参与0分期利息,若多商品(含不支持0分期利息)合并支付则不支持0分期利息,以支付页面为准,后续会逐渐开放更多商品,敬请关注。\n\n三、确认订单分期成功\n\n订单提交成功后在支付方式页面选择分期支付,点选显示0分期利息的支付方式及具体0分期利息期数后,完成支付。\n\n四、订单中有多个商品,其中有商品支持0分期利息,为什么提交后却没有0分期利息?\n\n0分期利息商品不能和其它商品一起购买,如果和其他商品购买而不能享用0分期利息,建议取消原来的订单,重新购买时把0分期利息商品和其他商品分开单独购买;且0分期利息的分期数是固定的,如6期0分期利息,并不是3/6/12都提供0分期利息的。\n\n五、小程序是否支持0分期利息?\n\n华为商城小程序暂不支持0分期利息。', metadata={'source': 'txt\\faq-4359.txt'}), Document(page_content='众测活动\n\n整体介绍:\n\n一、活动定义:众测是以低价试销的形式,通过收集评价、销量等方法,用于测试市场对新商品的反应,用于及时优化销售策略和引导商家改进。\n\n二、优势:众测价。。。

如何检索出相似度最高的文件?

  1. 最大边际相关性检索(MMR): 想象你在一个图书馆里找关于“猫咪”的书籍。MMR就像是一个智能助手,帮你挑选书籍。它会先找到一本最相关的书,比如《猫咪百科全书》。然后,它会寻找第二本书,这本书不仅要与“猫咪”相关,还要与第一本书的内容有所不同,比如可能会找一本关于“猫咪训练”的书。MMR的目标是让你既能找到有用的信息,又能获得不同方面的知识。
  2. 余弦相似度: 余弦相似度是一种测量两个向量在多维空间中角度的方法。继续用图书馆的例子,你可以把每本书想象成一个向量,它的每个维度代表这本书包含的不同关键词。余弦相似度会计算两本书的向量之间的角度,如果两本书的向量角度接近0度,那么它们在内容上非常相似;如果角度接近90度,那么它们的内容就不那么相似。
    总结一下
    MMR是一个帮你挑选书籍的策略,它力求找到既相关又多样的书籍组合。
    余弦相似度是一个测量两本书内容相似度的工具,它通过比较书中的关键词向量来判断。

实现方法:

# 最大边际相关性检索(MMR)
retriever = vectorStoreDB.as_retriever(
    search_type="mmr",
    search_kwargs={"k": 1}
)
# k值就是筛选相似的个数;例如此时输出的相似度最大的一个

#使用余弦相似度
retriever = vectorStoreDB.as_retriever(
    search_type="similarity_score_threshold", search_kwargs={"score_threshold": 0.3}
)
#相似的得分阈值大于0.3时会选中输出

PDF

可移植文档格式 (PDF),标准化为 ISO 32000,是 Adobe 于 1992 年开发的一种文件格式,用于以独立于应用程序软件、硬件和操作系统的方式呈现文档,包括文本格式和图像。
使用 pypdf 将 PDF 加载到文档数组中,其中每个文档包含页面内容和带有 page 编号的元数据。

pip install pypdf
from langchain_community.document_loaders import PyPDFLoader

loader = PyPDFLoader("./pdf/2403.04667.pdf")
pages = loader.load_and_split()
# 我们可以使用页码来搜索文档
#例如pages[0]


docs = ""
# 循环合并文档
for item in pages:
    docs += item.page_content

PDF目录

Load PDFs from directory 从目录加载 PDF

from langchain_community.document_loaders import PyPDFDirectoryLoader

loader = PyPDFDirectoryLoader("pdf/")

docs = loader.load()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

安装Docker报错TCP connection reset by peer或者Timeout

原因:访问的外网下载导致超时或者断连接报错 修改为国内阿里下载地址 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

Linux宝塔部署wordpress网站更换服务器IP后无法访问管理后台和打开网站页面显示错乱

一、背景: wordpress网站搬家,更换服务器IP后,如果没有域名时,使用服务器IP地址无法访问管理后台和打开网站页面显示错乱。 二、解决方法如下: 1.wordpress搬家后,在新服务器上,新建站点时&am…

Rust Newtype模式(通过结构体封装现有类型来创建新的类型)(单字段结构体,通过.0访问)模式匹配、解构、DerefMut

文章目录 深入理解Rust中的Newtype模式什么是Newtype模式?Newtype模式的基本形式Newtype的访问访问 Newtype 的值1. 通过 .0 访问字段2. 通过方法访问3. 通过模式匹配(解构)访问 总结 Newtype模式的应用场景1. 类型安全2. 增强可读性3. 定制化…

【ArcGIS Pro】实现一下完美的坐标点标注

在CAD里利用湘源可以很快点出一个完美的坐标点标注。 但是在ArcGIS Pro中要实现这个效果却并不容易。 虽然有点标题党,这里就尽量在ArcGIS Pro中实现一下。 01 标注实现方法 首先是准备工作,准备一个点要素图层,包含xy坐标字段。 在地图框…

【ArcGIS Pro实操第10期】统计某个shp文件中不同区域内的站点数

统计某个shp文件中不同区域内的站点数 方法 1:使用“空间连接 (Spatial Join)”工具方法 2:使用“点计数 (Point Count)”工具方法 3:通过“选择 (Select by Location)”统计方法 4:通过“Python 脚本 (ArcPy)”实现参考 在 ArcGI…

学习threejs,使用设置lightMap光照贴图创建阴影效果

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.MeshLambertMaterial…

Cocos编辑器

1、下载 下载地址:https://www.cocos.com/creator-download 2、编辑器界面介绍 官方链接:https://docs.cocos.com/creator/3.8/manual/zh/editor/ 3、项目结构 官方链接:https://docs.cocos.com/creator/3.8/manual/zh/getting-started/…

C++11特性(详解)

目录 1.C11简介 2.列表初始化 3.声明 1.auto 2.decltype 3.nullptr 4.范围for循环 5.智能指针 6.STL的一些变化 7.右值引用和移动语义 1.左值引用和右值引用 2.左值引用和右值引用的比较 3.右值引用的使用场景和意义 4.右值引用引用左值及其一些更深入的使用场景分…

Notepad++ 替换所有数字给数字加单引号

前言 今天遇到这样一个场景: 要去更新某张表里 code1,2,3,4,5,6 的数据,把它的 name 设置为 ‘张三’ 但是 code在数据库里面的字段类型是 vachar(64),它自身携带索引 原本可以这样写 SQL: update tableA set namezhangsan where code in …

Django 路由层

1. 路由基础概念 URLconf (URL 配置):Django 的路由系统是基于 urls.py 文件定义的。路径匹配:通过模式匹配 URL,并将请求传递给对应的视图处理函数。命名路由:每个路由可以定义一个名称,用于反向解析。 2. 基本路由配…

工作中可以用到的前端小知识(不定时更新)

1、split 结合 filter(Boolean)使用,可以过滤空字符 2、分割 Unicode 字符 用 Array.from() 实现 const text "👍😊👨‍👩‍👦"; const result Array.from(text); console.log(result); // 输…

第R4周:LSTM-火灾温度预测(TensorFlow版)

>- **🍨 本文为[🔗365天深度学习训练营]中的学习记录博客** >- **🍖 原作者:[K同学啊]** 往期文章可查阅: 深度学习总结 任务说明:数据集中提供了火灾温度(Tem1)、一氧化碳浓度…

CTF-Hub SQL 报错注入(纯手动注入)

​ 当输入1时,发现只有查询正确,基本上可以判断出没有回显 开始注入(工具hackerBar) 题目是报错注入,方向就比较明显,大致说一下用到的函数和原理。 常见报错注入函数: 通过 floor() 报错注入通过 extractValue() …

创建HTTPS网站

每天,我们都会听到网络上发生身份盗窃和数据侵权的案例,这导致用户对自己访问的网站更加怀疑。他们开始更加了解自己将个人信息放在哪里以及信任哪些类型的网站。了解如何使网站使用HTTPS变得比以往任何时候都更加重要。 解读缩略词:HTTP与HT…

计算(a+b)/c的值

计算(ab)/c的值 C语言代码C语言代码Java语言代码Python语言代码 💐The Begin💐点点关注,收藏不迷路💐 给定3个整数a、b、c,计算表达式(ab)/c的值,/是整除运算。 输入 输入仅一行&…

Flink Sink的使用

经过一系列Transformation转换操作后,最后一定要调用Sink操作,才会形成一个完整的DataFlow拓扑。只有调用了Sink操作,才会产生最终的计算结果,这些数据可以写入到的文件、输出到指定的网络端口、消息中间件、外部的文件系统或者是…

Java【多线程】(1)进程与线程

目录 1.前言 2.正文 2.1什么是进程 2.2PCB(进程控制块) 2.2.1进程id 2.2.2内存指针 2.2.3文件描述符表 2.2.4进程状态 2.2.4.1就绪状态 2.2.4.2阻塞状态 2.2.5进程优先级 2.2.6进程上下文 2.2.7进程的记账信息 2.3CPU操作进程的方法 2.4什…

一个专为云原生环境设计的高性能分布式文件系统

大家好,今天给大家分享一款开源创新的分布式 POSIX 文件系统JuiceFS,旨在解决海量云存储与各类应用平台(如大数据、机器学习、人工智能等)之间高效对接的问题。 项目介绍 JuiceFS 是一款面向云原生设计的高性能分布式文件系统&am…

Jmeter中的断言

7)断言 1--响应断言 功能特点 数据验证:验证响应数据是否包含或不包含特定的字符串、模式或值。多种匹配类型:支持多种匹配类型,如文本、正则表达式、文档等。灵活配置:可以设置多个断言条件,满足复杂的测…

游戏引擎学习第23天

实时代码编辑功能的回顾 当前实现的实时代码编辑功能已经取得了显著的成功,表现出强大的性能和即时反馈能力。该功能允许开发者在修改代码后几乎立即看到变化在运行中的程序中体现出来,极大提升了开发效率。尽管目前的演示内容较为简单,呈现…