开源模子应用落地-LangChain实用小本领-使用各种Loader高效解析差异数据源 ...

打印 上一主题 下一主题

主题 568|帖子 568|积分 1704

一、前言

  在 LangChain框架中,提供了Loader机制,以同一的方式来从各种数据源获取数据,使得开辟职员可以方便地集成差异类型的数据源,而无需为每种数据源编写特定的加载代码。它可以将差异格式的数据转换为 LangChain 可以处理的同一格式,为后续的文本处理、知识提取和问答等任务提供底子。

二、术语

2.1.LangChain

    是一个全方位的、基于大语言模子这种预测本领的应用开辟工具。LangChain的预构建链功能,就像乐高积木一样,无论你是新手照旧经验丰富的开辟者,都可以选择适合自己的部门快速构建项目。对于盼望进行更深入工作的开辟者,LangChain 提供的模块化组件则允许你根据自己的需求定制和创建应用中的功能链条。
    LangChain本质上就是对各种大模子提供的API的套壳,是为了方便我们使用这些 API,搭建起来的一些框架、模块和接口。
   LangChain的重要特性:
        1.可以毗连多种数据源,比如网页链接、本地PDF文件、向量数据库等
        2.允许语言模子与其情况交互
        3.封装了Model I/O(输入/输出)、Retrieval(检索器)、Memory(记忆)、Agents(决议和调度)等焦点组件
        4.可以使用链的方式组装这些组件,以便最好地完成特定用例。
        5.围绕以上设计原则,LangChain办理了现在开辟人工智能应用的一些切实痛点。


三、前提条件 

3.1. 底子情况


  •  操作系统:不限
3.2. 安装虚拟情况

  1. conda create --name langchain python=3.10
  2. conda activate langchain
  3. pip install langchain langchain-community
  4. pip install unstructured[all-docs]==0.13.2
复制代码

四、技能实现

4.1.加载markdown文本

markdown文件内容:
  1. # 一级标题
  2. 这是一个段落。
  3. 这里可以包含一些**加粗**的文字,一些_*斜体*的文字。
  4. ## 二级标题
  5. 1. 第一项
  6. 2. 第二项
  7. 3. 第三项
  8. ### 三级标题
  9. * 第一项
  10. * 第二项
  11. * 第三项
复制代码
测试代码:
  1. # -*- coding: utf-8 -*-
  2. from langchain_community.document_loaders import TextLoader
  3. def markdown_loader():
  4.     loader = TextLoader("test.md",encoding="utf-8")
  5.     docs = loader.load()
  6.     # print(len(docs))
  7.     for i in range(0,len(docs)):
  8.         print(docs[i].page_content)
  9. if __name__ == '__main__':
  10.     markdown_loader()
复制代码
调用结果:


4.2.加载文件目录

