文档加载
这涵盖了如何加载目录中的所有文档。 在底层,默认情况下使用 UnstructedLoader。需要安装依赖
python
pip install unstructured
python导入方式
python
from langchain_community.document_loaders import DirectoryLoader
我们可以使用 glob 参数来控制加载特定类型文件。请注意,此处它不会加载 .rst 文件或 .html 文件。
python
loader = DirectoryLoader('../', glob="**/*.md")
默认情况下不会显示进度条。要显示进度条,请安装 tqdm 库(例如 pip install tqdm ),并将 show_progress 参数设置为 True 。
python
loader = DirectoryLoader('../', glob="**/*.md", show_progress=True)
docs = loader.load()
加载单个文档
python
from langchain_community.document_loaders import TextLoader
# TextLoader 文本加载器 txt、md、html等文件都可进行加载
loader = TextLoader("./txt/faq-4359.txt",encoding="utf8")
doc = loader.load()
例如
python
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'})]
假设导入了多个文档进来,将导入的文档转化成为向量;
python
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)
python
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),
目录加载器
将目录下的全部文件加载进来
python
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二、优势:众测价。。。
如何检索出相似度最高的文件?
- 最大边际相关性检索(MMR): 想象你在一个图书馆里找关于"猫咪"的书籍。MMR就像是一个智能助手,帮你挑选书籍。它会先找到一本最相关的书,比如《猫咪百科全书》。然后,它会寻找第二本书,这本书不仅要与"猫咪"相关,还要与第一本书的内容有所不同,比如可能会找一本关于"猫咪训练"的书。MMR的目标是让你既能找到有用的信息,又能获得不同方面的知识。
- 余弦相似度 : 余弦相似度是一种测量两个向量在多维空间中角度的方法。继续用图书馆的例子,你可以把每本书想象成一个向量,它的每个维度代表这本书包含的不同关键词。余弦相似度会计算两本书的向量之间的角度,如果两本书的向量角度接近0度,那么它们在内容上非常相似;如果角度接近90度,那么它们的内容就不那么相似。
总结一下 :
MMR是一个帮你挑选书籍的策略,它力求找到既相关又多样的书籍组合。
余弦相似度是一个测量两本书内容相似度的工具,它通过比较书中的关键词向量来判断。
实现方法:
python
# 最大边际相关性检索(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 编号的元数据。
python
pip install pypdf
python
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
python
from langchain_community.document_loaders import PyPDFDirectoryLoader
loader = PyPDFDirectoryLoader("pdf/")
docs = loader.load()