• Langchain使用介绍之-文档加载


       Lanchain提供了加载多种文档的能力,Lanchain初了能加载txt,csv等格式文档外,还支持加载网页,音频,pdf等。本篇博客将介绍如何通过Langchain完成PDF文档,音频文档,网页文档的加载。

       加载PDF文档

      通过使用Langchain提供的PyPDFLoader,可以非常容易的加载一个已有的pdf文档,需要注意一点:使用PyPDFLoader需要安装pip3 install pypdf。

    1. from langchain.document_loaders import PyPDFLoader
    2. loader = PyPDFLoader(
    3. './chat-with-data/data/cs229_lectures/MachineLearning-Lecture01.pdf')
    4. result = loader.load()
    5. print(type(result))
    6. print(len(result))
    7. print(result[0])
    8. page = result[0]
    9. print(page.page_content)
    10. print(page.metadata)

      加载完成后,打印加载的信息,可以看到结果信息类型是一个List,List的长度是22,这个pdf的页数也是22。所以,存放PDF文档内容是按页来存储的。每一个List中的值,包含page_content和metadata信息。

    可以单独获取每一页的page_content和metadata信息,结果如下所示:

    当然,上面只是介绍了如何加载PDF文档,实际langchain还支持加载html,csv,txt,json,markdown等格式的文档。更多信息可参考官网

      

    加载Youtube的音频信息

      除了支持加载上面提到的,不同格式的本地文档外,Langchain也支持与很多第三方工具集成。如下图所示,langchain支持加载WhatsApp chat中的信息,加载Wikipedia的信息,也支持通过YouTube的url加载文档信息。除了截图显示的上方内容外,实际支持的第三方工具的集成还有很多,具体可查看官网

      下面来看看如何通过youtube的url加载音频文件。对于给定的 YouTube 视频链接 (URL),使用 LangChain 加载器将视频的音频下载到本地,然后使用 OpenAIWhisperPaser 解析器,将音频转化为文本。

    1. from langchain.document_loaders.blob_loaders.youtube_audio import YoutubeAudioLoader
    2. from langchain.document_loaders.generic import GenericLoader
    3. from langchain.document_loaders.parsers import OpenAIWhisperParser
    4. url = "https://www.youtube.com/watch?v=jGwO_UgTS7I"
    5. save_dir = "./chat-with-data/data/youtube"
    6. loader = GenericLoader(
    7. YoutubeAudioLoader([url], save_dir),
    8. OpenAIWhisperParser())
    9. result = loader.load()
    10. print(result)
    11. print(type(result))
    12. print(len(result))
    13. print(result[0])

      执行上面的代码,会看到从url中下载audio文件到本地存储目录,然后通过OpenAIWhisperParser() 将音频文件转换成文字。

      查看result的类型,会看到result的长度是1,类型是List,List中值的类型是, 文档变量类型包含两个属性,这个和前面加载PDF一样,有一个List,List中每个值类型也是langchain.schema.document.Document,每个Document对象包含page_content和meta_data两个字段。

    • page_content 包含该文档的内容。
    • meta_data 为文档相关的描述性数据。

    加载Web Page

      除了通过url加载youtube的audio文件外,也支持通过url加载web page中的内容,这里加载的是一个markdown格式的文档。

    1. from langchain.document_loaders import WebBaseLoader
    2. import json
    3. url = "https://github.com/basecamp/handbook/blob/master/README.md"
    4. header = {'User-Agent': 'python-requests/3.9.6',
    5. 'Accept-Encoding': 'gzip,deflate,br',
    6. 'Accept': '*/*',
    7. 'Connection': 'keep-alive'}
    8. loader = WebBaseLoader(web_path=url, header_template=header)
    9. result = loader.load()
    10. print(type(result))
    11. print(len(result))
    12. # print(result[0])
    13. # print(result[0].page_content)
    14. print(result[0].metadata)
    15. convert_to_json = json.loads(result[0].page_content)
    16. print(convert_to_json)
    17. print(convert_to_json['payload']['blob']['richText'])

      加载后生成的result类型也是List,List的长度是1,result[0]中的数据类型也是‘langchain.schema.document.Document',包含page_content和metadata信息,对于markdown格式的内容,可以看到page_content中除了真正的文档内容,还有很多其他信息。

    查看page_content的详细类型,会看到“richText"字段后面才是真正的文档内容信息

     所以,对于有些load过来的内容,可以通过json进行内容格式转换,获取真正的文档内容信息。

    print(convert_to_json['payload']['blob']['richText'])获取到的信息就是真正的markdown文本内容信息。

    以上,就是对Langchain提供的集中loader的介绍,更多敢于langchain提供的加载文档的能力,可查看官网具体的例子

  • 相关阅读:
    小程序代码管理
    【python自动化】03. pynput库自动操作键鼠(保姆级代码注释)
    如何在三星手机上截屏?每一款三星手机的每一种方法,包括S23
    ai语音智能电销机器人的运用有哪些,呼叫系统部署
    STL的常用遍历算法(20221128)
    数字图像处理课程实验 基于颜色布局描述符(CLD)图像特征提取算法使用Python实现简单的人脸检测功能并使用PyQt5构建简单的功能界面
    BM58 字符串的排列
    Unity设计模式——模板模式
    Linux网络通信(TCP套接字编写,多进程多线程版本)
    进阶课4——随机森林
  • 原文地址:https://blog.csdn.net/qiaotl/article/details/132709044