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\n\n(以下图片为参考流程,实际以页面为准)\n\n\n\n选择好您的旧商品后请点击商品图标,进入价格评估页面。\n\n\n\n**二、价格评估**\n\n在价格评估界面上,您需要对旧商品的基本信息(网络制式、存储容量、购买渠道、机身颜色),外观成色(边框背板,屏幕外观,屏幕显示,维修情况),和多功能选项参数进行评估,请如实填写您的手机情况。完成所有参数选择,请估价按钮(如下图红框部分所示)。\n\n完成所有参数选择,请点击“免费询价”按钮(如下图红框部分所示)。\n\n\n\n**三、价格评估结果**\n\n您可以查看手机的估价和这款手机的回收价格趋势,如果填写有什么问题,可以点击“重新询价”或“重新选择机型”更改;确认无误后,点击“换钱”按钮进入订单页面。\n\n\n\n**四、提交订单**\n\n在订单页面,您可以从以下两种常规回收方式选择一种进行回收,并提交订单结账。(回收宝支持顺丰上门、上门质检回收,爱回收支持顺丰上门、质检上门、信用回收)\n\n\n\n(1)顺丰上门回收操作流程\n\n① 回收方式:选择顺丰快递回收\n\n② 提交订单:填写联系人、电话号码、取货地址及上门时间,提交订单\n\n③ 上门取货:回收订单提交成功,快递员会按照填写的上门时间上门取货\n\n④ 确认交易:回收商会在收到旧机的48小时内完成检测,若价格与您提交订单时的价格一致,将立即发放华为代金券。\n\n(2)质检师上门回收操作流程\n\n① 回收方式:选择质检师上门回收。\n\n② 提交订单:填写联系人信息、手机号码、上门地址及上门时间,提交订单\n\n③ 确认交易:如通过质检师上门回收,在完成检测后,代金券可实时到账。\n\n\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 DirectoryLoaderloader = 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二、优势:众测价。。。
如何检索出相似度最高的文件?
- 最大边际相关性检索(MMR): 想象你在一个图书馆里找关于“猫咪”的书籍。MMR就像是一个智能助手,帮你挑选书籍。它会先找到一本最相关的书,比如《猫咪百科全书》。然后,它会寻找第二本书,这本书不仅要与“猫咪”相关,还要与第一本书的内容有所不同,比如可能会找一本关于“猫咪训练”的书。MMR的目标是让你既能找到有用的信息,又能获得不同方面的知识。
- 余弦相似度: 余弦相似度是一种测量两个向量在多维空间中角度的方法。继续用图书馆的例子,你可以把每本书想象成一个向量,它的每个维度代表这本书包含的不同关键词。余弦相似度会计算两本书的向量之间的角度,如果两本书的向量角度接近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),标准化为 ISO 32000,是 Adobe 于 1992 年开发的一种文件格式,用于以独立于应用程序软件、硬件和操作系统的方式呈现文档,包括文本格式和图像。
使用 pypdf 将 PDF 加载到文档数组中,其中每个文档包含页面内容和带有 page 编号的元数据。
pip install pypdf
from langchain_community.document_loaders import PyPDFLoaderloader = 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 PyPDFDirectoryLoaderloader = PyPDFDirectoryLoader("pdf/")docs = loader.load()
相关文章:
LangChain——加载知识库文本文档 PDF文档
文档加载 这涵盖了如何加载目录中的所有文档。 在底层,默认情况下使用 UnstructedLoader。需要安装依赖 pip install unstructuredpython导入方式 from langchain_community.document_loaders import DirectoryLoader我们可以使用 glob 参数来控制加载特定类型文…...

深度学习2:从零开始掌握PyTorch:数据操作不再是难题
文章目录 一、导读二、张量的定义与基本操作三、广播机制四、索引与切片五、内存管理六、与其他Python对象的转换本文是经过严格查阅相关权威文献和资料,形成的专业的可靠的内容。全文数据都有据可依,可回溯。特别申明:数据和资料已获得授权。本文内容,不涉及任何偏颇观点,…...

MyBatis的if标签的基本使用
在MyBatis框架中,if标签用于在构建SQL语句时,根据参数条件判断的结果,动态地选择加入或不加where条件中。 一 常见使用 在使用MyBatis处理查询逻辑的时候,常用的是判断一些参数是否为空,列举常用的几种情况展示 1.1…...