测试代码:
  1. # -*- coding: utf-8 -*-
  2. from langchain_community.document_loaders import DirectoryLoader
  3. def directory_loader():
  4.     loader = DirectoryLoader(path="E:\\BaiduNetdiskDownload\", glob="*.md",show_progress=True)
  5.     docs = loader.load()
  6.     print(docs)
  7. if __name__ == '__main__':
  8.     directory_loader()
复制代码
调用结果:

ps:
1. 必要下载nltk模子
2. nltk.download('punkt_tab')

3. nltk.download('averaged_perceptron_tagger_eng')

4.3.加载html

html文件内容:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>Title</title>
  6. </head>
  7. <body>
  8. <h1>一级标题</h1>
  9. 这是一个段落。<br>
  10. 这里可以包含一些<b></b>加粗</b>的文字,一些<i>斜体</i>的文字。
  11. <h2>二级标题</h2>
  12. <ol>
  13. <li>第一项</li>
  14. <li>第二项</li>
  15. <li>第三项</li>
  16. </ol>
  17. <h3>三级标题</h3>
  18. <ul>
  19. <li>第一项</li>
  20. <li>第二项</li>
  21. <li>第三项</li>
  22. </ul>
  23. </body>
  24. </html>
复制代码
测试代码:
  1. # -*- coding: utf-8 -*-
  2. from langchain_community.document_loaders import UnstructuredHTMLLoader
  3. def html_loader():
  4.     loader = UnstructuredHTMLLoader('test.html')
  5.     docs = loader.load()
  6.     print(docs)
  7. if __name__ == '__main__':
  8.     html_loader()
复制代码
调用结果:

4.4.加载JSON

安装依赖:
  1. pip install jq
复制代码
json文件内容:
  1. [
  2.       {
  3.           "role": "system",
  4.           "content": "You are a helpful assistant."
  5.       },
  6.       {
  7.           "role": "user",
  8.           "content": "请推荐一些广州的特色景点?"
  9.       }
  10. ]
复制代码
测试代码:
  1. # -*- coding: utf-8 -*-
  2. from langchain_community.document_loaders import JSONLoader
  3. def json_loader():
  4.     loader = JSONLoader(
  5.         file_path="test.json", jq_schema=".",text_content=False
  6.     )
  7.     docs = loader.load()
  8.     print(docs)
  9. if __name__ == '__main__':
  10.     json_loader()
复制代码
调用结果:


4.5.加载PDF

安装依赖:
  1. pip install pypdf
复制代码
PDF文件内容:

测试代码:
  1. # -*- coding: utf-8 -*-
  2. from langchain_community.document_loaders import  PyPDFLoader
  3. def pdf_loader():
  4.     loader = PyPDFLoader(
  5.         file_path="E:\\BaiduNetdiskDownload\\ChatGLM分享.pdf"
  6.     )
  7.     docs = loader.load()
  8.     print(docs)
  9. if __name__ == '__main__':
  10.     pdf_loader()
复制代码
调用结果:

4.6.加载CSV

CSV文件内容:
  1. name    age
  2. 张三丰 100
  3. 李长生 180
复制代码
测试代码:
  1. # -*- coding: utf-8 -*-
  2. from langchain_community.document_loaders import CSVLoader
  3. def csv_loader():
  4.     loader = CSVLoader(file_path="test.csv",encoding="utf-8")
  5.     docs = loader.load()
  6.     print(docs)
  7. if __name__ == '__main__':
  8.     csv_loader()
复制代码
调用结果:

4.7.完整示例

  1. # -*- coding: utf-8 -*-
  2. from langchain_community.document_loaders import TextLoader, UnstructuredHTMLLoader, JSONLoader, PyPDFLoader, CSVLoader,DirectoryLoader
  3. def markdown_loader():
  4.     loader = TextLoader("test.md", encoding="utf-8")
  5.     docs = loader.load()
  6.    
  7.     for i in range(0, len(docs)):
  8.         print(docs[i].page_content)
  9. def directory_loader():
  10.     loader = DirectoryLoader(path="E:\\BaiduNetdiskDownload\", glob="*.md", show_progress=True)
  11.     docs = loader.load()
  12.     print(docs)
  13. def html_loader():
  14.     loader = UnstructuredHTMLLoader('test.html')
  15.     docs = loader.load()
  16.     print(docs)
  17. def json_loader():
  18.     loader = JSONLoader(
  19.         file_path="test.json", jq_schema=".",text_content=False
  20.     )
  21.     docs = loader.load()
  22.     print(docs)
  23. def pdf_loader():
  24.     loader = PyPDFLoader(
  25.         file_path="E:\\BaiduNetdiskDownload\\ChatGLM分享.pdf"
  26.     )
  27.     docs = loader.load()
  28.     print(docs)
  29. def csv_loader():
  30.     loader = CSVLoader(file_path="test.csv",encoding="utf-8")
  31.     docs = loader.load()
  32.     print(docs)
  33. if __name__ == '__main__':
  34.     csv_loader()
复制代码

五、附带阐明

5.1.问题一:ImportError: failed to find libmagic. Check your installation

办理:
  1. pip uninstall python-magic
  2. pip install python-magic-bin==0.4.14
复制代码
PS:
python-magic-bin库要与unstructured库兼容,示例中,unstructured使用0.13.2


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张裕

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表