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. 模…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...
解析两阶段提交与三阶段提交的核心差异及MySQL实现方案
引言 在分布式系统的事务处理中,如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议(2PC)通过准备阶段与提交阶段的协调机制,以同步决策模式确保事务原子性。其改进版本三阶段提交协议(3PC…...
二维FDTD算法仿真
二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...
java高级——高阶函数、如何定义一个函数式接口类似stream流的filter
java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用(Math::max) 2 函数接口…...