【Azure Cache for Redis】Redis的导出页面无法配置Storage SAS时通过az cli来完成
问题描述 在Azure Redis的导出页面,突然不能配置Storage Account的SAS作为授权方式。 image.png 那么是否可以通过AZ CLI或者是Powershell来实现SAS的配置呢? 问题解答 可以的。使用 az redis export 可以实现 az redis export --container --prefix[--a…...

【微服务】Nacos
一、安装 1、官网地址:https://nacos.io/download/nacos-server/ 2、启动:找到bin目录下的startup.cmd双击启动,或者打开一个命令窗口输入: startup.cmd -m standalone双击启动后如下:可以访问控制台地址 访问后的…...
5、定义与调用函数
大家好,欢迎来到Python函数入门课程! 在编程中,函数就像一个可以重复使用的代码块,它接受输入(参数),执行特定的任务,并可能返回一个结果。想象一下,函数就像一个厨房里的搅拌机,你放入水果(参数),按下按钮(调用函数),它就会帮你制作出美味的果汁(返回值)。…...

Linux 网络编程之TCP套接字
前言 上一期我们对UDP套接字进行了介绍并实现了简单的UDP网络程序,本期我们来介绍TCP套接字,以及实现简单的TCP网络程序! 🎉目录 前言 1、TCP 套接字API详解 1.1 socket 1.2 bind 1.3 listen 1.4 accept 1.5 connect 2、…...

前海湾地铁的腾通数码大厦背后的临时免费停车点探寻
临时免费停车点:前海湾地铁的腾通数码大厦背后的桂湾大街,目前看不仅整条桂湾大街停了车,而且还有工地餐点。可能是这个区域还是半工地状态,故暂时还不会有罚单的情况出现。 中建三局腾讯数码大厦项目部A栋 广东省深圳市南山…...
OpenCV相机标定与3D重建(7)鱼眼镜头立体校正的函数stereoRectify()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::fisheye::stereoRectify 是 OpenCV 中用于鱼眼镜头立体校正的函数。该函数计算两个相机之间的校正变换,使得从两个相机拍摄的图像…...
前端如何获取unpkg的资源链接
在现代前端开发中,快速获取和使用npm包是一个常见需求。unpkg是一个全球性的CDN服务,它为npm上的每个包提供了快速访问。通过unpkg,你可以轻松地通过URL获取任何npm包的文件。本文将介绍如何获取unpkg的资源链接。 unpkg简介 unpkg是一个快…...
Flink 离线计算
文章目录 一、样例一:读 csv 文件生成 csv 文件二、样例二:读 starrocks 写 starrocks三、样例三:DataSet、Table Sql 处理后写入 StarRocks四、遇到的坑 <dependency><groupId>org.apache.flink</groupId><artifactId&…...

Git | 理解团队合作中Git分支的合并操作
合并操作 团队合作中Git分支的合并操作分支合并过程1.创建feature/A分支的过程2. 创建分支feature/A-COPY3.合并分支查看代码是否改变 团队合作中Git分支的合并操作 需求 假设团队项目中的主分支是main,团队成员A基于主分支main创建了feature/A,而我又在团队成员A创…...
C++多态的实现原理
【欢迎关注编码小哥,学习更多实用的编程方法和技巧】 1、类的继承 子类对象在创建时会首先调用父类的构造函数 父类构造函数执行结束后,执行子类的构造函数 当父类的构造函数有参数时,需要在子类的初始化列表中显式调用 Child(int i) : …...

[极客大挑战 2019]PHP--详细解析
信息搜集 想查看页面源代码,但是右键没有这个选项。 我们可以ctrlu或者在url前面加view-source:查看: 没什么有用信息。根据页面的hint,我们考虑扫一下目录看看能不能扫出一些文件. 扫到了备份文件www.zip,解压一下查看网站源代码…...

map用于leetcode
//第一种map方法 function groupAnagrams(strs) {let map new Map()for (let str of strs) {let key str ? : str.split().sort().join()if (!map.has(key)) {map.set(key, [])}map.get(key).push(str)} //此时map为Map(3) {aet > [ eat, tea, ate ],ant > [ tan,…...
CommonJS 和 ES Modules 的 区别
CommonJS 和 ES Modules 的 区别 1. CommonJS 和 ES Modules 区别?1.1 语法差异CommonJS:ES Modules: 1.2. 加载机制CommonJS:ES Modules: 1.3. 运行时行为CommonJS:ES Modules: 1.4. 兼容性和使用场景Com…...

科技为翼 助残向新 高德地图无障碍导航规划突破1.5亿次
今年12月03日是第33个国际残疾人日。在当下科技发展日新月异的时代,如何让残障人士共享科技红利、平等地参与社会生活,成为当前社会关注的热点。 中国有超过8500万残障人士,其中超过2400万为肢残人群,视力障碍残疾人数超过1700万…...

Flink四大基石之Time (时间语义) 的使用详解
目录 一、引言 二、Time 的分类及 EventTime 的重要性 Time 分类详述 EventTime 重要性凸显 三、Watermark 机制详解 核心原理 Watermark能解决什么问题,如何解决的? Watermark图解原理 举例 总结 多并行度的水印触发 Watermark代码演示 需求 代码演示ÿ…...
Spring WebFlux与Spring MVC
Spring WebFlux 是对 Spring Boot 项目中传统 Spring MVC 部分的一种替代选择,主要是为了解决现代 Web 应用在高并发和低延迟场景下的性能瓶颈。 1.WebFlux 是对 Spring MVC 的替代 架构替代: Spring MVC 使用的是基于 Servlet 规范的阻塞式模型…...

【深度学习基础】一篇入门模型评估指标(分类篇)
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀深度学习_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. 模…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...
怎么让Comfyui导出的图像不包含工作流信息,
为了数据安全,让Comfyui导出的图像不包含工作流信息,导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo(推荐) 在 save_images 方法中,删除或注释掉所有与 metadata …...

数据结构:递归的种类(Types of Recursion)
目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...
大数据治理的常见方式
大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法,以下是几种常见的治理方式: 1. 数据质量管理 核心方法: 数据校验:建立数据校验规则(格式、范围、一致性等)数据清洗&…...